Pure Data | Organelle | Max/MSP | Q&A

naja, in dem fall ging es ja nur darum rauszufinden, welche der 3 slider geändert wurde. nicht mal das hätte ich ohne helpfile hinbekommen. finde schon, dass diese zl.sachen extrem tricky und kompliziert sind, v.a. wenn es um komplexe probleme geht, wenn man es checkt, aber sicher ein mächtiges werkzeug 😊
 
mir ist übrigens gerade aufgefallen, dass der patch von mir "defekt" ist, also:
wenn ich dieses device zwischen einen sequencer und einen synth in ableton schalte, bleiben midi-noten hängen, so wie wenn sie auf hold wären.
wenn ich das device abschalte, passt es.
irgendwas muss da wohl zwischen midiin und midiout, was sich mir leider nicht erschließt?! jemand eine Idee?!
Bzw vielleicht kann das mal jemand als m4l-device selber probieren... wäre cool.
lg

edit: also es wirkt so, als on so was wie notend oder so fehlen würde, bzw. duration. wenn ich im sequencer die duration auf sehr niedrig setze, spielt es die Noten, die der patch direkt durchlässt "richtig", die transponierten offenbar mit einer anderen duration. liegt womöglich am midiparse/modiformat?!
 
Zuletzt bearbeitet:
finde schon, dass diese zl.sachen extrem tricky und kompliziert sind, v.a. wenn es um komplexe probleme geht

im direktvergleich mit vexpr- und coll-basierten lösungen sind die teile "einfach".

das eigentliche problem daran scheint mir eher zu sein, dass sie oft "zu einfach" sind, so dass die leute sie zwar erfolgreich einsetzen, aber letzlich den eigentlichen code dahinter nicht ganz verinnerlicht haben.

mit ausnahme von .sort sollte man eigentlich jedes zl mal mit basis-objekten nachgebaut haben, dann weiß man wie der hase gegrillt wird. :)

das gleiche nachbauen-spiel würde ich für metro, cycle, switch oder acos auch empfehlen. mit der zeit entzaubert sich das zeug dann alles dir gegenüber.
 
Zuletzt bearbeitet:
hab mal alles weggelöscht was eh nix macht. jetzt kann man schon ganz gut sehen, dass da ein dutzend fallstricke bezüglich der message order drin sind.

1739735440696.png

bevor ich dazu rate überall grundsätzlich trigger einzubauen würde ich in schritt 1 erst mal schauen ob das nicht mit weniger objekten geht. dann braucht man nämlich auch weniger verbindungen.

was machen eigentlich deine zl nth was unpack nicht auch könnte? :)
 
ansonsten bin ich schon gespannt, wie der architekt uns erklärt, woher die für die note ons benötigten note offs hier eigentlich herkommen.

oder was passiert wenn das plug-in ein note off erzeugt von einer note, die bereits gehalten wird.
 
Zuletzt bearbeitet:
danke mal @einseinsnull für deine Anmerkungen, hinweise und Vorschläge...
habe mal den patch ein wenig gereinigt wie von dir vorgeschlagen.
ansonsten bin ich schon gespannt, wie der architekt uns erklärt, woher die für die note ons benötigten note offs hier eigentlich herkommen.

oder was passiert wenn das plug-in ein note off erzeugt von einer note, die bereits gehalten wird.
das ist mir gerade ein bisschen zu hoch...

ich denke mir so... es kommt eine midi-note rein, die wird in Noten-höhe und velocity aufgedröselt, dann wird je nach wahrscheinlichkeitsalgorithmus etwas zur Notenhöhe addiert/subtrahiert oder die Originalnote wieder mit velocity gepackt und ausgegeben.

Tatsächlich passiert es aber, dass:

Bildschirmfoto 2025-02-16 um 23.25.25.png

Am Midimonitor erkenn man, dass nicht immer die 100/0 - Kombi kommt, sondern wie in Zeile 5 für A#2 erst irgendwann der 0 Wert kommt... Ganz unten dann A#2 100 und G2 100 ohne dass die Note abgeschlossen wird. Hat irgendwie nichts mit Duration zu tun, weil in Stepic alle Notenlängen gleich sind...

Da hänge ich.

Der Patch sieht jetzt so aus:

