[PD] Polyphonic voice allocation and sustain pedal

alfonso santimone alfonso.santimone at gmail.com
Sun Jan 3 10:17:46 CET 2021

Thanks Jose',
i used a similar approach in SuperCollider with an array of size 128 for
all the possible midi notes. Probably I should build some abstractions to
deal with array scanning. And to limit the polyphony to given numbers use
another array of size 128 with voice numbers tags. I'll see.
I'm doing some experiment with [else/voices] and [else/suspedal] to.
Alexandre Torres Porres is doing a very good work with Else lib.

On Sun, Jan 3, 2021, 01:35 José de Abreu <abreubacelar at gmail.com> wrote:

> maybe you can do it without poly at all
> you can clone an abstraction 128 times (and use switch~ to make sure the
> ones without trigger doesn't use your cpu) then voilá, you have one address
> per note in midi, if you want to retrigger you just... retrigger it, yay
> about sustain pedal, i would do this trick: i would create an array with
> 128 entries and use this: if i press a note, i give the array value 1 at
> that index, if note off value 0, BUT IF the sustain pedal is pressed
> instead of giving 0 at note off event, i would give it 2 and prevent the
> note to die, soo, when i release the pedal i check this array and all the
> notes that have state 2 will be released. The ones with state 1 i am still
> pressing so nothing to do. What do you think?
> about retriggering, if a note have state 2 and i do a note on, i retrigger
> it and give the state 1 again so sustain pedal doesn't release it afterwards
> this way you don't need poly and bag, but will need clone and a separate
> interface with arrays and untils to simulate the states of a note (0 for no
> sound and no press, 1 for pressing, 2 for not pressing but sustained by the
> pedal and ready to be released)
> Em Sáb, 2 de jan de 2021 14:41, alfonso santimone <
> alfonso.santimone at gmail.com> escreveu:
>> Thanks Christof!
>> I surely hope that your proposal will be heard. Those would be essential
>> additions to vanilla's [poly] for polyphonic instrument building.
>> As for the [bag] object i tried but in the way i built the patch it only
>> works if the sustain pedal is pressed before note on arrives. I have to
>> find a way to make it work the same way when is pressed after a note on.
>> The same note retriggering is  another essential feature.
>> www.elgallorojorecords.bandcamp.com/
>> <https://elgallorojorecords.bandcamp.com/>
>> soundcloud.com/alfonsosantimone
>> www.facebook.com/alfonsosantimone
>> On Sat, Jan 2, 2021 at 6:29 PM Christof Ressi <info at christofressi.com>
>> wrote:
>>> Not a direct answer to your question, but I've proposed a few additional
>>> features for the [poly] object, including a [sustain( message:
>>> https://github.com/pure-data/pure-data/pull/661
>>> For implementing a sustain pedal in Pd vanilla, the [bag] object will
>>> probably help. Unfortunately, I don't have time at the moment to come up
>>> with a full solution.
>>> Christof
>>> On 02.01.2021 18:07, alfonso santimone wrote:
>>> Hi all,
>>> i'm trying to build a polyphonic voice allocation patch that include
>>> sustain pedal (MIDI CC(64) ).
>>> Is there any abstraction that i can look into?
>>> My problems are :
>>> 1. How to deal with [poly] when the same note number is received (i.e,
>>> three C4 in a row)
>>> [poly] always assign a new voice slot to the incoming notes.
>>> I'm trying to make it assign the same voice slot when the same note
>>> number is received consecutively. I guess that i should mess with some
>>> arrays keeping track of note numbers and voice slots.
>>> 2. How to deal with sustain pedal.
>>> In the "real" world as with keyboard instruments like piano, rhodes etc.
>>> the sustain pedal is used in different ways but the most common one is to
>>> press the pedal immediately after a chord or note is played and then
>>> release it when a new chord is played.
>>> It can be used in more "effect" oriented ways.
>>> Is there any patch or abstraction that i can look into? I guess i should
>>> use a combination of [stripnote] and arrays/table/list to keep track of the
>>> notes on and off events.
>>> How this can be integrated with a polyphonic voice management with
>>> stealing algorithm etc. etc.?
>>> thanks and all the best
>>> www.elgallorojorecords.bandcamp.com/
>>> <https://elgallorojorecords.bandcamp.com/>
>>> soundcloud.com/alfonsosantimone
>>> www.facebook.com/alfonsosantimone
>>> _______________________________________________Pd-list at lists.iem.at mailing list
>>> UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
>>> _______________________________________________
>>> Pd-list at lists.iem.at mailing list
>>> UNSUBSCRIBE and account-management ->
>>> https://lists.puredata.info/listinfo/pd-list
>> _______________________________________________
>> Pd-list at lists.iem.at mailing list
>> UNSUBSCRIBE and account-management ->
>> https://lists.puredata.info/listinfo/pd-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20210103/e2f63e62/attachment-0001.html>

More information about the Pd-list mailing list