The Official Sequential/DSI Forum

Looking at going back to school

Looking at going back to school
« on: June 05, 2020, 11:27:50 PM »
I've developed more and more interest in the area of software development and programming and I've been curious what areas of software development would best for leading down a path to develop software for synthesizers? I've been looking at online courses and trying to see how to best approach this. Does anyone have any suggestions or tips?
Prophet 6, Prophet X, Moog Sub 37, Tempest Drum Computer, Roland V Piano, Fender American Stratocaster, Roger Linn Adrenalinn iii, Origin Effects Cali76 and SlideRig compressor, ASUS Zenbook Pro Computer, Soundcraft MTK 22 Mixer, Mark Of The Unicorn Digital Performer 10 Software.

Re: Looking at going back to school
« Reply #1 on: June 10, 2020, 01:39:44 PM »
I guess the first question is how much experience you already have about software development?

The second question would be how much experience of signal processing you have in the digital domain?

Re: Looking at going back to school
« Reply #2 on: June 10, 2020, 08:29:13 PM »
I guess the first question is how much experience you already have about software development?

The second question would be how much experience of signal processing you have in the digital domain?

Very little if any
Prophet 6, Prophet X, Moog Sub 37, Tempest Drum Computer, Roland V Piano, Fender American Stratocaster, Roger Linn Adrenalinn iii, Origin Effects Cali76 and SlideRig compressor, ASUS Zenbook Pro Computer, Soundcraft MTK 22 Mixer, Mark Of The Unicorn Digital Performer 10 Software.

Re: Looking at going back to school
« Reply #3 on: June 11, 2020, 11:35:38 AM »
I highly recommend checking out Native Instruments Reaktor 6 for a primer.   It's a graphic programming environment, however it goes very deep into lower level logic when using primary and core programming -- You can design extremely elaborate instruments, and get a good feel for the logic puzzles that go into audio engineering and synth design.   

I had Reaktor for years (packaged with NI Komplete Standard or above) and never really explored its depths, but last year I took a deep dive.   I'm close to completing a 16-Voice Poly Synth with a sort of wish list of features that my ultimate analog poly would have.   (three morphable multi-core VA oscillators, wavetable osc option, deep voice modeling implementation,  highly graphical interface with lots of visual feedback, dual filter/amp stereo binarual architecture, a variety of filter types, super flexible mod matrix like the Moog One with mod transforms, advanced envelopes and lfos, giant effects sections with deep modulation, etc..)    I would say its inspired by PEK, Pro3, and Moog One... sort of a mashup of my favorite features from those synths.

This is a zoomed in example of one of my Reaktor Oscillator Core Macros to give an idea of what the graphical programming looks like:



This is a screenshot of the front end interface:




For next steps, most VSTs and DSP engineering is programmed in C++  ....   I'm actually considering getting further into DSP / Audio Engineering too.   (for my day job I'm a MS dot.net programmer / database engineer)   I've been considering going the JUCE route.    Would be interested in hearing if anyone else has used JUCE?   



Sequential Pro 3 and Rev 2 - Sound Sets and Patch Banks - Now Available on Sellfy: https://sellfy.com/sounddesign/

Re: Looking at going back to school
« Reply #4 on: June 11, 2020, 02:12:36 PM »
I highly recommend checking out Native Instruments Reaktor 6 for a primer.   It's a graphic programming environment, however it goes very deep into lower level logic when using primary and core programming -- You can design extremely elaborate instruments, and get a good feel for the logic puzzles that go into audio engineering and synth design.   

I had Reaktor for years (packaged with NI Komplete Standard or above) and never really explored its depths, but last year I took a deep dive.   I'm close to completing a 16-Voice Poly Synth with a sort of wish list of features that my ultimate analog poly would have.   (three morphable multi-core VA oscillators, wavetable osc option, deep voice modeling implementation,  highly graphical interface with lots of visual feedback, dual filter/amp stereo binarual architecture, a variety of filter types, super flexible mod matrix like the Moog One with mod transforms, advanced envelopes and lfos, giant effects sections with deep modulation, etc..)    I would say its inspired by PEK, Pro3, and Moog One... sort of a mashup of my favorite features from those synths.

This is a zoomed in example of one of my Reaktor Oscillator Core Macros to give an idea of what the graphical programming looks like:



This is a screenshot of the front end interface:




For next steps, most VSTs and DSP engineering is programmed in C++  ....   I'm actually considering getting further into DSP / Audio Engineering too.   (for my day job I'm a MS dot.net programmer / database engineer)   I've been considering going the JUCE route.    Would be interested in hearing if anyone else has used JUCE?

Awesome. I'll check this out for sure.
Prophet 6, Prophet X, Moog Sub 37, Tempest Drum Computer, Roland V Piano, Fender American Stratocaster, Roger Linn Adrenalinn iii, Origin Effects Cali76 and SlideRig compressor, ASUS Zenbook Pro Computer, Soundcraft MTK 22 Mixer, Mark Of The Unicorn Digital Performer 10 Software.