Code:
<pre><code>
----------begin_max5_patcher----------
2678.3oc6bs0caabD9YoeEnn5A6FYzclYm8RO8k19d6O.mb7AhBxFIjf5PB5
njbx+8LK3EIQARtfbIcdn5lEW.hYmu8atsyJ+aWeU9cSepZdd1+H6iYWc0uc
8UW0MTXfqV85qxmT9znwky6ts7lEStqZV9sKuj7p5lwUscWCVM3iksi9Rcym
+zrpQsKe1FzUPVz5YqQYHfMvsYn0UX7Nj.umAEa0zsYrpPIWR9Y1O7rPltnc
sTvUitbn1e4wpkhHO+1r76Ja9b9l2X88cS4o28ie.04alcyJmT0VM6SUMk2M
t6cqBW52u95vOtMVfn5mkG75mZa0ScpZ92kA8BN3tAGv5KPm2qYMRFEoX2sY
Zmof7JVyJAZLFKDPLeAuWvA1E3T2z1Kt.97zo6sYiW+4PIHj2UvnWqzfgDPf
8lay.iovYDTvaTHXXDQYP0gXH79XHu56dQDSRQj5r6FJVfTgkUNKqsjBQcvV
gTtNs9PD.beDf8YfjRdv35uVUHR5mlOXU2.EVi138dh8fn0BM.IrvRrXhvVx
X7ZRGCMXm1B8p+7wn+ilNYRU.X2B.9OeorYT0227+lU+45lxweey+cZa05aa
bcS0noKZ5tWZMXLqZt7nJaqm17oCeGuv6AEvAa3GZS2O2BRhB3E1kS9zZbri
QEGb1TnP4Svif1PJXoyYRK+FG7UqUN7sR6EK.p2hxl7dTltoVBYeSKuuilOP
HfKjHSnGXs23DhnUzWsuPbGyNvpcZGyF9jXd6z5SeLru6Vz1Jn2P8zxBWQLi
TjDZwZYYwUVEslBSvvCzrCUhxKZOp6zScB0SvBWn3v+kODVnFZnXB5w+i.VE
d.rr0prrW.HgEP7wRB1YnXiMoQdtKqNIQgIuovJ4jX0FGnkj3rtXLBv8RNtc
O3.6RHNT8ziyxDQ8t2cyCP1eOLwy9aY27.9922q+XbnLl9fLIStBcfwHVYNi
QHNvFHifDEwBzoLlc8CYu6lZH6elcSM99r1uT0jAYUimWkISGLiFpoDBbgN.
BRNs.Ykr3DLPqWgVDJI04LREAgz7TEhYkl.kStDfZ93q.nenhtfNXQRxeSps
QxdUCDorfeWoyeFbvR3epcvpURZEVuUo..IM5B4xgdt.MAxf3iUx30EJ.5L3
fkTWPVPezehj05.8mkTnzLo8mIVfTV2kgEL+mqEUOC6Edn8vC79BKHK+NqRB
0p0cdGPnfPISeAvjTsLx0EuCjpv4jQUZs15Ia3NSVZ+.bTdFlTMed4mqdKbT
0lQY2.YX1M3PsMXIUdOHVHHqjpcHh6R9Px4lYINhSJA1KzIw4n0VH7KvKLKz
vdOfIERnDFW4wxeRpAtd3XgT5uEk590heAopDNjykVbd.fSK4kEJGT0QZnBw
Yq1QFzihWDGmTr.SM8.CzC5HnGZwinrpa8rgBInKUqDnGhaRmyJQTXxHUIyx
fVrHvNTgb48Vq3dMoPB7smdnoP3TY81Z.uTTAD15PRp+0pkZSAk310vTn7Ta
H0cJXhXBFUASpzAEpTlA1wEPk0PXwVJTQ4C6iJR9vtEIpX3CwxwI0x.Vy4Hf
pQ+MW80B+WxazfFYkGEk26uX4SXNNCgiZCz6MdIZbEJskj7LzNf8Jzd11.c1
bgxn3WGWLocWYTfCEgVGwPE17XmGCFBK2lrjVfAaufTAsjpnGBoPJV8RB.AW
ZqCCnE29RX.WHyoyESPeYYBCteJ8BPWJh.e4HBRMEERsxjSgNTRaTEb8eQYB
pKKSX3amWuHzEhJf1T1Rg5l6qdZuLjGl1z1HqBc29+ZVc4378zP1PBTuogrh
KTd6zFBnkbIXHayOtYkJLolW+qcSpPmJRImHSvJg3UsWVwfPE1R8fJZUAuMe
wtrncJk7ENgf1tp.Ir8mb3qjr4m80xDKTvRAYJoj0PKF7vlbRR2NedTVVSVL
tsd9356e1S6NZolufHohJvpIvnkjKCpUgUJ2PYsf04CAVtMCzcccCBao09a3
1RoNZ53oyVJAUHUEBrLZHsRGpYMLTnZd4oKE3xJSXHkDESlGD5Tx2glO8BQ0
2QI.JPmjNrwK0EPgmkL0kBjkzgHORRthxf3Kl59CRfkZVEMRPx0yb0psxdy6
KdJNs23EOKv4s+xxw1.fqrFVuiRyerbTcHpT+sGMwcT76F7I5PAENFAmmLnR
6AUWo59BYDuXWfJojDanYho+DcPG04Wnqk82+Buiesb1F2lat3Goe3.lN.nJ
fvdRAnhYuwig82sfCFRrMzEUfTg8CG5ZUs6HZUMnrEFgGK05JbcOG1d8NVY+
OyX8I+v3ok6.Q26VpudlVNpUfo.J8Z6bCJ1yf16Hq1q6ryYsLHZTNIfKZVM6
ekk81b40z9RQBeprscV8cKZqd92luZoc0Zauylqdw0upquXRLhUBHOe43BgY
0C3qkiWTM8g29FeFCFOs4ya3HsyJal+WWiTu59lrx4AExwpuKW2MG9vtt9z6
ku5jhtmKO+KSm0FyzX85Mzy0VzT+rSG0Zr35m+myh4zArkL3aiCkVSI181.3
mWSI3+aJEooD7mCSI3asozQ1uZ4ZC+bXJI5GZ0jDxVEx12RaN3cWfdTmxS8f
rzc+zIGyFp1KHfNaAoAotHs7gSRsgS+IvC37j2Wx9O0B58n9gjk25rW1eaIC
Ygn.BHoTYEZL5T1CNeJwhI02W+vzYSJa6EMrCDMbp2dTwNgiCzpClZuvfSkz
VMM5n50TufvdNfOIiDXSY2kFbMLREh714FbgJgwlR1+hl8tvCCagGc3xSvgQ
x8BB6ygKEr+c1hIah8CHwomWkDf.scGKCsWAZAUPLJ2.tXNa9u.Td8H8e1Yo
DiQxbafazZ1+d536y2K.BdIxIqrjIzVdcXOw7BSRHPRgxJ.HS3XUtbaYvAcl
pwd21PUJ2q0.pT2jdP4srJE+VVkVk7SBVDPV26qa6Q25uOpNUIL9qww4SWLa
zZAuJFtTOxFwee0715lM0g7wM936todWqhVRQHntYC77d1MKrMn6baxRojsu
FG1HY7rKYxzujUmrjgCHYfSvxpj8yg0QLABxFCXtd1bZRhikphmnjjHmQHoD
nRcBBhwLGNUIoiPkBmXsDHJHFQoRgVwwrPwlDrRwlHjzVfbh7YDknWtzoRsO
ZNFaNVmB.NFB5VTqTAvQYan8miPQwIak+rr3FSLBvcNh8GmnI04X4Vx4OBll
MAb5nVaSgfHSrgFoSURXr4Ncp91IH17COYIEyxTJBhfQEtJE4JgbDIVfovuM
FWhEoPTPz0pbxRxM.IkVOia4ucWrQ6kRKAveNbBCwXJPoPIiJY9vejeoPVwX
eaSkjNDKg4TII7PdRRlNQGRRovgemjzwHoSVmX2PxsLAxBhRVmLBxwl53IqU
Zez1umrVs9o7svuOEUfT+4S1Gj4XOKUeEohS34Q3QUHBmDlLnuTw7.J5jxvS
VVXTxJM5EDsdcx9BTQ42Y8L5zjUDRR+V.bYWFJe7wuVMa8IHpSF4SJ+wkG1n
tVlkOotY4KMcubV0WqWe+c++cUd4rQeotsZT6hYKaBySlk+g5jGNxOyZVTux
IS2ASJuqmOgF1DNJsKeCgVCc8ue8e.fbkwFC
-----------end_max5_patcher-----------
</code></pre>
 
