Friday, March 04, 2022

Remembrance Service, Ways Of Recording

A great morning yesterday. I threw off the shackles of programming, tied to numbers and the world of machines, and got back to art. I wanted to work on a song, Remembrance Service.

I've used a few methods of making new music, two key methods. For years I've generally sequenced most of the song. Sometimes I've added live parts; guitar solos, piano solos, as overdubs onto the base sequence. Most recorded music will have a base track, a click track, a source reference like this. This is a very powerful, but controlled system, it can lack the spontaneity of a live performance. To some extent this balance is the balance trod by every compose since Mozart's day. Bach's music was very 'written', very sequenced. There were few expression markings. Later, the scoring simply became more complex, instructing the hapless performer how to play; effectively adding more 'commands' to the sequence.

In recorded music, a composer can throw this out of the window and simply play 'live'. Some of the most expressive music works this way, perhaps live music has that spark when a band jam together, improvising passionately off the script, bending the music to the ideal as it happens. This is the most expressive way to make music, but it can lack control and direction. Solos might go on for too long, or music that's just not part of the theme might appear, and complex parts like fugues or canons probably won't appear; those are too complex to be made up on the spot.

For some of my music, starting with the Cycles & Shadows album, I started by playing live in one take, recording this (generally solo piano) piece and then adding more over the top. This was wonderfully expressive, a world apart from the flat sounding sequences. But this is difficult to compose. The music tends to be very loose and so adding layers is a looser process. The starts and ends of sections, verses, choruses or other parts, can be anywhere and it takes a long time and a lot of effort to add more. The most efficient way is to play live again, but again, that can lack control.

I still tend to favour sequencing because is is much easier to add more layers and parts, more sounds, more flexibility, but for this new song, Remembrance Service, I thought I'd try something new. I can play piano well enough, so why not play a live part as the backing and hook the tune around that - but, I wanted some ease of editing.

Fortunately I've programmed a neat little tool into Prometheus which, beat by beat, sets a unique tempo to keep the sequencer at the right speed even when the source music is varying wildly. It allows, for example, to visually keep 4 patterns to a section, and make any verses/choruses/lines appear dead flat and neat, while the actual timing isn't like that at all.

I've used this feature just once before, in Nightfood for the expressive piano solos in there. The whole sequence suddenly slows down and moves at per-note speed. This makes it realy quick and easy to add the bass or any other instruments without worrying about where to put them... if I put something one beat before the end, that's where it will sound based on where that 'beat' is played in the piano track.

So, I added this yesterday for the first time on a longer, 2+ minute, section. It sounded great, but, the timing was out, and it kept marching more and more out. So off, in fact, that the feature became useless and I fell into a panic'd frenzy that only comes from finding a bug.

So, after a joyous day until 4pm, I collapsed into seeking this bug. It was not obvious. Today I set up a full testing regime and recorded 3 MIDI tunes from different sources (Sekaiju, the P105 and Prometheus) to check the timing. These all matched. Then I set uo a long song with varying tempo to try to match and set the tempo on a per-note basis. What the computer has to effectively do is play a record and move the speed up and down like an eager conductor, so that the click of each beat hits exactly on each note, no matter when the next note will appear.

I must have tried about 50 different tweaks and changes to the formula, which, for integer values, seemed to work correctly. In the end, the answer was easy, it was about the precision of the floats vs. integers. The timing really needs to be good because errors will accumulate. The odd thing is that I tried this right at the start of testing but it didn't seem to work then; ah well! It does now.

This whole thing has caused me great stress, coldness, shivers, hook-bent schizoid fears, in these times of too much stress. The world needs saving. The world needs art! - that greater power than politics.

War in Ukraine wages on and Russia is slowly reverting to it's Stalinist roots. Countries have been conquered by empires before. Countries have been attacked indiscriminately before. But no empire has absorbed a population by attacking it indiscriminately.