record polyphonic notes into a table
Thanks to everyone for their help! I had to try a few things, but I just can’t come up with a solution.
Basically, I want to feed polyphonic input into a step sequencer — either through [notein] or by manually selecting notes from a virtual keyboard.( a button each sending the pitch for each note)
Using [notein] seemed like the easiest approach at first. I’m storing pitch and velocity in separate [text] objects, and I thought I could just use [text get] to feed that into [poly].
But here’s the issue: [poly] doesn’t accept lists, it expects values to arrive one at a time, as MIDI is a serial process. So instead of feeding a list directly, I would need to send each note individually, one after the other.
I could route each voice separately after [poly] and assign pitch and velocity manually for each voice, but that feels like a lot of effort, and I can’t really use [clone] for my synth setup. That means I’d have to manually duplicate everything based on the number of voices, which isn't ideal. Also I don`t know how to store velocity and note length in this case.
When I try the virtual keyboard approach, I run into the same issue: I have all the note data stored in a list, but I can't feed that list directly into [poly]. I’d still need to read the notes out one by one, in quick succession. On top of that, with the virtual keyboard, I’m not sure how to handle note length, since [poly] manages note on/off internally. I’d basically need to generate my own note on and note off messages manually.
So I think the core issue I’m running into is how to read out a list in a serial way — fast enough to sound like a chord, but still feeding each note individually into [poly].
Also, I found another approach someone did
I need an object to unpack an incoming midi chord (midi in, note in )
@whale-av said:
@gentleclockdivider "Let's recap , a chord ( thus separate incoming midi notes perceived as a chord ) goes into pure data , I want to extract the midi note values .
UNpack -only unpacks last received note+velocity , that's why I wrote that an object that detects the time between incoming events could be the solution .
SO let's say I play a simple c min (midiin) , which has the midi note nr's 48 , 51 , 55 ....I want these these to appear in separate numboxes ."[unpack] produces all the note numbers...... but you only see the last..... a [print] will show them.
As I said at the start of this thread, [poly] will separate them for you as it indexes the notes.
You could then use [route] to separate them but [clone] is more useful as you can clone a synth inside if you wish.
The indexes from [poly] can be used to allocate the notes to the clones, and [poly] then ensures that you have no hanging notes as the noteoff messages are allocated the same index.As the idea of a chord is human and has no meaning in Pd, midi, or even on a keyboard, why would you need to group the notes together with a timer or a threshold.... I am just curious...
To correct bad keyboard technique...?The method using [poly] and [route] is shown in your Pd/doc folder....... Pd/doc/7.stuff/synth/1.poly.synth.pd .... since at least 2011.
David.
I reall think we have a communication error here .
I know that a chord does not exist in pure data -midi etc...and that it's a sequential message of single notes , I have expresed that in my first post .
I am also aware that only the last of the messages is shown by the unpack module .
- quote-
As the idea of a chord is human and has no meaning in Pd, midi, or even on a keyboard, why would you need to group the notes together with a timer or a threshold.... I am just curious...
To correct bad keyboard technique...?
-unquote -
Bad keyboard technique ??
I just wanted pure data to SHOW all incoming midi notes that make up the chord , not in the console but in the structure view ., , your treshold value example did that .
Why is it so bizarre to ask for that , max msp has a dedicated object for exactly that , says enough .
Notein-noteout
Hi, I'm trying to make a patch: MIDI keyboard => puredata => FluidSynth.
(FluidSynth is a real-time software synthesizer, I use it as output with the "Qsynth" GUI interface.)
I use puredata on Linux.
These are the connections in Jack:
This is the patch:
Playing my MIDI keyboard, I hear the sounds correctly.
But there are two things I need to understand:
-
Why does it also sound at the instant I lift the key?
-
In [makenote] I set a duration of 1000: how can I make the sound last for as long as I hold down the keyboard key?
Thank you,
a.
PD with keyboard control only
Most of the Windows apps are active after I open them, but PD needs to be activated with a mouse for keyboard to become functional. This is very inconvenient if I have automated installation with no monitor. I need Keyboard buttons to control some parameters without monitor, at least turn a PD patch on/off with keyboard only.
Is there any solution, workaround or . . . ?
Pd as an accessible programming environment?
@JoshuaACNewman A macro keyboard can be made much simpler just using a normal keyboard and keybinding, some info here. I started making a version which accepts two key commands so you could type "ag" to get [array get] and the like, but I am failing to find my plugin, i either accidentally saved over it or lost it. But with just keybinding you could get around 100 objects on a standard keyboard with single key commands and shift/capslock and just relabel the keys. You could also use a midi keyboard and dynamic patching.
Edit, I do not think you need to use dynamic patching to do the midi keyboard, you probably can just convert the midi key into an asci key and send it too pd.
Ewolverine 4 U
Exactly, but you don't have to create a loop, if you rout a keyboard into your synth. You just have to make sure, that the synth only gets note events from your keyboard - not the CCs, as those are coming from Ewolverine.
You can also control Ewolverine with your keyboard. Just scroll to the right to read the MIDI implementation chart.
Creating a large number combining several numbers
@Tilman Using the computer keyboard will never give you the same responsiveness as a midi keyboard, as the computer keyboard produces many key down and up events when a key is pressed like aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.
So this has to be mitigated somehow. I find it surprisingly hard.
I built a buffer with [text] but it still has some fluctuations at least on my macbook + linux: keyplay.pd
shortcuts issue
I have the same problem...
You might use a french or german keyboard maybe?
The problem is that numeric keys are mapped to Command + Shift + digit key in such systems.
I finally ended by modifying some line of my pd_binding.tcl file long time ago to make them match my local keyboard.
For exemple (for french keyboard) for object box "CMD+1", I use "CMD + &":
bind all <$::modifier-ampersand> {menu_send_float %W obj 0}
For CMD+2, I use "CMD + é":
bind all <$::modifier-eacute> {menu_send_float %W msg 0}
This way I don't need to press 3 keys (CM + SHIFT + numeric) and only 2 keys like in us keyboard (CMD + &) and it removes the double box.
But I might be wrong?
Polyphonic Pitchshifter controlled by Midi-Keyboard
Hello!
I'm fairly new to Pure Data, but thanks to several tutorials I managed to somehow get close to what I want to achieve:
I want to change the pitch of an audio signal live, by pressing the keys on my midi-keyboard. This I have managed to do, but now I also want to be able to press several keyboard-keys at once in order to create a chord - for instance pitch-shift the audio signal to a C and E and a G at the same time.
I tried to combine this Pitchshifter:
https://github.com/pure-data/pure-data/blob/master/doc/3.audio.examples/G09.pitchshift.pd
With the Poly-setup discussed here:
https://forum.pdpatchrepo.info/topic/5311/polyphonic-voice-management-using-poly
The pitchshifter works by multiplying or dividing the frequencies of the audio signal.
If I want to be able to produce 4 notes at the same time, my guess is that I need to have 4 different pitchshifter-setups that respectively are connected to the nodes of the route-output.
The problem with this is, that if I for instance only would play one note - one voice of the midi keyboard so to say - one pitchshifter would play my desired note, but the 3 others would still play the untransposed audio signal.
Is there a way to check how many keyboard-keys are being pressed or which voices are being active, and then accordingly mute the pitchshifters?
Thankful for any help!
David
Patch that will play different chords with [midi] input
Hello dear PD patchrepo community !
I'm currently trying to make a PD patch that will basically produce different chords when I use different keys on my midi keyboard. I stumbled upon one patch which seems to be a good basis for my work so far but it's too limited ; I'm not very technical savy ( more of a musician actually ) but for my course ( bachelor in sound engineering ) I'm supposed to make a patch that generates chord when I play a note on my MIDI keyboard.
I'd like to generate different chords ( for example minor chords, major chords, and scales for example ) which would be triggered when I use keys on my midi keyboards; do you think this is feasible ?
So far this is what I got;
Just to make it clear for example I'd like my patch to generate a C major seventh cord by inputing the C key on my midi keyboard and add more versatility to my patch by adding extra functionalities such as being able to make a reversed chord too...
I'm struggling to build this patch and any help would be greatly appreciated !
Thanks a lot !