I've played around a lot with piano sounds recently, and wasn't
really all that into doing it "right", but, you know, just playing
around. So here are a few modules I stuck together into a demo bot
that you might find interesting or even useful.
The reverb has multiple all-pass chains but also allows varying
coloration with comb-filter-like delay segments as well as throwing
on John's EON (modified) to help lengthen it, not to mention
variable room size. It isn't perfect but it does alright for me.
The instrument voice stack tries to make some instrument body noise
and feed that back in to the delay oscillators that play a small
role in each "string", to get a bit of piano-like sound, but it
takes up considerable CPU as is. The stack tries to re-use existing
outputs if they are the same note, but I changed a 4-output stack to
be used only for bass notes so that it would reuse anything within a
minor third. At least, that's what I intended it to do (not sure if
it really works). The idea being that if the sequencer throws out a
sequence of closely-spaced notes, I really don't want them all to
sustain in the bass register. So counting the middle notes 8 stack,
the upper notes 8 stack with no damper, and the lower notes 4 stack,
that gives 20 voice polyphony. Each one of those voices can also
keep ringing it's previous note long enough after a switch to give a
bit of natural decay (from a delay oscillator).
Yes, I know, it does NOT sound like a piano. Too harsh. You can go
into the stack and adjust some controls (c1 through c3), make it
sound like a thumb-piano, or sound pretty dull and simple
ramp+sine-wavey. But the basic algorithm in each of those 20 blocks
would have to be changed to get it to sound more like a piano. I'll
leave that to an expert.
The sequencer can be kind of fun at times, going through a pattern
(basically) 4 times before changing it, and one out of every dozen
sounds really cool. :-)
Oh yeah, there's a multi-voice chorus I created recently, even
though it's use here is questionable. You might (or might not) like
it for use in other circuits somewhere.
I have older versions of all these modules that are much, much
simpler. But what's the fun of that? So here you go. You'll need
ample CPU to run it, I expect. Or bypass things you don't want in
order to reduce that requirement.
--
Keith W. Blackwell