Monday, June 27, 2022

Sample Banking

Yesterday I decided to sample more of the MODX waves, but this revealed a slight issue with my sample library. All of the music waves, 3208 samples, include a midi unity note in the SMPL chunk of the file, which indicates the note of the sample. Prometheus has 5 octaves, from C0 to C5, and Prometheus' C2 is my middle C. If I need a lower or higher sound it's easy to create a new instrument that sounds lower or higher. Protracker, if I recall, had only 3 octaves. Having more or fewer octaves isn't a limitation of playing on a sample-tracker like this.

But the ISO standard treats C4 as middle C. To be correct, I could have (and still could) set my C2 to be C4, so starting at C2 rather than C0, but that's a bit confusing because Prometheus is a sequencer, its C2 isn't always middle C, the note name is just a label. This creates a few inconsistencies when faced with my sample bank. I only use it for Prometheus, and 95% of the sounds stretch over 5 octaves at most, so it's easy to pitch the octave at whatever is convenient rather than 'exact'. For instruments with a big range, like pianos, I can use a second instrument for the lowest or highest part. But all of this means that the midi unity note in the file is really the Prometheus unity note, and limited to a 5-octave range.

It made me think that a better option would be a bank that has the correct global unity note set. This isn't hard to do, and almost all of the sounds are like that anyway, but their note is at the wrong octave. It's easy to adjust this automatically on loading, it's already an option in Prometheus, so I've decided to rename and re-calculate all of the unity notes in my sample bank, setting them to the midi standard of C4 and note 60 equalling middle C. It makes the filenames easier too, because because some notes could be below zero, which was a bit of a pain.

This has some downsides. Firstly, C4-named string sound, for example, would play at C2, so the name is misleading - hopefully this won't matter, the name isn't important or referenced really. Secondly I have from the huge job of hand-naming and converting 3208 files. Fortunately, over 2000 are sound effects or percussion sounds that don't need or use this information, but this still leaves me 1000 or so files to convert. A third problem is that my notes which were out of bounds (very few, such as the lowest piano notes) were falsely set to a Prometheus number, falsely tuned up... so I have to re-set those...

...but unfortunately I can't save out the explicit midi note number. Saving a sample only saves out the Prometheus unity note, which is limited to 5 octaves. Sigh. So I've cheated a little and re-programmed SFXEngine to save an explicit midi unity note to an SMPL chunk, and I'll make Prometheus auto-correct any out-of-range notes. This will only be needed for a few sounds.

This will enable me to sample sounds that span a keyboard much more easily, so it can be seen as part of absorbing the MODX into my music system.

In other news, I attended the virtual Sacred Realms Exhibition opening last night, my first real Zoom event - my only previous Zoom was the test event. It looks great. Deb is recovering from Covid steadily and my energy levels haven't returned to normal after last weeks busyness and drama. I'm full of ideas and plans... time is short. I must fix these thousands of files as soon as possible.