wenn du von einem note on in einem live midi stream die notennummer änderst, dann hat dieses note on kein note off mehr.

zu allem überdruss könnte der stream auch noten beinhalten, bei denen die später angespielte früher wieder aufhört als die zuerst angespielte - so dass man im prinzip für jede echtzeitbearbeitung von midi streams mit noten um das erstellen einer full-featured "busy map" nicht herumkommt.

busy map heißt, dass du alle note on notenwerte irgendwo abspeicherst, damit man denen (bzw dem, zu dem es verändert wird) dann später den korrekten "note off moment" wieder zuordnen kann.


ebenfalls müsstest du beachten, dass durch algorithmische modulation des notenwertes eine situation eintreten kann, in der zwei mal die gleiche note angespielt wird.
innerhalb eines max patches ist das cool (ich mache das da standardmäßig so in meinen synthesizer patches), aber im gewöhnlichen midi umfeld will man das nicht.

mindestens müsste das zweite identische note on sich selbst ein note off vorausschicken (so machen das die meisten geräte), oder aber du würfelst neu bzw. so lange, bis ein notenwert erzeugt wird, zu dem noch keine note "läuft", so dass eben immer nur verschiedene gleichzeitig rauskommen. (stell dir dabei einfach ein einzelnes keyboard vor, auf dem man ja auch nicht die gleiche taste zwei mal anschlagen kann bevor man sie wieder losgelassen hat... diese logik aus dem echten leben musst du dann nur noch nachbauen ;-) )
 