Re: Looking at going back to school
« Reply #5 on: June 16, 2020, 12:34:43 PM »
Hi. I don't have any real formal math or DSP training, but I am a software engineering and have learned enough to build a dx100-style VSTi in C++ using Juce (for example). I eventually started doing my DSP kind of stuff in PureData and more recently switched to Max. IMO, they are a great way to understand signal flow and DSP concepts before you get into the nitty gritty of actually programming a VST or something. There are definitely some tasks that are very tricky with them vs a normal textual programming language, but those things are not the bread and butter of what you'd be doing. It's worth noting that even if you are coding a VST in C++, these languages are still much quicker and easier for prototyping ideas and so they would still be useful.

I don't have any experience with Reaktor, but it looks like a sort of similar idea to me.

Anyway, I would be open to mentoring someone in this stuff, at least up to the point that I can. The easiest way to get started would be to install PureData (it's free) and start working through its documentation, which is fairly thorough.

Re: Looking at going back to school
« Reply #6 on: June 17, 2020, 01:02:55 AM »
Hi. I don't have any real formal math or DSP training, but I am a software engineering and have learned enough to build a dx100-style VSTi in C++ using Juce (for example). I eventually started doing my DSP kind of stuff in PureData and more recently switched to Max. IMO, they are a great way to understand signal flow and DSP concepts before you get into the nitty gritty of actually programming a VST or something. There are definitely some tasks that are very tricky with them vs a normal textual programming language, but those things are not the bread and butter of what you'd be doing. It's worth noting that even if you are coding a VST in C++, these languages are still much quicker and easier for prototyping ideas and so they would still be useful.

I don't have any experience with Reaktor, but it looks like a sort of similar idea to me.

Anyway, I would be open to mentoring someone in this stuff, at least up to the point that I can. The easiest way to get started would be to install PureData (it's free) and start working through its documentation, which is fairly thorough.

I'd absolutely would welcome any mentoring you can provide. I'll download PureData and check it out. Thanks so much.
Prophet 6, Prophet X, Moog Sub 37, Tempest Drum Computer, Roland V Piano, Fender American Stratocaster, Roger Linn Adrenalinn iii, Origin Effects Cali76 and SlideRig compressor, ASUS Zenbook Pro Computer, Soundcraft MTK 22 Mixer, Mark Of The Unicorn Digital Performer 10 Software.

Pym

Re: Looking at going back to school
« Reply #7 on: June 17, 2020, 08:25:54 AM »
Step 1: Find a project you are excited about that seems too simple
Step 2: Get frustrated when project is way more difficult than expected
Step 3: Repeat Step 1

Hi. I don't have any real formal math or DSP training, but I am a software engineering and have learned enough to build a dx100-style VSTi in C++ using Juce (for example). I eventually started doing my DSP kind of stuff in PureData and more recently switched to Max. IMO, they are a great way to understand signal flow and DSP concepts before you get into the nitty gritty of actually programming a VST or something. There are definitely some tasks that are very tricky with them vs a normal textual programming language, but those things are not the bread and butter of what you'd be doing. It's worth noting that even if you are coding a VST in C++, these languages are still much quicker and easier for prototyping ideas and so they would still be useful.

I don't have any experience with Reaktor, but it looks like a sort of similar idea to me.

Anyway, I would be open to mentoring someone in this stuff, at least up to the point that I can. The easiest way to get started would be to install PureData (it's free) and start working through its documentation, which is fairly thorough.

I'd absolutely would welcome any mentoring you can provide. I'll download PureData and check it out. Thanks so much.
Dave Smith Instruments

Re: Looking at going back to school
« Reply #8 on: June 19, 2020, 09:14:18 PM »
Step 1: Find a project you are excited about that seems too simple
Step 2: Get frustrated when project is way more difficult than expected
Step 3: Repeat Step 1

What about Step 4?   haha...  The bleak reality of getting into a new programming environment.   This was my experience when I got into Arduino for my Chromatic Music Spiral sculpture...  Many frustrating sessions just to get the basic framework setup and get components working.   About 50 hours later all was good though :)

I actually just downloaded JUCE today... now trying to get it set up with Visual Studio. 

Hey @Pym, what type of IDE do you guys use in house when programming firmware for hardware instruments?   Is it something like Visual Studio / Xcode / CLion, or something more proprietary and specific to the ICs you use?


https://www.youtube.com/watch?v=7WrQFnOpqRI
« Last Edit: June 19, 2020, 09:45:25 PM by creativespiral »

Sequential Pro 3 and Rev 2 - Sound Sets and Patch Banks - Now Available on Sellfy: https://sellfy.com/sounddesign/

Re: Looking at going back to school
« Reply #9 on: June 19, 2020, 09:44:16 PM »
Hi. I don't have any real formal math or DSP training, but I am a software engineering and have learned enough to build a dx100-style VSTi in C++ using Juce (for example). I eventually started doing my DSP kind of stuff in PureData and more recently switched to Max. IMO, they are a great way to understand signal flow and DSP concepts before you get into the nitty gritty of actually programming a VST or something. There are definitely some tasks that are very tricky with them vs a normal textual programming language, but those things are not the bread and butter of what you'd be doing. It's worth noting that even if you are coding a VST in C++, these languages are still much quicker and easier for prototyping ideas and so they would still be useful.

I don't have any experience with Reaktor, but it looks like a sort of similar idea to me.

Anyway, I would be open to mentoring someone in this stuff, at least up to the point that I can. The easiest way to get started would be to install PureData (it's free) and start working through its documentation, which is fairly thorough.

Hey @wbajzek - yeah, Puredata looks like a similar concept.  I've played around with Max a bit too.  I've found Reaktor to be a really great environment for prototyping ideas.  I initially started a Reaktor project to do a sort of proof of concept on an advanced voice modeling setup, but ended up expanded on it and building out a fully featured poly synth... have probably spent 150 hours on this current project - I'm like 95% of the way there, but the last 5% will probably take as long as the first 95%, if the laws of programming hold up.  ;)

I'm just feeling like the JUCE / Visual Studio route seems like the next logical step, as I use VS for work and occasional Arduino/Teensy programming.   I would be interested to hear more about your experiences with your DX100-style project!..  if you have any examples, or links that you recommend for VST / Audio app programming with JUCE.     

Cheers, Jason

Sequential Pro 3 and Rev 2 - Sound Sets and Patch Banks - Now Available on Sellfy: https://sellfy.com/sounddesign/

Re: Looking at going back to school
« Reply #10 on: June 20, 2020, 04:36:55 AM »
Yeah, I recommended PD because itís free.

I agree about JUCE being the next step. Itís not the only option but I think itís the best in class and free for non-commercial use.

My progression was that I tried to make a 32-partial additive synth in Max... It worked, but it was a mess. I now know that that was entirely my fault :) But I found JUCE and decided to remake it in that because I naively thought it would be faster and easier. In some ways it was but the reality is that 32 partials * 16 voices is going to slam almost any CPU, and I found myself too tempted to try to optimize it prematurely. Later I learned that a proper build without the debug flags enabled was the right way to do that :)

Anyway, around that time I miraculously found a DX100 in my familyís piano bench, that nobody seemed to know about. I brought it home with me and encountered the inevitable ďthis isnít great to program, I wish it had some knobs, maybe I could remake it JUCE.Ē So I basically did that. i got it to about 90% complete before I lost interest, but I learned a lot from it. Most of what I struggled with was that the conventions for managing the UI that are put forth by the JUCE tutorials (which are nonetheless a great way to get started) are difficult to manage when you have a complex enough UI. My plugin got left in a state where that really needed a rework so it wouldnít take me forever to make changes to it, and in the meantime I upgraded JUCE and found that some of it had broken compatibility and that I would have to fix that as well.

But really, it is abandoned for now because I found that I was programming all day for work and then in all of my free time, which was overloading me and not actually leaving me time to make music. I also wasnít interested in selling a commercial VST that was not my own idea, and so that led me to use Max4Live for my smaller personal projects, and then eventually to purchase Max itself for larger ones. I use it more as a compositional tool at this point and build small, purpose-made synths to facilitate those, rather than trying to make general purpose synthesizers in it. I did make a Prophet 6 ďcloneĒ in Max4Live that I use often, and occasionally I tinker with better ways of rewriting in order to improve my skills.

In summary, Iíd say that Iíve learned enough JUCE to know how to learn whatever I need to build whatever synth I want as long as I understand how that synth works. However, prototyping that synth would be much faster in Max, so thatís how I do it, and so far I havenít come up with something that I felt was worth the effort of rewriting in JUCE. If you want to do this stuff on your own you need to learn to be a good instrument designer as much as a programmer.

Re: Looking at going back to school
« Reply #11 on: June 25, 2020, 11:58:05 AM »
I guess the first question is how much experience you already have about software development?

The second question would be how much experience of signal processing you have in the digital domain?

Very little if any

Sorry I didn't get notified of your answer.

For plugin type stuff I would recommend Will Pirkle's books: https://www.willpirkle.com/about/books/ he is a really nice guy as well.

The problem is if you haven't got any software development skills this could be a bit of a steep curve!


Another approach could be "Pure Data", you can get nice setups like Bela: https://bela.io or the organelle: https://www.critterandguitari.com/organelle so you can run your creations on real hardware.

Or just run it on your computer to see how you get on, start here: http://msp.ucsd.edu/techniques/latest/book.pdf