About the author

I'm St├ęphane Damo, a 28 years old French developer. I work as a developer, and use my free time on several projects related to music and programming. I like experimenting, creating musical instruments and researching about new things.

If you're mad enough to hire me, have a look here : sdamo.io

The FM Composer project

Please consider making a donation if you'd like to support FM Composer development:

I started working on this project 4 years ago. Not on the actual FM Composer, but more on proofs of concept and protoypes. As a musician and developer, I really wanted to create a music software, and more precisely, a music software that allows to create the instrument sounds from scratch. Aren't samples boring ? I've always liked the sound creation capabilities offered by FM -a sound generation technique used in many 80/90's synths- so I started various projects and finally came up with FM Composer. See one of the first attempts :

Looks not right, but it works !

Instrument parameters have to be written manually in a text file since there is no editor.

This project taught me how to deal with audio buffers, channel allocation, undo/redo states, GUI... Then I was ready for the next attempt.

This is mostly an instrument editor, no way to compose any song with it. Its sound engine was inspired from the Yamaha YM2612 chip, the one used in the Genesis

I learned some optimization tricks. FM can be quite CPU-heavy if done the wrong way. I chose to stick with C for the best absolute performance and portability. The sound engine is about 1000 lines of code, 2000 if we take editing functions in account (See the code on Github). The user interface was made in C++.

Time to put the song editor and instrument editor together :

It was initially named LightFMtracker as it was meant to be a light, minimalistic tool. Then the name was changed for FM Composer.

The GUI was still sucking, I had to put much effort to make it better looking and more user friendly. All elements (buttons, sliders, lists) are completely written from scratch. I don't recommend anyone to do that, except for fun or learning purposes. Textareas are not easy to deal with.

During this time I met Masami Komuro, a composer and experienced synth programmer. He provided advices to improve MIDI handling and suggested missing features.

I believe the most time consuming task in this project was to improve the user workflow and working on small details that make the software attractive. Like often seen, last 10% were the hardest.