Zuletzt bearbeitet:
Note On/Off ist in PD pain in the ass. Wird in Max ähnlich sein. In der DAW wahrscheinlich nicht ganz so dramatisch, wenn es allerdings um HW geht sieht das echt anders aus. Da kommt's dann auch noch darauf an, wie viele Stimmen das Gerät hat und welche Note du wann ausschalten möchtest um eine neue anspielen zu können... So richtig zufriedenstellend konnte ich das nicht lösen. Allerdings habe ich viel über MIDI gelernt.
 
man könnte denken noten seien fast das einfachste... aber noten in echtzeit zu verändern ist es nicht. splitter, delay und transpose ist so einfach wie es sich anhört, das gabs schon 1998 von akai alles zu kaufen. alles was darüber hinaus geht ist als echtzeit effekt ungleich komplizierter wie das generieren von noten aus dem nichts.

das fängt schon mit so sachen an, dass der mensch in "akkorden" denkt, es das aber technisch betrachtet so nicht gibt. schönes beispiel dafür ist die implementation von hermode tuning u.ä.
 
Zuletzt bearbeitet:
eine simple verteilung von midinoten, reihum zu verschiedenen ausgängen, verkommt schon zur abendfüllenden beschäftigung, denn 80% von dem, was man hier sieht ist nur die kontrolle über die berühmte busy map bzw. "running notes".

1739811646065.png
 

Anhänge

  • tovoices.zip
    1,9 KB · Aufrufe: 1
Zuletzt bearbeitet:
wenn du von einem note on in einem live midi stream die notennummer änderst, dann hat dieses note on kein note off mehr.

zu allem überdruss könnte der stream auch noten beinhalten, bei denen die später angespielte früher wieder aufhört als die zuerst angespielte - so dass man im prinzip für jede echtzeitbearbeitung von midi streams mit noten um das erstellen einer full-featured "busy map" nicht herumkommt.

busy map heißt, dass du alle note on notenwerte irgendwo abspeicherst, damit man denen (bzw dem, zu dem es verändert wird) dann später den korrekten "note off moment" wieder zuordnen kann.


ebenfalls müsstest du beachten, dass durch algorithmische modulation des notenwertes eine situation eintreten kann, in der zwei mal die gleiche note angespielt wird.
innerhalb eines max patches ist das cool (ich mache das da standardmäßig so in meinen synthesizer patches), aber im gewöhnlichen midi umfeld will man das nicht.

mindestens müsste das zweite identische note on sich selbst ein note off vorausschicken (so machen das die meisten geräte), oder aber du würfelst neu bzw. so lange, bis ein notenwert erzeugt wird, zu dem noch keine note "läuft", so dass eben immer nur verschiedene gleichzeitig rauskommen. (stell dir dabei einfach ein einzelnes keyboard vor, auf dem man ja auch nicht die gleiche taste zwei mal anschlagen kann bevor man sie wieder losgelassen hat... diese logik aus dem echten leben musst du dann nur noch nachbauen ;-) )
puh. danke mal… befürchte nur dass ich da leider nicht ganz f9lgen kann…

wenn du von einem note on in einem live midi stream die notennummer änderst, dann hat dieses note on kein note off mehr.

Auf dem MIDI-Monitor sieht man tatsächlich, dass die nicht transponierten Noten immer mit 100/0 durchgehen wenn ich sie transponiere eben nicht immer 100/100. Ich check aber nicht, dass beim [unpack i i] nach dem midipardse-Objekt auch immer nur die velocity 100 und nie die 0 aufscheint.
Wo kommt dann die 0-Velocity her, wird die dann im midiformat-object hergezaubert?! Und wenn ja, warum und wie?!
Das mit busy-map verstehe ich auch nicht ganz bzw. wie man das umsetzten könnte.

Ich habe ja den Patch-Letztstand gepostet. Denkst du es wäre viel Aufwand mir anhand meines Patches eine Demonstration zu geben, wie man das umsetzen kann?!

Ich denke mir, es kann ja auch nicht so schwer sein, dass ohne Notenhänge rau machen. weil der sequencer ja immer nur einzelne Noten ausgibt und nicht mal Akkorde...?!

Wäre über weiter Infos/Hilfen dankbar.
 
ich sehe auf anhieb nicht wo das problem entsteht, aber es wird bei den veränderten notenwerten immer nur dann ein note off dazu erzeugt, wenn der verändert werte mehr als einmal hintereinander kommt. klassisches message order problem.

mach die linke seite neu und ändere von oben an die daten in "velocity note" statt "note velocity", dann wird das einfacher. am besten schon mit der liste: midiparse - zl rev -
 
danke für den tipp - werde mich morgen damit auseinandersetzen und schauen was ich so hinkriege! Danke dir!
 


News

Zurück
Oben