Joined: Oct 16, 2008
Audio files: 79
|Posted: Tue Aug 17, 2021 6:08 am Post subject:
Tranzistow Embedded Synthesizer Interface
|From build 16.08.2021/1 on, the download package contains two additional DLLs with embedded GUI-less Tranzistow version which can be loaded by a 3rd-party plugin and contains all functionality to control Tranzistow from other programs.
Some history first ... A few years ago, when I started working as a programmer for Gamepires (https://gamepires.com/) on their SCUM game (https://gamepires.com/games/scum/), I developed a small 64-bit game to test Unreal Engine 4. It was a simple 3D Breakout game where you could hit bricks by a ball on a horizontal surface with a paddle on the side towards the player and walls on other 3 sides. Each hit produced a different sound depending on the type of object and I immediately came to the idea to try to use Tranzistow for those sounds in realtime. So I developed an interface to control Tranzistow from outside. It was a regular 64-bit versions with added procedures/functions which remained functional to this day but I never documented them and no one (except me) ever used this functionality.
Now I decided to push this to the next level and developed a totally GUI-less Tranzistow, stripped of all user interface functionality and dependencies on any visual control library. Beside existing functions, I also added the new ones for setting/getting values of all Tranzistow parameters etc. All this has now been included in Tranzistow32E.dll and Tranzistow64E.dll which cannot be loaded into the host directly and host won't recognize them when scanning VST plugins. But Hrastow can load them and if you load an existing Hrastow/Tranzistow project it will play just fine, only without any user interface. The engine remains closed and the programmer doesn't have access to any internal structures and objects. The embedded synthesizer contains an internal virtual non-visual editor which has all functionality of the regular editor and takes care of all parameter changes, patch loading/saving, etc. The programmer only needs to send parameter changes and the embedded engine will take care of the rest. All parameters can be accessed by names or indexes but only names are exposed because indexes can change between versions and builds (they won't change during the session, of course). If you want to uses indexes to address the parameters you first to need the acquire the index for a particular parameter by using a dedicated function. Both patch and multi params are accessible in the same way.
The list with all Tranzistow parameters (including their types and minimum/maximum values) is here:
Extended ranges are in parenthesis. Multi params for all 8 parts are at the end of the list. Ignore params starting with * because those are just section placeholders for easier navigation.
The complete reference, description and my test program to demonstrate this functionality can be found in the "Developers Area" towards the end of Tranzistow PDF:
I think this is enough for anyone with the knowledge needed for plugin development to understand how it works. This is a preliminary specification. I may add additional functionality if/when needed.
Very important: Anyone is free to use this to develop a GUI plugin for Tranzistow, be it open source or closed source, providing that you don't sell it commercially. In case of open source you have to choose the license which allows loading of closed source software components/libaries. I am still asking for the donation if you use Tranzistow, doesn't matter if you use GUI or GUI-less versions. GUI plugin developer can ask for a donation as well. In case of commercial projects the usage of this interface is not free and I am asking for my share. Contact me to negotiate the deal before starting anything!