I need a de minimis example audio host program


#1

I need to build a special purpose audio host for my own use but I don't have the time (nor the inclination) to reverse engineer the example audio host program to determine how to build my own host.

I'm willing to pay a reasonable bounty for a sample audio host problem that demonstrates CLEARLY (with useful comments) how to perform the following:


a) Create a plugin (for both AU and VST style plugins) with arbitrary number of outputs (to support stereo, multi-timbral, etc)

b) Connect the outputs of one plugin to the inputs of another (chaining)

c) Connect an external audio input to the chain

d) Connect the final output to external audio output (with ability to select audio channel)

e) A command that will invoke the plugin editor

f) The ability to both load and save the state of a plugin

g) The ability to select a MIDI input port and channel and route MIDI data to any plugin

h) The host should support the ability to create multiple separate plugin chains

i) Anything else that I forgot that would be relevant to making a simple clean example.


So in pseudo code, I'm looking for something along the lines of the following:

main()
{

   p1 = CreatePlugin('plugin name', 'number of inputs', 'number of outputs', anything else needed
   p2 = CreatePlugin('another plugin name', 'number of inputs...etc..)

   p1.ConnectOutputsToP2(....)
      "or"
   p2.ReceiveAudioInputFromP1(.....)

 

   p1.ReceiveMIDIfrom(port, channel) // Could be port number or port name, I don't care, whatever works
   p2.ReceiveMIDIfrom(port, channel) // Very important --- MIDI input shouldn't be exclusive, I'd like to be able to send the same MIDI to multiple plugins

   p2.ConnectOutputsToExternalAudioDevice(channel numbers.....)


   p1.OpenEditor(.....)


   p1.SaveState("filename")
   p1.LoadState("filename")

 

  p1.ClosePlugin) // or DestroyPlugin, whatever

}

 

 

My sense is that someone who understands the JUCE architecture could probably put together an example like this pretty quickly. Note that I don't need actual classes to be built to abstract this stuff as long as the code sequence required to perform each of them is clearly marked so that I can build the abstractions myself.

The project needs to compile with latest version of xcode on a Mac. I do not need exclusive control of the code once it's built but I'm looking for someone to kickstart it so that I can focus on adding my own functionality without having to learn (at the very beginning) all the nuances.

Anyone interested?


#2

Sorry that I have to point that one out to you, but these things are actually pretty easy to do if you invest something like four hours and read the goddamn documentation. No one is going to do this for you, because they all have their own projects to attend to. Ask your questions if you don't understand something, or if you run into problems, but expecting others to do the work for you is not going to work out.


#3

To be fair, the OP is offering to pay for it!


#4

I read that :) Still, the resonance to his enquiry is overwhelming ;)


#5

The economics part is simple ---- suppose I'm earning $x doing my own thing and $x > cost to outsource, the conclusion is obvious. There's also the presumption that there's nothing else that has to get done so that that 4 hours would be the best use of my time. By the way, I know they're easy to do, that's another reason to outsource.

-----

if you invest something like four hours

 

 

What's your point?

---------------------

Still, the resonance to his enquiry is overwhelming ;)


#6

I certainly don’t mean to be rude :wink:
Anyway, please do have a look at the example AudioHost, and maybe the open source project named “Pedalboard 2”,
they’re a good start into the right direction and will teach you everything you need to know for free :slight_smile: