Looking for advice for final bachelor's project (basic generator)

Hello everyone, I apologize in advance for some newbie questions – I promise to search around in similar threads – but I figured asking some point-blank questions would be the best way to solve some unknowns.

I’m a 4th year IT student and I’m looking to lock in my final project. For quite some time now I’ve been wanting to try to program a very basic generator synth, and I think I will go with this direction. I’ve been producing music in DAWs for over half of my life, released music, played live electronic music sets (with DAWs), etc., which is why I was always interested in trying to understand this technology better. I’m not an audio engineer or particularly knowledgeable about sound synthesis, but I think I understand the basics of VST instruments.

I’ve been looking into JUCE and I’m very intrigued since there also seem to be a lot of tutorials available. However, I’m still a bit daunted by the fact that this might be a difficult undertaking. I know the basics of programming and I’ve used C++ on a basic level before, but I’m not an expert programmer. I’m afraid that I might not make everything in time, and I’m also wondering about some other technical matters. I hope this isn’t too much to ask, but maybe some of you could give some input on the following questions?

  1. I want to make a very basic generator synth with a few different waveforms as voices, a filter, MIDI playing, ability to sequence it in a DAW, an amp envelope… Just the basic structure of some simple synth; as well as a basic GUI. I’m a novice programmer. How long could this project take me? (I basically have 6 months or so)
  2. In using JUCE, is it easier to make this a standalone application or a plugin for DAWs? Preferably I would like to have it as a plugin. Is it easy to have both variants available? How does the workflow differ in making a plugin vs. standalone app?
  3. Can I say that I would be making a “VST instrument”? I’m not sure what exactly makes a software synth VST or not, and I don’t know which technology exactly I would be working with. What would be the preferred “technology stack”, if that makes sense here, for a simple synth project?
  4. Would I be making an open source application in this case? Any licensing issues I should know about?

I might remember some more basic questions along the way, but these are the ones I wanted to figure out before I start the project. I hope this isn’t too dumb. Would appreciate any other newbie info, FAQs or templates to use. Thank you!

This should be fairly doable, and I think you will have fun with that project.

In JUCE you have the chance to turn a plugin into a standalone as well fairly easily.
That’s the main selling point IMHO, that you write one code base and get a plugin in many different formats, most notably VST and AU.

People often refer to a virtual instrument as VST, while VST actually names one of many plugin standards.

You are totally allowed to make this open source, and for a bachelor project that makes a lot of sense,
a) because the professors will have to see it anyway and
b) because then it is easy to ask for help when you get stuck.

If you want to monetise your project you have several options, some even at no cost (from JUCE’s side).
Have a look under “Get JUCE”.

Enjoy!

Thanks for your reply.

In JUCE you have the chance to turn a plugin into a standalone as well fairly easily.

So basically I would be making a plugin first and foremost, and having it standalone could be something optional I could work on down the line, yes?

People often refer to a virtual instrument as VST, while VST actually names one of many plugin standards.

Maybe you could elaborate a bit on that? I would be interested to know what plugin standards are and what I would be choosing from (consciously or not?)

If you want to monetise your project…

I will definitely not be monetising, I would like to release the synth for free for schoolkids/students to use, that would be one of my goals (I’m not from an English-speaking country and making a native language synth would be somewhat educational). So I understand that I would be then making an “open source” project. Do I have to do anything else in particular to qualify a project as “open source”? Should the files and code be available somewhere in particular?

Exactly. When you setup a juce project it automatically builds all variants that you selected in the Projucer. For a synth in particular the “Standalone” target is very handy, because it will give you an app that you can easily run to test your instrument.

Please google a bit around, there are many audio plugin standards,

  • VST3 from Steinberg, which is most common on Windows, but also available on Mac.
  • AU (Audio Units) is the most common on mac and is not available on other platforms.
  • AAX which is for ProTools only and you need to jump some hoops to target that, so it is probably not that interesting for you
  • LV2 is linux, again, maybe not so interesting for you as a beginner
    and some more niche ones

No, just offering your source files for free download (and maybe add a license file to put it under GPL) should suffice.
But there is a personal tier in JUCE that doesn’t even require GPL, but has some other limitations.

There might come some other cost, e.g. when you target Apple you need the apple developer programme for an annual fee to sign your product for publication. Otherwise it might not run on the users machines.