/Reconstruct Devlog 00/ The Many Challenges a Beginner Faces
And how quickly you become a beginner again
When choosing to develop a granular synthesizer, I knew it would not be easy.
Using the JUCE Framework for C++, I decided I would use CMake as the build tool.
After days of failing to compile the simplest of projects, I realized I should stray away from using a Linux subsystem and focus on compiling for my native operating system, Windows.
This finally work, and development began. It seems like it can take hours to even accomplish the simplest thing when you’ve left a language for a while. I reminded myself of how to do some of the most basic things, play sounds, edit buffers, and spent hours trying to perfect these.
I did not.
So moving into making grains of sounds I had many ideas, none of which worked, until I finally decided to make a new class for the engine, and a class for the grains.
Many issues along the way:
MIDI isn’t going the right place; Grains aren’t making waveforms; AudioBuffers don’t have the right amount of channels.
Wow. I am in over my head.
Deep breaths as I remember why I chose to do something I had so little experience in. Learning. This is my biggest project yet. I looked around and found that the CMake tools for VSCode came with a debugger, great, I get those installed.
Wow. VSCode with CMake added all of JUCE to IntelliSence, and the compiling works flawlessly. So much for my .bat files that were meant to do that for me. And now I can properly Debug! Some breakpoints here, some breakpoints there.
Oh.
I messed up the simplest calculation late at night and I was trying to play a negative amount of samples. That won’t work.
See in blue the messed up calculation, and I underlined a DBG() function just because I was happy to finally be able to use it so easily!
So after fixing the most rudimentary of mistakes, it worked. I had sound. I wrote some more code in the GranularEngine class and now I was playing full grains! (Well, one grain…)
After a lot more breakpoints, I had something. Not much, but it took weeks of researching and days of coding to get to this point.
These were rudimentary mistakes that any beginner would make, and I lacked the knowledge and tools to properly find my mistakes. I even make some of these mistakes in languages I am far more proficient in, but as you keep going things become easier to solve and you learn what to look for.
It’s almost frustrating how quickly it felt like I had lost all of my C++ knowledge. A couple months using another language and you’re right back at the start. Picking up a new language can be just as daunting, but getting over this first dreary sense of lack of motivation, there is no feeling like it. Being a beginner again can be an amazing thing.
With a newfound sense of motivation, feeling like I am past a major hurdle, I will continue this journey and hopefully make a beautiful final product.