Hey, Steve.
I'm about to study computer science at university in the upcoming year.
I'm also producing music and learned the basics of sound designing.
But how can I learn to program my own plugins?
Are there some helpful tools?
Which programming language is needed?
(Even though this topic has directly nothing to do with your products,
I would still be very happy to receive an answer from you or from others :) )
I'm somewhat curious to know as well. I've been in school for CSE for two years, and have recently thought about working on my own plugins.
Duda has said in several places that Serum was (probably along with his other plugins) coded in C++, but I'm curious to know what other libraries were used in the process. So far, the only library I've heard of is one called JUCE. It looks quite appealing, and I'm going to try doing some things in it this fall.
I have a lot of theoretical programming knowledge under my belt (assembly, implementing a threaded OS, multithreading, and such), but for the most part I'm not quite sure how I'd jump into designing a multiplatform plugin.
Did you use a toolkit to simplify multiplatform support? Did you use a graphics library, or do everything from scratch? (serum has one of the smoothest UI experiences I've gotten from a plugin!) Where did you learn relevant audio algorithms?
Wow, JUCE looks really promising. Thanks a lot for mentioning it.
It's surely worth a try from what I've seen so far.
I don't use JUCE (well, not exactly, I use it for a custom test host for debugging, I may implement more bits of it). I use VSTGUI and a few other libraries such as Boost and SQLite. JUCE is a fine way to go however. I wouldn't recommend taking my advice, I often do things the hard way, but either way, it's still years of dedication and work, and ultimately "what you use" doesn't matter much (just like the DAW or OS debates). JUCE is probably the right choice, as it's free if you keep things open source, should you make a commercial plug-in the price tag really isn't bad considering what you get.
As for other knowledge, it's just so many sources I wouldn't dare try to list them. There's no shortcuts as far as I'm concerned, eventually you want or need to understand things at the lowest levels, so in some ways it makes sense to start with nothing as well.
But with that said here's a good starting point, I would recommend learning about everything mentioned in the first post before moving forward
http://www.kvraudio.com/forum/viewtopic.php?f=33&t=329696
(I spent months in Reaktor literally, months in Max/MSP, CSound, etc and wouldn't have ever had a clue what do do in C if I didn't have that fluency first).
Hope this helps,
-Steve
Thank you so much! That's a lot of helpful information there, I really appreciate you sharing your 'secrets.' Other dev's I know would've just said "learn C++ and look for open source projects to break apart."
I checked out a few interview/tip sessions you were in, and you're really down to earth. Your session at Pyramind really spoke to me as someone split perfectly halfway between production/mixing and programming. I still don't know what path I'm going to take, but I feel more confident I'll be able to eventually decide.
Thanks for doing what you do,
-Armando