In case it's of interest, I implemented a piano model some years ago for a
course. The code is here:

https://github.com/radarsat1/stk-piano

It's a bit old so ymmv. It would be cool to port it to Faust ;)

cheers,
Steve


On Mon, May 27, 2019, 9:55 AM Scott R. Looney <scottrloo...@gmail.com>
wrote:

> thanks Julius! i'll see what i can find out on this front when i have some
> time. i'm not interested in a toy piano per se but a moderately accurate
> standard piano string model. actually in my web research i was surprised
> not to see very much out there in terms of useable code demos. there's
> loads of useful information on CCRMA in your amazing and excellent free
> book, but i'm a total math dunce - as in 'dragged myself kicking and
> screaming through algebra' math dunce.
>
> so i'm looking for an existing object (Csound opcode, PD object (not Max
> object), C++ i could possibly port, Faust code) that has a moderately
> convincing real time piano string model. about the best example i found is
> this object for ChucK called Sympia, by Julian Faust (
> https://sites.google.com/site/julianfaust/projects/coupled-piano-strings).
> there's also the prepiano opcode and the ppiano~ object in Max from Stefan
> Bilbao but that's a prepared piano not a standard one. i found a Ruby based
> physical model from Scott Van Duyne (with additive synthesis i think) here:
> https://ccrma.stanford.edu/software/snd/snd/piano.rb
>
> i'm imagining you're likely familiar with all of these, as well as most of
> the papers on the subject.
>
> so if i'm starting from Romain's examples in the faustlib, the closest one
> i can think of is this one, the steel string model. i found the code in the
> library folder:
>
> elecGuitar_ui_MIDI =
> elecGuitar(stringLength,pluckPosition,1,gain,gate)*outGain
> with{
> f = hslider("v:elecGuitar/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01);
> bend =
> hslider("v:elecGuitar/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel][style:knob]"
> ,1,0,10,0.01) : si.polySmooth(gate,0.999,1);
> gain = hslider("v:elecGuitar/h:[0]midi/[2]gain[style:knob]",0.8,0,1,0.01);
> s = hslider("v:elecGuitar/h:[0]midi/[3]sustain[hidden:1]
> [midi:ctrl 64][style:knob]",0,0,1,1);
>   pluckPosition = hslider("v:elecGuitar/[1]pluckPosition[midi:ctrl
> 1]",0.8,0,1,0.01) : si.smoo;
>   outGain = hslider("v:elecGuitar/[2]outGain",0.5,0,1,0.01);
> t = button("v:elecGuitar/[3]gate");
> gate = t+s : min(1);
> freq = f*bend;
>   stringLength = freq : f2l;
> };
>
>  but it seems to me that a piano string would be stiffer and of course
> have between one and three actual strings played by a struck hammer for a
> designated pitch, rather than a pluck. i do know that Romain has physical
> components - his Bi-Directional Utilities and Elements in the physmod
> library could likely be applicable but i have no idea how to hook these
> together. i'm figuring it's not as easy as just running this example
> through a dispersion allpass filter. i did find this lecture by Romain
> which might contain some clues worthy of study:
> https://ccrma.stanford.edu/~rmichon/faustTutorials/#simple-virtual-string-example
>
> my eventual goal is to use this as a starting point for creating an
> instrument that would be controllable inside PD that would be able to
> explore further boundaries timbrally and expressively beyond that of
> 'semi-accurate piano string model'. i have had some creative fun in PD with
> a percussively-oriented Karplus model i found which i duplicated three
> times and added a Spread control to detune the frequencies of the allpass
> which occasionally can sound barely like a honky tonk piano in certain
> registers. i did also find a PD object that is a port of a Mutable
> Instruments oscillator module called Plaits that has a stiff string model
> in it. i looked through the code and it does appear to reference a
> dispersion allpass filter. it's definitely not trying to sound like a piano
> string, but does have variable inharmonicity.
>
> at any rate, any help you or anyone can offer is certainly appreciated!
>
> best,
> scott
>
> On Sat, May 25, 2019 at 2:40 PM Julius Smith <j...@ccrma.stanford.edu>
> wrote:
>
>> Hi Scott,
>>
>> I added the piano dispersion filter to the library because it was so
>> easy to encapsulate that nice paper (cited in the comments) in
>> ready-to-use form.  We should all do this!  I'm not using it yet
>> myself, but I hope to when I circle back around to piano modeling.  If
>> you send me a clean toy piano example without a dispersion filter in
>> its waveguide strings, I'll send it back to you with a tested
>> dispersion filter installed, and I'll add it to the examples if nobody
>> objects.
>>
>> Romain Michon has written many examples with strings, so I'd start
>> with (or just find) one of those.
>>
>> Cheers,
>> - Julius
>>
>> On Tue, May 21, 2019 at 10:51 AM Scott R. Looney <scottrloo...@gmail.com>
>> wrote:
>> >
>> > hey there, just joined the list and i am a complete newbie to FAUST,
>> having attended a one day seminar about two years ago @ CCRMA. additionally
>> i have no math skills to speak of and only a smattering of programming
>> experience in C++ - i mostly script in C#.
>> >
>> > so, i was wondering if some generous soul were working on modelling
>> piano strings and used the dispersion filter in FAUST in a working example.
>> i can see the filter listed there and its ostensible usage, but i have
>> absolutely no clue how to apply it. i would like to use it to model both a
>> normal string behavior as well as being able to tweak, twist and mangle the
>> output to get more unusual results.
>> >
>> > i'm not feeling a lot of interest in the list, as i searched for
>> 'dispersion' and came up with exactly one mention - when the filter code
>> was incorporated into the FAUST library, which was about 11 years ago.
>> would be really nice if someone made an example piano instrument to play
>> around with, but i'm not holding out a lot of hope....
>> >
>> > best,
>> > scott
>> > _______________________________________________
>> > Faudiostream-users mailing list
>> > Faudiostream-users@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>
>>
>>
>> --
>>
>> Julius O. Smith III <j...@ccrma.stanford.edu>
>> Professor of Music and, by courtesy, Electrical Engineering
>> CCRMA, Stanford University
>> http://ccrma.stanford.edu/~jos/
>>
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to