VABase
VABase provides a (mostly abstract) C++ interface for the Virtual Acoustics framework called VA. It is implemented by a core called VACore that creates virtual acoustic environments for real-time applications. To use VA, you can include this C++ interface directly with the VACore libraries, or via a network protocol called VANet. With VANet you can connect with a VA server (for example VAServer or Redstart) and remotely control it. VANet is lightweight and fast and is usually the better choice.
There are also binding interfaces for scripting languages, like Matlab with VAMatlab, Python in VAPython, Lua in VALua and C# in VACS. For the ViSTA framework, the VistaMedia/Audio add-on has an implementation that both can run an internal VA core or control a remote VA server.
License
Copyright 2015-2022 Institute of Technical Acoustics (ITA), RWTH Aachen University
Licensed under the Apache License, Version 2.0 (the "License"); you may not use files of this project except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Quick build guide
Preface
It is recommended to clone and follow the build guide of the parent project VA, which includes this project as a submodule. You can find comprehensive help on virtualacoustics.org.
Building VABase
You can build VABase using a C++11 compiler. Use CMake to generate project files that help building it, for instance Makefiles or Visual Studio solutions. VABase has no dependencies.
If you want to include VA into your application, you either have to link against VANet or VACore (see above).
Extending the VA interface
If you want to extend the abstract VA interface, this move will effect VA deeply. Only consider an extension of the interface if you are sure that this new features are absolutely necessary and will improve the usage of VA significantly.
Interface extension workflow:
- Add the virtual methods to IVAInterface
- Add classes to VABase, if necessary
- Implement the methods in VANet by using similar methods as template. Make sure to use a new net message identifier. Add message serializer/deserializer if you introduce a new data class. Do not make mistakes here, the debugging of VANet problems are painful.
- Add the methods to VACore. Now you can already run VA as a server.
- Don't forget to add your new methods to the bindings. Here, at least provide the new features for VAPython and VAMatlab as they are heavily used. Again, use similar methods as templates and be careful, because debugging is cumbersome.