Saturday, September 03, 2022

Prometheus MIDI Events, Fan Box, Ron Mael Dream

Two incredibly busy and tiring days, but scant progress made directly on art.

First, overnight at 4am, I thought out a possible extension to Freud's Lecture, I really need some sort of solo or more to this interesting piece. I had the idea of using the main 4-note climbing melody twice, gently and high for a child voice and booming and low for an adult. Experimentation at the piano is needed.

Then, yesterday, I decided to implement the abstract MIDI events in Prometheus. I found a couple of other bugs on the way, there are always incidental benefits to this sort or work, it's a hobby-like tidying which can be really useful but can be time consuming, something like a day spent organising and tidying a room. It feels like procrastination to me, I don't like such drifting, but it can improve results.

Here's a glimpse of the software:

The vertical lines in the Sequencer are events, the black lines with red dots are notes (the red dots get higher with pitch, so it gives a quick visual reference to the melody). The black and yellow striped line in the top (song/global) track is and End (of song) event. The blue events are Set Parameter events. Any parameter of a currently-playing instrument or a track can be set in this way, allowing for complex settings that can be changed as a song plays. You could, for example, set the track pan hard right, then left later. The green line is 'Bend To' which bends a parameter value over time. In this case it's bending the tempo (set at the start of the song), slowing everything down. Any parameter can be bent, and a modulator can be attached or detached to/from any parameter too; so things are very flexible and there are many ways of doing the same thing, each more appropriate at different times.

Yesterday I added some MIDI Set Parameter events. See, there, M1 Sust (the Sustain Pedal) is the current event, with a value of 0.250 (25%, a rather awkward number when scaled to 127 as per the MIDI standard, I use floats).

Unlike in my software, MIDI is about individual events, not things that can change at every tick. These new events allow one of 12 custom MIDI Controller events so be set. Events of this sort cover things like the Sustain Pedal situation, the Modulation Wheel, Breath Controllers, Ribbon Controllers, and lots more. The MODX supports many (more than 12) including the 'Super Knob', 8 other real-time knobs which can be programmed, two switches... far more than a human can control (I would argue, far more than necessary, the synth is overloaded).

These events do nothing in my sequencer, but they will export to and import from a MIDI file, so I can create a sequence here and get the synth to play it externally. This is useful because here I have a set of controls for creating and manipulating these events, rows of them can be created and made to vary in complex ways, calculated rather than typed one number at a time. Most of these controls are best manipulated live when playing, with foot pedals, wheels etc. but as I've said, we only have two hands and anything beyond live really needs a way to create and manipulate these lists of numbers, so I've programmed this feature.

It was a lot more work than expected, partly because these events are used all over the place. In particular I noticed that I'd not taken care about limits to the some of the parameters. Some parameters can have units like seconds, milliseconds, as well as beat, tick, measure, and the latter change based on tempo; eg. if a delay has a 500ms maximum limit, then this is 1 beat max. at 120BPM, but 2 beats at 240BPM... this is hard to limit in a concrete way because the song tempo itself can be wobbling about even when the song isn't actually playing (the song and track engines are constantly running so that I can hear the instruments as I press the keys).

Anyway. All of this programming was tiring and felt frustratingly unproductive, I should be making the music, I know this. My computer work was interrupted by completing the box for the fan in the kitchen. I foolishly sanded off the box using the hammer-drill without ear-defenders, I just forgot and didn't notice - I must be more careful in future. Drilling the walls was easier, into breeze-blocks.

The box didn't fit the wall too well because the wall is bent, like most house walls... but a bit of adjustment to the box fixed things. Two of the six hinges were really stiff and squeaky - I've stolen those for sound effects! It should be noted that my IndieSFX sound for the 'guillotine trap' consists of the creak of my record player lid, sliding rock on my desk, and hitting my old metal fire. Creaks and squeaks can be useful.

Last night I dreamt of meeting and spending time with Ron Mael from Sparks, which was a really nice experience. I was interviewing him, spending a day or two with him, and asking about his way of working. I distinctly remember eating a meal involving rice which he made, though the rice was cold and in fragments on the floor of a large Perspex box and I had to scoop it up.

Today I completed the program changes and finished the box, sanding it and filling in any gaps, ready for painting.

I also started on Freud's Lecture. The initial melody was always a cello in my head, a thread of a melody pulled like wool. I recently wondered if a Theremin would be better... but I may stick with the cello. In the live show it was a piano. I've spent some time creating a solo cello lead on the MODX, and it sounds good enough. I'd prefer a real cello and I'm confident I could play one for this simple melody, even though I've never tried or held one in real life. Perhaps I'm overly optimistic in this regard.

This has been a suitable distraction from the woes of the world and Britain's anticipation of coming hardship. I will anticipate success and glory, though much may come after my death. I must do my best and make the best art I can. Every hour and grain of health and life remains precious.