Really understanding juce

Is there any more juce tutorials other than the ones on the juce website I’m just starting out with juce and I am struggling in understanding how the classes ect in the modules really come together I know that a framework is put together with base classes and then you use the modules applicable to that class but I struggle understanding how the modules and syntax come together as an audio graph

i would like to recommend the tutorials by theaudioprogrammer on youtube and the free c++ course of matkat music. they helped me with this

To me it sounds a bit as if you need some basic C++ know how, right? Because when it comes to syntax, JUCE simply just uses C++ (in a very clean way in my opinion, so it’s a great framework to get started with) and if you can read C++ more or less fluently, then understanding how the things come together is a lot easier. However if C++ is new to you, getting a deep understanding of how JUCE works is difficult. I personally learned C++ along with JUCE but also did some non-JUCE projects, which helped me a lot to get a deeper understanding of what JUCE does.

So what’s your background?

I am new to programming I did a few csound projects and then I thought I’d give juce a go but I am new to programming on the whole to be fair little python html CSS and JavaScript but audio is what I’m really interested in

1 Like

Ok this sounds to me as if:

  • you have a basic programing background which is a great starting point
  • and a great motivation!

Fine, that’s how I started too, although my programing background was more plain C. What I had to find out: Doing the pure audio part is maybe 10%-20% of the work to do when creating an audio application or plugin, so becoming good at general programing is one of the main goals you should have in mind to be able to create audio software that is appealing to the user :wink: So it’s a really good goal trying to understand what JUCE does.

I would advise you to look up those basic C++ topics:

  • Classes and inheritance, especially with (pure) virtual functions
  • References and Pointers
  • Templates
  • Lambdas

If you had a read on those topics and understood both the purpose of this approaches and their syntax, a great part of the JUCE library will probably become a lot more understandable to you. Then there are further more general programing topics which JUCE has a solution for. General knowledge of those topics and problems is of course good to understand the solution and to understand how to use and how to not use the building block JUCE offers you :wink: I would advise you on at least getting a rough idea what these topics are:

  • The message/event loop (in JUCE controlled through the MessageManager) and how it makes things like a GUI work
  • Heap memory allocation (and how C++ uses this concept through new, malloc and hidden in container and string classes, etc.) and smart pointers like std::unique_ptr that help you using this feature in a safe way
  • Multithreading and why things like atomic variables or mutexes are needed when sharing data between threads
  • Audio specific: You should know why allocation and mutexes should be generally avoided on your audio thread.

I have no single source of information I used to learn all this stuff, however there are a lot of good suggestions on the forum if you search a bit. And of course you could and should still just play around with juce a bit, try to find a first project and you will notice that a lot of questions while doing so will be answered if you look up the topics above or just search this forum.

4 Likes