Handmade Network»Forums»Work-in-Progress
John
46 posts
A Dear ImGui music tracker
Edited by John on Reason: Initial post
Hi everyone.

This is my first C++ project, which I've been working on for about a month now.

It's an attempt on making a very simple music tracker (or mod tracker if you will), or rather an experiment that'll help me get into the C/C++ world.
I'm not entirely new to programming, as I've used some VB6 in my youth and more recently GML. I finally overcame my fear of learning a more "proper" language, after my son encouraged me to watch together the Handmade Hero series.
I instantly became a fan, and although I stay into the comfort zone of using external libraries (like Dear ImGui and FMOD for this project), I'm slowly discovering memory manipulation, pointers, and all the lower level stuff.

As it stands, this tracker can create patterns/instruments, load samples, edit sample maps, and play-back the result. There's no saving/loading yet but I'm planning on doing a simple file format, as well as a wav export.

As soon as I have something a bit more usable I'll upload a working version here. For the time being here's a screenshot:
Simon Anciaux
1337 posts
A Dear ImGui music tracker
I don't know much about music making, but this look nice for your first C++ project. You should put a recording (recorded with another application) in the post so we could ear how it sounds.
John
46 posts
A Dear ImGui music tracker
Thank you very much Simon!
I'll definitely do a video capture, although my music creation skills are awful, despite having used trackers since the Amiga era :D

I also have to mention that playback is currently limited to playing "raw" notes, meaning that there's no implementation of effect commands, and volume/panning/mute/solo changes are only respected when a new note is triggered.
Oliver Marsh
193 posts / 1 project
Olster1.github.io
A Dear ImGui music tracker
Congratulations on your first project, looks very cool! Cool hearing you watch handmade hero with your son.
John
46 posts
A Dear ImGui music tracker
Thanks Oliver, yeah watching with my son is priceless!
John
46 posts
A Dear ImGui music tracker
As per Simon's advice here's a capture of the program demonstrating my lack of music skills :D
Simon Anciaux
1337 posts
A Dear ImGui music tracker
How much time did it take to make only the audio part (without the UI) ? I've been thinking about making something like that to easily add music/sounds in small games I make.
John
46 posts
A Dear ImGui music tracker
Hi Simon!
I'm using the FMOD Core API which makes it very easy to load, play and set properties of sounds. My understanding is that it's higher level (but not under-powered) compared to other known libraries (PortAudio, RtAudio, OpenAL, etc) which makes it a perfect candidate for game audio programming.
So I'd say making the basic parts of the audio took very little time. And most of that time was me as a newbie trying to understand and handle pointers, which is what FMOD mostly gives you to work with.
Simon Anciaux
1337 posts
A Dear ImGui music tracker
You mean you play audio samples for each notes ? You don't generate the sounds using a software oscillator ? For example generating a sine wave at 440hz to create a "La" (A) ?
John
46 posts
A Dear ImGui music tracker
Indeed, every note is a loaded sample played at a different frequency. You can, of course, generate and play a sine wave if you wish. Most trackers though are sample-based and are in fact a form of a step sequencer.
John
46 posts
A Dear ImGui music tracker
Here's a somewhat working version of it. Pause, repeat and many other stuff still not implemented, and of course tons of bugs. I've also made a crude file format which allows you to save/load songs. Note that no samples are saved within the binary, and it uses absolute file paths for the samples. That means that if you move/delete/rename a sample on the HDD the program is going to shamefully crash!

uTracker v0.1
Simon Anciaux
1337 posts
A Dear ImGui music tracker
It's working for me on Windows 7. It took some time to figure out that I needed to configure an instrument with a sample (I never used a tracker so maybe it's expected). Maybe you should provide a basic sample (exporting a simple sine wave, or generating one on the fly) and have a default instrument configured, so that the tracker works out of the box ?
John
46 posts
A Dear ImGui music tracker
Simon, thank you very much for giving it a try! I haven't tested it on any other pc, other than mine, so it's nice to hear it works on Windows 7 too.
You're right, it's not obvious that an instrument needs at the minimum one sample. Although this is well known to someone who has used a tracker before, I should be making a short usage guide and provide some basic samples as you suggested.
James Sral
15 posts
Web Dev (JS/Ruby) interested in low-level development. Husband. Father. Drinker of coffees and teas.
A Dear ImGui music tracker
This is very, very cool! I've never used a tracker myself, but I find them fascinating. I'd love to give it a go once you release it!
22 posts
A Dear ImGui music tracker
This is awesome. Reminds me of my stint of Unreal-Tournament-editing back in the day (it used mods for music).

Don't undersell your music skills too much, I was grooving a fair bit.

Also it's wonderful that you and your son watch HMH together! God willing I will be a dad any day now, and it's encouraging to think about that.