Friday, October 18, 2024

Dumberdash, MIDI Bass

Started work on the Dumberdash song/poem for Fall in Green. This is an odd one for us, closer to a electronic rap. The words are a novelty on old Cheshire dialect, and as such the imagery and feeling is uncertain. My job is to make the music as interesting and eclectic as the words.

I also programmed a new routine into Prometheus. Eckelmann uses a tempo which varies, bends, speeds up/down. This is fine, but it messes up a MIDI import. A song at, say, 120 B.P.M. will import fine, showing the exact notes where they should be, but if the sequence slows down gradually, then the notes should be shown spaced closer and closer together. This can get more complicated when the tempo bends radically, which most sequencers can't do, but Prometheus can modulate anything. I can (and do) attach a sine wave, for example, to the tempo to make the whole song shudder and jump. This complicates the timing calculations.

The import is an issue when playing and recording MIDI tune to a backing track which modulates it's timing. Of course, I can insert the resulting audio recording, the tempo of the MIDI file is irrelevant then. Or, if I really need to see where the notes are, I can stop messing around with the tempo; but an ideal would be to import the MIDI notes at current the sequencer speed, calculating the note placement by time in seconds and milliseconds of the final song, and back-calculating which measure/beat/tick that time is.

So, step one is a "skiptocalctimeindexmodulated" routine (the name of which is a bit of a mouthful; 'skipto' is there because the routine is part of a group of routines which require initialisation and exiting; 'calctimeindex' describes what it does; 'modulated' shows that modulators, bends and other dynamic changes are calculated). If I feed it a sample index (eg. 44100 for one second), it will return the exact sequencer tick of the source song at that time, calculating all speed modulations to do so.

It's a slow routine. My former PC used to take up to a second to calculate it, as it has to run through the entire song and process each modulator on each Song engine.

It works but I can't spend more time on this. Must continue with something that will produce results; but if (when) I can get the MIDI import working, it will be useful to have.