Wednesday, 7 February 2018

New reverb

I just built a much nicer-sounding reverb than the one in my M3000 mellotron to try to eliminate the nasty metallic resonances and make the pipe organ sound more ‘churchy’, and in turns out to not only sound lovely but is also computationally only about 1/2 as costly as my old one.

Sweet.

Demo to follow at some point ...

UPDATE - demo here, of the organ integrated into the synths bundle, with the new reverb integrated as well. Yay!


Monday, 5 February 2018

Organ latest - all stops test

The underlying model is approaching complete. I revoiced all 12 of these stops today and they now sound very authentic indeed.

Still to do - transients. Then the engine will be deemed complete, and I can lash up a UI, get it onto iOS, turn it into an AUV3, get it on sale, then start on the St Just in Roseland model.

If you want to see this version - Bath Preservation Trust / Bath Museum of Architecture - on the Pi, I can arrange that, but to make it happen you will have to buy it on iOS in enough numbers. Once enough money is raised for the Bath Preservation Trust, I will make it available on the Pi. I haven’t yet decided what ‘enough money’ is, but it will be a sensible amount.


Saturday, 3 February 2018

Missing fundamental!

The pipe organ uses a version of ‘Trendline synthesis’, in this case more accurate would be ‘trendline voicing’ as the actual synthesis is wavetable trajectory. I have slightly extended the 4-parameter trendline method described by Pykett to add one extra feature - an individual harmonic that can be boosted or cut. And I found a great use for this feature - implementing ‘missing fundamental’ in the pedals. The lowest C on the pedals at 16’ is about 32.7Hz, very much below what my little studio monitors can reproduce with their 5” ‘woofers’. So I can’t hear it. Worse, it is there, and is using up the dynamic range of the playback system. But by totally eliminating the fundamental - harmonic 1, cut down to zero - the pedal tones come through much clearer, with an implied but absent fundamental, and the whole system has more headroom as the sub-50 Hz stuff isn’t swinging the instantaneous DC value around. Nice to know the extended feature has a use. The intended use is for boosting outliers that would otherwise have been pulled down by the trendlines, but this is a great way to repurpose it. And cheaper than buying a subwoofer.

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. 

Monday, 27 November 2017

Novel British bird species ... Janelle Shane is to blame for this

So, my lovely wife and I have been watching on Twitter, jaws dropping open in fascination and sides splitting in hilarity, as Janelle Shane comes up with neural net recipes, neural net first lines of novels, neural net everything, showing how, when left to their own devices, computers will never QUITE cross the uncanny valley. 

And we have just moved house (hence the Raspberry Pi Central Heating System, a project I haven't talked about yet on here, but I will!) and we have just installed a lovely bird feeder in the garden. With suet, mealworms and everything. Having already seen some beauties in the garden - firecrests, blackcaps - we wondered - quite how rare a bird can a Cornish garden attract, if it sits in a location so mild and exotic that we have alien Stick Insects living in the bushes?! What about birds that don't even exist? 

So we built a neural net on a discarded old MacBook (late 2008, the last NVIDIA Apple design win if memory serves) with a broken display, a broken trackpad and a temperamental keyboard. It was nasty. Instructions for getting char-rnn on Yosemite fell over all over the place. I gave up, and put a VirtualBox on it, then Ubuntu 16.x LTS, and started again. This also fell over all over the place, so I ended up randomly sudo apt-get installing all sorts of stuff, piping stuff (what the hell is pip? I'm a C++ guy, why should I have to do any Python, I'm not 11?!), lua install stuff (LUA!!! WHAT!?!? Isn't that for scripting pimps and murderers in GTA?!) and then finally, one whole Sunday later, the installation started to work on the test dataset, and some Fakespeare came out. 

It had been a long day, but we laughed at the bad 16th centuryisms. 

Now for the birds. My goode ladye found a list of every bird that had ever been seen in the UK, and that formed the neural net's training set. The problem is, this is a small training set. And neither of us have any clue how to drive any of this stuff. The torch-rnn ran, stopped after just 100 iterations, with a quality of 3.something. Which seems to be bad, absolute gibberish came out. 

We figured it needed a) a bigger training set and b) more reinforcement on how bird names are actually formed. So - and this probably breaks all the 'good behavour' rules of training neural nets - we just duplicated, then reduplicated, the reduplicated the set. 8 identical lists of bird names. 

Bingo. 

So, may I present to you, in decreasing plausibility order, the birds we have spotted popping in to visit the new feeder in the garden from the uncanny valley beyond - 

Positive ID - we totally, definitely saw these
Sofpint Warbler
Wharbel
Grasgle Dandwitt
Black'st Gull
Rock Onlew
Malree Crow
Gree's Warlew
Lhig's Gold Ligbone
Great Tert
Lern


Fleeting glimpse - we *think* we spotted these 
Sand Sandarher'se Sardline
Lesk Wrey Cirn
lessern Hoetdpiwe
Red S
Lont Dudklar
Wapilemind Gool
Fosser-taroled Wanlocver
Rodushans-neted Pelre
Soanetark Wheavee
Yoflin Shitten Terl


Pretty sure we didn't see these, but we like to claim we did
VqmBourde
Aacmfopor's Hlayy-niadey Gonifbpon
Lwinttharcweut
Rof-iasbeldecuiy Ghoobe
icacmaterninn
BuWseak
Bmispiew-ree'w Parimatter
Aoortagd Waoge
NregitbileB
Aartbarded SsultesGit

Now it's clear that this was all just a long-winded excuse for us to build a neural net and feed it with bird names, because we wanted to see quite how it would mangle things, and some hilarious stuff came out. But what is starting to emerge is strange - it doesn't look like English, some of it looks Welsh or Cornish, but a lot of it looks like Old Norse. Is this thing actually being deep, and finding the buried language underneath all this that these bird names came from, dozens of centuries ago? Or am I just seeing patterns that aren't there? 

This was great, despite the utter hell of installation. And now it's installed, you will hear more from this! I may yet try getting this stuff onto one of my unused Pi Model A units, because that will take up a lot less desk space than the MacBook, I have so many it will be genuinely free, and if I do, installation instructions will be posted.