Wednesday, 24 January 2018

Pipe organ update

The pipe organ code was modified the last two days to use a ‘trendline’ method for voicing. This reduces the amount of data required to define a pipe to a handful of numbers, and will allow the entire parametric model of the St Just in Roseland church - some 32 stops, 35 ranks - to be encoded in a couple of kilobytes. Here is an early rendering - things will improve a LOT from here, this is using a small subset of the capabilities of this technique.

Not bad, eh? Watch this space.

Sunday, 21 January 2018

Pipe organ - finally, a tune!

So, this virtual pipe organ I've been 'working on' for over a year - I actually did enough work on it recently that it plays tunes. Check this out.

There are two projects here. One to recreate the little chapel organ in the Bath Preservation Trust's museum, and this rendition of Toccata and Fugue in Dm is based on that organ. Still needs work, but all the stops are there, it does everything it needs to do. The other project is much bigger, the organ in St Just in Roseland church, which has 32 stops, some of them celestes and mixtures, so lots more ranks to simulate than the Bath organ. Work hasn't started on that, except to make sure the app will scale well to that number of stops. 

These will both be released as AUV3 / app for iPhone / iPad and maybe even Mac, in order to try to raise as much money as possible for both the Bath Preservation Trust and the St Just in Roseland church. 

And the Bath organ model is DEFINITELY simple enough to run on a Raspberry Pi Zero - it currently runs in the Pi Synth codebase on my Mac at -O0 and barely dents the CPU. So we shall see where that goes. 

Currently the workflow for capturing sounds is wretched. It goes - 

Sit in church, making field recording of entire organ, at octave intervals, for all stops. 

Go home.

Per stop 
  1) sit in Logic identifying 4 'characteristic waves' per stop
    => early attack, mid attack, early sustain, late sustain
  2) run a tool to turn these wave cycles into 4x 1024 location wavetables
  3) synthesize samples from the wavetables
  4) import samples into sample replay engine
  5) audition - if it sucks, goto 1)

1) takes hours, particularly if the branch in 5) is taken. So I'm aiming to replace this with an enhanced version of a 'trendline' system, and do a by-ear match of field recording notes to a trendline fit of harmonics. This should lead to a much faster set of 32 stops for the St. Just organ. An advantage of this is that the memory footprint of the app on disk is approaching zero - the trendlines require just 25 or so 7-bit 'MIDI bytes' to fully describe a note within a stop. So boot time will be insanely quick.

I'll keep this place updated with audio examples as they emerge. Thanks for your patience out there, I haven't exactly been a faithful correspondent.