DEV Community

gus
gus

Posted on • Updated on

Bespoke Juce

Part 1
Part 2
Part 3


For my release 0.4 I'm going to be working on BespokeSynth which is a neat program my prof showed me earlier in the semester.

I started by going through a list I found of open source audio projects on Github, working my way through synths specifically because that's what I'm most interested in starting with. I decided to give JUCE another shot as well with the confidence gained from having troubleshot and figured out so many pieces of software throughout my open source journey, and found it much more forgiving this time. I checked out a couple projects with it, which ended up being very straightforward as JUCE has a dedicated build system. You just open a .jucer file and it lets you configure and generate projects for your given IDE. After checking out a few I decided to take another look at Bespoke.

Bespoke differs from some other JUCE projects in that it uses CMake to build. This wasn't much of an obstacle though, it's very easy to build with just a few lines, and despite some warnings I had an executable and a project file in a few minutes.

I played around with Bespoke for a while and was very intrigued. It looks intimidating at first but it's very intuitive. Effects and instruments have descriptions that appear when you hover over them, so I never had to stop to read any documentation or instructions. As I was messing with it I took a break to go through issues and look for something I could work on, and found a candidate pretty soon. This issue requests a feature to save and import .midi files from the drum sequencer, which I think could be doable. (For those unfamiliar, .midi is the format that note information is stored in to write and read music)I did some more "research" (which you can see in the video above) to check out how the sequencers work, and then started looking into how I could implement this.

My first step was to look at how JUCE handles this, and I found that there's a class called MidiFile which seems to do exactly what I need. Theoretically it should be as simple as figuring out how the drum sequencer works in the project, calling the MidiFile class from there to save or load MIDI, and figuring out how to add the necessary UI elements to let users access the feature.

Top comments (0)