Convert Patch to C++

So this is a little random. Wasn’t entirely sure which thread to put this in either. But i recently acquired a pedalpcb terrarium. A guitar pedal you can program in C++. Anyways! I’d read somewhere that the backend code of Audulus was in C++ and got it me wondering. Would it be possible to extract the base code of a patch I make in audulus to C++??
The idea of making guitar effects quickly and easily on my ipad just sounds so nice and convenient, I had to ask.

1 Like

That’s a neat idea, but while the audio engine and some of the UI are written in C, the patch itself contains no executable code, just a list of connections and parameters. There has been talk from time to time about porting the engine to other platforms but there are some pretty steep hurdles. Perhaps a better approach using Audulus is an iPad with a suitable audio interface and a MIDI controller for performance use. I’ve written several guitar effects using Audulus as the engine. I used a Positive Grid MIDI footswitch to control the patch but there are much better ones on the market these days.

2 Likes

Oh I use audulus as an effects processor pretty regularly. But i also get nervous as hell bringing my ipad to a bar for a gig. :sweat_smile:

2 Likes

I can certainly appreciate that. It would be great if the engine could run stand-alone on a pedal or eurorack module but the C code that powers the audio relies on Apple’s Core Audio API. It might be possible to port the code but first you would have to have a device with enough CPU horsepower and some reasonable user interface. No matter how you look at it, it would probably be a niche market and probably wouldn’t justify the development time since an iPad can serve the same function. A good bulletproof case can go a long way toward making it practical.

Pure Data can be built to run on a raspberry pi which lends itself to a including in a standalone device. I’ve considered building a eurorack module with a Pi running PD as a possible approach to a programmable audio module. You could likely do the same thing in a pedal.

@Taylor is a development team of one and has pretty limited resources. He has other projects and had already had to reduce the Audulus platforms by excluding Windows and the iPhone from future releases. At this point Audulus is more of a labor of love than a money making proposition so I doubt he will expand the supported platforms any time soon.

BTW, he just doubled the number of beta slots for Audulus 4 so if you haven’t already, sign up at: Audulus 4 public beta! - #51 by taylor

2 Likes

That all definitely makes sense.
Love PD! Thats how I was initially introduced to audulus. I was making patches for my organelle, and started looking into pd for my ipad. Turned out to be a bit more of a headache than I thought it would. But I stumbled across the audulus app while reading about similar things.
I’ve been trying out the Beta for a little bit now in my free time. Admittedly haven’t been able to mess with it as much as I’d like. Unfortunately it seems the older I get the less time I have. :sob::sob:

2 Likes

Hey @pedalsandchill! I had wondered the same thing as you, and I stumbled across this project called Faust for the translation of audio from one language to another. You can check out the project here for more info and to see if it will fit your use case:

https://Faust.grame.fr

I hope this helps! :slightly_smiling_face:

1 Like

Nice!
So is this like a form of pd that’s easily compiled into C++??

1 Like

@pedalsandchill Yes, basically like that. You write it according to their language specs, which will then compile and (the people that wrote this are so awesome for making this a reality) translate it to your desired compiled output that you can select from their options, as mentioned in the descriptive explanation of the how and why of the project here:

The core component of Faust is its compiler. It 
allows to "translate" any Faust digital signal 
processing (DSP) specification to a wide range of 
non-domain specific languages such as C++, C, 
JAVA, JavaScript, LLVM bit code, WebAssembly, 
etc.

If you read through the project page, it actually has a pretty good set of instructions, which will tell you where to go and how to proceed with what it is you are trying to do. They have a great web based IDE for Faust development (I built the one from source that they offer as an option, cuz I am a glutton for punishment, and shockingly, it became a massive troubleshooting problem I still haven’t solved, as soon as Cron launched my Bash scripted utility for upgrading Homebrew packages 3-4 days later that week :rofl:).

You will likely have to study up on computer programming a bit to understand what it is happening, if not familiar already, but chances are pretty good that if you are familiar with Audulus and Pd, you will be able to pick this up pretty quick and be building your desired pedal effects in no time (just obviously lacking the graphical element).

If ever I get lost, I find mapping out my intended control flow as I write code to be helpful when I am learning something new. My best advice is just to dive in and just get started; the GitHub page that I linked in my previous post has buckets and buckets full of valuable information, and you should not have trouble finding what you are looking for.

Personally, I started with the Faust Documentation section found in the ‘hamburger menu’ in the upper right corner of the page. Then when the examples you can play with in that section make sense to you, check out the Tutorials section for more in depth teaching. If you get stuck, I am BY NO MEANS anything above a simple intermediate that wishes to become better, but I can try to help you locate answers, if you can’t solve an issue and want someone to bounce ideas off of. Just hit me up via PM.

Lastly, also thought it was worth mentioning that the entire Korg Minilogue XD, Prologue, and NTS-1 digital engine oscillators and effects are all based on C/C++ code, so checking out that GitHub project could also prove to be valuable to you, although it is admittedly not as easy to understand IMO (since I am not fluent in CPP yet :laughing:). This is the Korg ‘logue SDK Instruction Page with a lot of useful info they did not used to provide, and this is the actual ‘logue SDK repo, which used to be all you got, and thoroughly confused the heck out of me lol. This stuff will be of more use to you as you start to learn how C++ works.

As mentioned above, I am definitely not an expert with DSP, but I’m learning also, and I can try to help if you get stuck. So feel free to reach out! I hope this helps :smiley:

2 Likes

Hey @pedalsandchill I hope all is going well in your search for info for your pedal. I am considering buying into the Daisy DSP project ecosystem, and while I was browsing the source code and libraries that support it, I stumbled upon this whole entire repo filled with C++ example files. That reminded me of our conversation here in this forum post, and so, despite the fact that I think if you are looking for examples, you have likely already found this yourself, I thought it was worth sharing, in the event that you haven’t seen it yet. Check out the Daisy Example repo here! I hope you will find this also to be helpful :blush: