3.38 KB
Newer Older
1 2
## VABase

VABase provides a (mostly abstract) C++ interface for the Virtual Acoustics framework called [VA]( 
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
4 5 6 7 8
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.
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
9 10

11 12
### License

Copyright 2015-2017 Institute of Technical Acoustics (ITA), RWTH Aachen University
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
14 15 16 17 18 19 20 21 22 23 24 25

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


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
26 27 28 29

### Quick build guide

30 31 32 33 34 35 36 37 38
#### 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 [](

#### 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).
39 40 41 42 43 44 45 46 47 48 49

#### 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:
1. Add the virtual methods to IVAInterface
2. Add classes to VABase, if necessary
3. 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.
4. Add the methods to VACore. Now you can already run VA as a server.
5. 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.