The Grand Toy Piano

More than just a toy; an instrument, experiment, and lesson in sampling optimization......

The story

Happy Piano Day!

It’s that time again.

This project I’m really quite happy with, as with every instrument I have my complaints but I’m feeling really positive about the work + optimizations I was able to put in this time around.

This is a First Act Toy Piano, it’s Grand-Piano shaped and decently large in real life. It’s got pretty nice sustain and a large soundboard that helps give it some good volume. The actual instrument has some tines that are quite detuned, I aimed to mostly fix that in this instrument.

The original game plan with this was to try and very thoroughly sample this instrument, but only where it was most necessary, then use technology to make those compromises much less obvious. Here is some of that direct philosophy of thinking

A few different mic positions to be blended between for optimal tone / imaging balance, giving the end user macros to control this to taste. I settled on a stereo pair of SDC (AKG P170), an omni dynamic mic underneath near the soundboard (EV 635a), and a contact mic in the middle (Cortado).

I decided for the playing range of the real instrument that instead of round robins, a decently large number of velocity layers to play between should be accurate since compared to the full playing range of a midi keyboard this was only a small fraction (C3-F5). For the very edge notes which were to be stretched all the way up and all the way down, I did this large velocity range as well as round-robins. This would hopefully make the notes outside of the normal playing zone feel a bit more lifelike and playable (C3 down, F5 up). I was hoping that I could increase the accuracy / depth of velocity then by using kontakt’s AET filters for more variation on possible keystrokes (while staying consistent). I had tried this on some pianobook libraries before, and I learned that while sonically this is decently effective, it can be quite buggy and CPU intensive depending on a large range of factors.

Therefore, I had decided what I would do is optimize the playing feel in kontakt first with this fancy tech, then use the stock logic autosampler to retrieve this feel and allow this instrument to be developed for multiple sampler formats and retain that playability, as well as make the kontakt version less hungry and buggy.

From here I began to deviate from my plan a bit: I would have needed to do an auto sampler position for each independent microphone position, making it a minimum of a 1.5 hour waiting time for each change just to see if it would play nicely in exs as my test alternate sampler (the default and only autosampler export format). I was willing to be fairly patient with this project however this turned out to be quite a lot of downtime between working for minimal change and a lot of accidents I made in the export process. In addition, I didn’t really have a great mechanism for merging the sample sets in EXS that I felt was particularly useful or pleasant to work with, and then I would have to repeat this more or less for every sampler format I planned on uploading / sharing to some degree.

In the end I still autosampled all the individual positions at least once, but simply placed them back into a new kontakt instrument to start with fresh optimized samples. These would be and still are the final samples that are currently being used in the instrument, after some noise reduction and repair. This was not the end though.

I was still not entirely pleased with the sound of the instrument, it felt thin and unrealistic, so I went back and did a few more recording sessions, notably:

– I had originally recorded key presses and key releases, I ended up not being too happy with them and didn’t want to implement all of the separate mic positions for just these, so instead I re-recorded with a more optimal player perspective that I felt was comfortable to each of the independent mic layers for the notes. This was my P170s combined with an AKG C414 in the middle so there was some width that had a strong center. I now could have just two knobs to adjust them: presses, and releases. I also aimed to perform these samples better, with more consistent playing and 2 round robins.

– Next was tackling the thin sound: first I did some playful filtering, relating to key position and velocity on the existing samples, but then also creating a sort of strange “sustain” layer that could be blended in under the existing note layers that offered more body to the samples. I did this by removing the tines and soundboard from the instrument, and striking them with a soft wooden mallet and capturing with the contact mic. I then layered this with a delicate and quiet phase plant synth patch that was something like a modulated sine or filtered saw (I don’t remember now, but it wasn’t all too important). I was now happy with this, especially given that the velocity layers in count are different on this layer from the regular notes, so there was more variation / combinations on each key up the dynamics axis.

– While the soundboard was removed I also captured some impulses responses. I originally did this with the whole instrument but wasn’t happy with how it sounded, so this time I mounted a studio monitor underneath the whole body and captured + processed for one body / cabinet impulse, then I did this with just the soundboard + mounted tines for another impulse. Having these as macros allows the end user to balance how much of the included IRs contribute to the more formant nature of the body / instrument vs. the sympathetic resonance that each tine might showcase from any other note being played.

I’ve included the impulses and samples separately of course, so anyone may try and adapt this to their favorite sampler of choice. It is a lot of work though, and so for the time being I’ve stuck to launching this with a Kontakt 5.8.1 (or newer) instrument patch option.

Before wrapping this up one last thing I haven’t quite thoroughly tested / am not 100% sure if I have optimally working, is whether or not the release sample + sustain pedal behavior is working as intended. I’ve adapted the Nils Liberg bug fix script in this and as far as I can tell at the time of writing I believe it works correctly, however this is what the intended behavior should be:
– Note released while sustain pedal up: release samples trigger
– Note released while sustain pedal down: release samples do not trigger
– Sustain pedal released while notes are being held: release samples do not trigger

The only release samples should be the ones for the key noises, as the real instrument simply decays with no dampening. If this is not the case please let me know, [especially if you have a solution :)]

For now I believe that’s everything, I really hope you all enjoy this one — it was an agonizing but rewarding few weeks making this.

Cheers!

EDIT / Updates:
I thought I should mention that at the quietest velocity layers you will only hear the sound of the mechanism (no notes) — this was because on the real instrument you can trigger the sound of the hammers with much less force than required to make a note, so I felt like it would be nice to include that as well for any performance wishing to be able to do that if needed. (Otherwise you can simply limit the working velocity range of the instrument, its still very dynamic!)

Interface

Reviews for The Grand Toy Piano

Leave a review to let others know what you thought of the instrument!

  • A very customizable toy piano sound

    This little toy piano is made by more than A THOUSAND samples, which results in a very dynamic and realistic sound, customizable by 4 different mic knobs, release triggers and more.

    The sound is very resonant in general and the samples sound crystal clear, While the samples are spread accross the entire range of the keyboard, I noticed that in very low velocities there is no pitch being registered, except the noise triggers. This makes it weird when perfoming on it, but it's definitely not a problem in programming.

    Other than that, it sounds really good and I recommend it for sure!

    Alex Raptakis04 April 2022