Two tunes for a busker organ

• Mar 5, 2024 - 07:32

I'm designing and building a busker organ. It's my own design and I have decided to include 32 pipes, ranging from F3 to D6. 32, because it will be controlled by electronics and a particular component I'm using has 16 ports, so I'm using two of them. I leave out F#3 and G#3 so I can extend the range up to D6.
I will be writing all the music with Musescore. I haven't decided yet how the music will be stored. Either as midi files or as some further developed data structure. But the actual music editing and arranging happens in Musescore. It's important to shorten note values or use staccato to get the articulation right. Therefore the sheet music might look a bit ugly, with a lot of dotted 16ths and a lot of 16th and 32nd rests.
And for testing purposes, I use the recorder as a sound in Musescore. I couldn't find street organ or busker organ among the sounds.
I also wrote two original compositions for my busker organ:


Kewl sound! I would have expected it to be a calliope, but there's no sound in MuS for that either. The recorder sounded surprisingly accurate. You might try a pipe organ and experiment with the sounds available in the Mixer.

MIDI is actually designed for this specific use case: controlling an instrument. Trying to create "some further developed data structure" would definitely be a case of re-inventing the wheel. Look into its details!

Good luck!!!

In reply to by TheHutch

One reason for further developed data structure is that midi sorts all note events in a way that all events of one stave occure, from the beginning to the last measure, before the next stave note events occure. And there is no actual time stamp on each note event, only a number of midi ticks since the previous event. To get it right, one has to consider the tempo.
It's much easier to record the midi stream at playback and just read each midi event and give it a timestamp, not minding at all which stave or voice it belongs to. All that data goes to one single data structure of noteon and noteoff events and their timestamps.

In reply to by jotti

No, you've got it backwards. Having to calculate a timestamp takes more time. Simply using the native time of the computer--that is, the number of "ticks"-- means it's MUCH more likely to stay in time, to not have delays. Set the tempo in MuS and let it calculate the number of ticks as it creates the MIDI data.

In reply to by TheHutch

I don't calculate the timestamp. I record it. I connect an Arduino to my computer, I play my score from Musescore, the Arduino reads the midi events and write them back to the computer together with a timestamp from the Arduino. I collect the data and create the data files with note on and note off events and their timestamps in milliseconds. The score can have several staves, four voices, but all boil down to one single sequence of note events. I can either save each score as a separate file on an SD card for the Arduino to read and playback on the organ. Or I can hardcode a few tunes into the program the Arduino runs.
I felt that having the Arduino to read midi files and parse them correctly to produce the playback became too difficult. One needs to read the whole midi file into memory and then sort it, for the very reason that one would have to calculate the timestamps, and then sort the events according to the timestamps. A few Arduino models have enough memory for that.

Do you still have an unanswered question? Please log in first to post your question.