What`s required to create VST host and sequencer?
-
- KVRian
- Topic Starter
- 505 posts since 25 Mar, 2008
I`d be interested in tips and hints for building a simple VST host and sequencer.
What I`d like to achieve in a first step is creating a simple VST3-compatible host that can receive midi from a keyboard and output the audio to the OS.
Next is a simple midi-sequencer to add.
What do I need to look into and learn to get this done? That`s the most important question.
I wonder if studying the code of open source DAW projects would make sense. I don`t want to see poorly coded applications though.
What I am also interested in is what I have to consider to make the whole thing low latency.
I have experience in with C and C++. I still have to learn a lot but I am not afraid of real programming languages. No Java, no Max.
I am on Mac OS. I don`t want to use OS-specific APIs though. There should be a cross platform perspective.
I am generally willing to use APIs. But I would prefer only to do this where necessary. I do not feel the need to re-invent the wheel just so to feed the illusion of being a genius, but I don´t want to take too many shortcuts.
Eventually, I have to get away from most APIs. In the early steps however, I am willing to utilize some to make progress. It`s a two edged sword. As many APIs as necessary, as few as possible.
What I`d like to achieve in a first step is creating a simple VST3-compatible host that can receive midi from a keyboard and output the audio to the OS.
Next is a simple midi-sequencer to add.
What do I need to look into and learn to get this done? That`s the most important question.
I wonder if studying the code of open source DAW projects would make sense. I don`t want to see poorly coded applications though.
What I am also interested in is what I have to consider to make the whole thing low latency.
I have experience in with C and C++. I still have to learn a lot but I am not afraid of real programming languages. No Java, no Max.
I am on Mac OS. I don`t want to use OS-specific APIs though. There should be a cross platform perspective.
I am generally willing to use APIs. But I would prefer only to do this where necessary. I do not feel the need to re-invent the wheel just so to feed the illusion of being a genius, but I don´t want to take too many shortcuts.
Eventually, I have to get away from most APIs. In the early steps however, I am willing to utilize some to make progress. It`s a two edged sword. As many APIs as necessary, as few as possible.
Last edited by blue monk on Mon Jul 27, 2015 3:38 am, edited 2 times in total.
-
- KVRian
- 1000 posts since 1 Dec, 2004
The Juce library has some support for hosting VSTs, maybe you should look into that.
-
- KVRian
- Topic Starter
- 505 posts since 25 Mar, 2008
I am aware of Juce.
What I am most interested in at this point is to find out what exactly I need to know to get the first steps done and any information that helps me getting an overview of all the parts I have to complete to have a basic DAW running, so I have a road map.
What I am most interested in at this point is to find out what exactly I need to know to get the first steps done and any information that helps me getting an overview of all the parts I have to complete to have a basic DAW running, so I have a road map.
- KVRAF
- 7890 posts since 12 Feb, 2006 from Helsinki, Finland
You need to figure out how to read MIDI input, how to output audio, how to load a plugin, how to send the MIDI to the plugin and the audio from the plugin to the device and how to glue it all together. Then for a MIDI sequencer you need to find a way to record, playback and/or manipulate a time-stamped list of MIDI events.blue monk wrote: What I am most interested in at this point is to find out what exactly I need to know to get the first steps done and any information that helps me getting an overview of all the parts I have to complete to have a basic DAW running, so I have a road map.
But since you probably already knew all this, you already have a road map and you just need to start working on it, one piece at a time, finding the specific solutions that work for your requirements. Then as you discover new requirements, you can add them to your road map and keep working.
If you have no prior experience with any of this, I suggest you start by writing some test applications first. Write a piece of code that reads and parses MIDI and prints it to the screen. Write a program that plays back some audio file and/or sine-waves generated on the fly. Then write a program that combines the two and allows you to play sine-waves from a MIDI keyboard. Then figure out how to replace your sine-wave generator with a plugin instead. Once you reach that point, you will have a much better idea of what it takes to realise your original vision.
Depending on your prior programming experience, each one of the above might take you hours, days or weeks, but the key is to just start working and not worry too much about the big picture until you have a better idea of what you need to put it all together.
-
- KVRian
- Topic Starter
- 505 posts since 25 Mar, 2008
Sounds plausible. I guess further discussion before having taken action would be just a distraction then.mystran wrote: ...
you already have a road map and you just need to start working on it, one piece at a time
...
Depending on your prior programming experience, each one of the above might take you hours, days or weeks, but the key is to just start working and not worry too much about the big picture until you have a better idea of what you need to put it all together.
I´ll take a mind map program to make a rough plan and then see how far I can go with the steam I got
Thanks mystran .
-
- KVRist
- 32 posts since 12 Sep, 2014
It might be worth looking at the code used in the Plugin Host Demo included with JUCE, especially if you're going to use JUCE. It doesn't have a sequence or anything, but the way it handles plugins and routing might interest you.
-
- KVRist
- 32 posts since 12 Sep, 2014
It might be worth looking at the code used in the Plugin Host Demo included with JUCE, especially if you're going to use JUCE. It doesn't have a sequence or anything, but the way it handles plugins and routing might interest you.