Noten u. Takte (Musiktheorie?), Sequencer Konzept, Fragen über Fragen

_thomas_

||||||||||
Durch eine kleine Diskussion im Pure-Data-Faden sind bei mir nun ein paar Fragen entstenden die eher musiktheoretischer Natur sind.

Ich bastel mir gearde einen Sequencer für den Organelle und will das Thema für mich mal beerdigen. Bedeutet, ich würde es gern korrekt und nachhaltig lösen. Aber es muss natürlich auch praktikabel bleiben. Die Plattform hat so ihre Möglichkeiten die mir zur Verfügung stehen und die ich einsetzen kann um mein Ziel zu erreichen. Ziemlich eingeschränkte Möglichkeiten. Das Display ist grundsätzlich auch Grafikfähig, allerdings ist z.B. so etwas wie eine Pianorolle o. ä. nur schwierig umzusetzen. Also werde ich mich auf eine textuelle Darstellung einschränken. Und diese ist auch üblich auf dem Gerät.

Von Sequencern habe ich keine große Ahnung. Letztendlich geht es ja nur darum, zu einem definierten Zeitpunkt ein Ereignis auszulösen. Z. B. eine Note zu spielen. Ich habe mal etwas mit den Elektrons experimentiert. Da gibt es zwar die Einteilung in 4er Gruppen. Prinzipell aber wird bei einem Puls einfach das für den im Ablauf konfigurierte Ereignis ausgelöst/Aktionen durchgeführt. Zusätzlich kann ich ein Micro-Timing auf einem Ereignis konfigurieren. Das sorgt dafür, dass das Ereignis eben nicht exakt auf dem Puls, sondern vorher oder hinterher ausgelöst wird. Es bleibt aber bei 4 Ereignissen pro Abschnitt (ich nenne solch einen Abschnitt jetzt mal Takt). Okay, es gibt bei den Elektrons auch noch das Ratcheting. Vergessen wir das mal.

Hinauslaufen wird es wohl auf so etwas wie einen MIDI Tracker, der eben die Note und ein paar weitere Daten erfassen und in dieser Form darstellen kann:

1722689781952.png
etc...

Für den Organelle eine gute Darstellungsform.

Kommen wir jetzt zu meinem intellektuellen Problem. Das eigentlich Problem ist, dass ich in der Musiktheorie eher am Anfang stehe. Wobei ja Vieles da auch einfach logisch (weil Mathe) ist. Gepaart mti meinen nur rudimentären Kenntnissen bezüglich Sequencing ergeben sich ein paar Fragen für mich.

Notenlängen, Pausen:

Ganze Note, halbe Note, viertel Note,...,sechzehntel Note. Oder zwounddreißigstel Note. Die Notenlänge beschreibt im Grunde, wie lange diese Note gehalten werden muss. Oder auch (viel wichtiger wahrscheinlich für einen Sequencer), wann die nächste Note gespielt muss, oder wann das nächste Ereignis ausgelöst werden soll. Die ganze Note muss also einen ganzen Takt gehalten werden. Von der viertel Note müssen innerhab eines Taktes vier gespielt werden. Usw... Eine Information einer Pause ist für einen Sequencer wahrscheinlich eher unwichtig. Oder auch nicht, wenn es um das Microtiming geht. Beispiel: Ich möchte, dass eine Note für einen Takt gehalten werden soll. Dann soll aber ein viertel Takt Pause sein, dann eine halbe Note gespielt werden und dann wieder eine viertel Note Pause sein.

Noch komplizierter wird es ja, wenn ich eine Note nicht mit dem Puls, sondern irgendwo zwischen zwei Pulsen spielen möchte. Wobei das ja eher eine Frage der Auflösung ist. In der Praxis: Bei 120 BPM habe ich 120 Pulse die Minute. Ein Puls wird klassischerweise als viertel Note angesehen. Wie löse ich Ereignisse zwischen zwei Pulsen aus wenn ich sage, ich möchte z.B. 16tel Noten spielen können? Oder exakt zwischen zwei Pulsen? Intern arbeite ich dann halt nicht mit 120 sondern mit 480 Pulsen pro Minute. Vielleicht ist eine Auflösung von 32 in einem Takt aber notwendig? Dann bin ich bei 960 Pulsen pro Minute mit einer Pulsdauer von ca. 62,5 ms.

Was ist nun die Frage? Ich habe sie mir schon selbst beantwortet. Ich möchte dem Nuzter natürlich die Rechnerei ersparen. Aber trotzdem die Möglichkeiten bieten auch mal anders als mit 1/4 im 4/4 Takt zu operieren. Ich werde einfach 1/4 und 4/4er Takt vorgeben. Das sind die meisten gewohnt und da muss man nicht großartig nachdenken. Wer will, kann dann auch bis 1/32 runter und auch Pausen definieren. Für die Freunde der Synkope. Aber dann muss man rechnen.

Ein wenig Sorge hat mir das Metronom auf dem Organelle hinsichtlich seinr Genauigkeit gemacht. Aber nach einer Messung scheinen die Abweichungen in einem wirklich winzigen Bereich zu sein. Die Zeitmessungen sind absolut stabil und zucken nicht mal.

1722707764540.png

Das bringt mich direkt zu einem weiteren Thema: der Takt. 4/4 ist ja recht simpel (obige Noten):

1722691670163.png

3/4:
1722707274250.png

Aber es gibt ja auch sowas wie 6/8 und weiß der Geier was noch. Eigentlich ist das ja nur eine Aussage darüber, wie viele Noten einer bestimmten (halbe, virtel, achtel, etc.) einen Takt ausmachen. Das ist wohl eher ein Thema mit der Betonung nehme ich an.

Für einen Sequencer ist das wahrscheinlich unerheblich. Oder ist das falsch? Muss ich da etwas berücksichtigen?
 
Letztendlich geht es ja nur darum, zu einem definierten Zeitpunkt ein Ereignis auszulösen.

hm, behalten wir den satz doch mal so im hinterkopf.

und in dieser Form darstellen kann:

macht durchaus sinn.

Die ganze Note muss also einen ganzen Takt gehalten werden.

noten werden nicht gehalten. es gibt note on und note off ereignisse, die beide jeweils ihre position auf der zeitleiste haben, und die immer zwingend paarweise und in einer bestimmten reihenfolge ausgelöst werden. dazwischen ist nix. :)

selbst wenn man andere datenformate benutzt kann man auch innerhalb einer software diese denkweise direkt von MIDI übernehmen. die einzige denkbare alternative dazu wäre auf das note off ganz zu verzichten und das dem signalgenerator zu überlassen. (bei karplus strong oder einen drumsampler braucht man das z.b. nicht. oder man hängt zum schluss einfach einen festen längenwert an. sind alle gleich, braucht man sie ja nicht mit aufzeichnen.)

interessant wird eher die frage, wie man diese daten aufzeichnet und weiterverarbeitet, bevor es dann später zur klangerzeung damit geht.
denn man kann natürlich statt "note on bei zeit 12, note off bei zeit 15" auch "note on bei zeit 12 mit der länge 3" notieren (und das dann auch so in einer trackerliste darstellen - und es erst ganz zum schluss nach dem abspielen wieder zu ons und offs machen.)

das kann z.b. dann sehr viel sinn machen, wenn man später während des abspielens die notenlängen live modulieren will.

Von der viertel Note müssen innerhab eines Taktes vier gespielt werden.

oder 7 :)

Noch komplizierter wird es ja, wenn ich eine Note nicht mit dem Puls

intervention: wer sagt denn, dass der sequencer überhaupt eine clock mit einer festen rate haben muss?

Wobei das ja eher eine Frage der Auflösung ist. In der Praxis: Bei 120 BPM habe ich 120 Pulse die Minute. Ein Puls wird klassischerweise als viertel Note angesehen. Wie löse ich Ereignisse zwischen zwei Pulsen aus wenn ich sage, ich möchte z.B. 16tel Noten spielen können? Oder exakt zwischen zwei Pulsen? Intern arbeite ich dann halt nicht mit 120 sondern mit 480 Pulsen pro Minute.

mit 1920 pro beat (beat= viertelnote) kannst du dann alle denkbaren varianten bis 128tel und 64tel triole darstellen.

du willst aber für so einen grid kein [metro] mehr komplett durchlaufen lassen.

Für die Freunde der Synkope. Aber dann muss man rechnen.

wenn du es frei gestalten willst, dann musst du es frei gestalten. dem kann dann durchaus auch ein fester grid mit offsets dazu zugrunde liegen, die beim abspielen zusätzlich verzögern können.

Ein wenig Sorge hat mir das Metronom auf dem Organelle hinsichtlich seinr Genauigkeit gemacht.

signalobjekte nehmen änderungen aus dem scheduler thread (ja ja, ich weiß, den pd ja gar nicht hat) dann auf, wann sie reinkommen, aber die änderungen werden erst mit dem ersten sample des nächsten vektors wirksam.

daraus kann man ableiten, dass man eine stabile clock erhält, wenn die audio vectorsize kleiner dem scheduler ist.

bei 44kHz ist das ab einer blockgröße von 32 oder kleiner der fall. sowohl der maximale takt als auch die varianzen von DIN MIDI schnittstellen liegen lustigerweise exakt im gleichen bereich (~0.7ms), das passt also auch dafür perfekt.

Aber es gibt ja auch sowas wie 6/8 und weiß der Geier was noch. Eigentlich ist das ja nur eine Aussage darüber, wie viele Noten einer bestimmten (halbe, virtel, achtel, etc.) einen Takt ausmachen. Das ist wohl eher ein Thema mit der Betonung nehme ich an.

Für einen Sequencer ist das wahrscheinlich unerheblich. Oder ist das falsch? Muss ich da etwas berücksichtigen?

hm, nix verstehen.

wenn du mit clock und zähler arbeitest ist der rest eine reine frage der interpretation. für 6/8 zählst du bis 6 statt bis 4, der clock ist das egal.

die wesentlichen fragen, die das design bestimmen, sind dinge, die sich auf die praktksche anwendung beziehen.

z.b. musst du oft irgendwelches zeug initialisieren und dann eben auch re-initialisieren können, z.b. den counter zurücksetzen wenn der user die taktsignatur ändert. oder auch nur relativ zurücksetzen. oder wenn du eine shuffle funktion haben willst, bei man auch predelayen kann, dann brauchst du einen latenzbuffer. usw usf.

recht kriminell ist auch, wenn der user die möglichkeit haben soll, dass der sequencer bei 13 steht, während dort eine note aufgezeichnet ist, die von 9 bis 15 geht. soll die note dann bei 13 noch mit abgespielt werden wenn man start drückt?
möchte man all notes off bei stop oder auch bei pause?
global oder pro channel?
diese fragen müssen zuerst geklärt werden und das design richtet sich dann nach diesen anforderungen.
 
Zuletzt bearbeitet:
noten werden nicht gehalten
Das ist schon klar. Der Sequencer haut ja nur ein paar Daten zum richtigen Zeitpunkt raus. Und diese Zeitpunkte berechne ich anhand der Notenlänge. Das wollte ich damit ausdrücken. 120 BPM, halbe Note, nächte Note 250 ms später senden. Sorry, da habe ich mich fasch ausgedrückt.

Aber: Note on/off Ereignisse. Ist das Standard für Sequencer? Ich fürchte, dass die MIDI Implementierung auf dem Organelle das nicht unterstützt. Ich gehe aber mal davon aus, dass die Synthies das auch ohne on/off hinbekommen? Wenn nicht wäre das blöd...
ist der rest eine reine frage der interpretation
Das dachte ich mir schon. Ich wollte nur sicher gehen ob nicht vielleicht doch mehr dahinter steckt.
recht kriminell ist auch, wenn der user die möglichkeit haben soll, dass der sequencer bei 13 steht, während dort eine note aufgezeichnet ist, die von 9 bis 15 geht.
Es gibt ja keine Positionen in dem Sinne. Es ist ja einfach eine Abfolge von Noten (und Pausen) die mit einer Länge bis zur nächsten Note. Im Grunde wie das Notenblatt.

Okay, dann bin ich erstmal auf demrichtigen Weg, denke ich.
 
Aber: Note on/off Ereignisse. Ist das Standard für Sequencer? Ich fürchte, dass die MIDI Implementierung auf dem Organelle das nicht unterstützt.
Note on/off ist ein fester Bestandteil des Midi Protokolls. Kann ich mir nicht vorstellen, dass ein Synth der vorgibt MIDI zu sprechen das nicht unterstützt. MIDI ist ja ein live Protokoll. Da kann man ja im Vorhinein nicht wissen, wie lange eine Note gehalten wird (wird ja nicht nur von Sequenzern gesprochen, sondern auch von reinen MIDI Keyboards).

Einige Sequencer haben für ihr "Grid" (meistens in 16-tel Noten organisiert) häufig für jede Note (aka Anschlag) auch einen Haltelängen Parameter. Also wen nicht mir z.B. den Sequencer von der MC 707 ansehe, dann sind die "Triggerpukte" als 16-tel organisiert und dann gibt es noch die Notenlänge und ein Offset (um Noten nicht exakt am 16-tel Rasterpunkt auszulösen).
 
Es gibt ja keine Positionen in dem Sinne. Es ist ja einfach eine Abfolge von Noten (und Pausen) die mit einer Länge bis zur nächsten Note. Im Grunde wie das Notenblatt.
Praktisch alle Sequencer die ich kenne haben solche "Positionen" in einem meist 16-tel Notenraster. Man kann gelegentlich die Rasterung hochmultiplizieren, dann sind es entsprechen mehr Positionen pro Takt (also z.B. auf 32-tel oder 64-tel).
 
Aber: Note on/off Ereignisse. Ist das Standard für Sequencer?

ganz ehrlich: orientiere dich nicht an anderen, mach es so wie es dir passt. im idealfall probierst du beides mal aus.

Ich gehe aber mal davon aus, dass die Synthies das auch ohne on/off hinbekommen? Wenn nicht wäre das blöd...

nein für midi muss man das - im gegensatz zu einem eigenen pd synth - schon zum schluss wieder "normal" machen. aber notieren und verarbeiten kann man es prima als "notenumber velocity länge".

vermutlich ist dir [makenote] nicht unbekannt - jetzt baust du dir noch einmal das gegenteil davon, und dann kannst du zwischen beiden formaten hin und her konvertieren.

eingehendes midi "145 60 127, 145 60 0" wird dann direkt als "60 127 333" aufgenommen, wobei 333 die millisekunden zeitdifferenz zwischen note on und note off sind.

einer der diversen vorteile davon ist, dass das voicing (das zuordnen von stimmen zu alternierenden zielen) ohne dieses lästige note off jetzt viel einfacher ist weil du dafür keine busymap mehr erstellen brauchst sondern einfach nur noch cycle oder gate benutzt - oder prepend 1 oder was auch immer euer komisches clone object dafür braucht.
das "note off" erzeugt der pd synth dann intern mit einem delay dann selbst. (oder mit makenote, ist erst mal einfacher für den anfang)

oder stell dir vor du willst deine midi sequenz beim abspielen live transponieren. gleiches problem. du kannst dir sicher vorstellen, was passiert, wenn ich nach 145 60 127 eine funktion +5 auf die notennummer anwende und danach soll 145 60 0 abgepielt werden um die note zu beenden. :) mit dem note-velocity-länge format passiert das nicht.

Okay, dann bin ich erstmal auf demrichtigen Weg, denke ich.

sicher, du kannst auch direkt in delta-zeit und zusammenhängen denken.

was üblicher ist und welche DAW das wie macht kann ich dir nicht sagen, außer dass es definitiv beides gibt.
 
Zuletzt bearbeitet:
"Standard für Sequencer?"

das sind eben 2 von vielen unterschiedlichen konzepten, wie man mit "ablaufautomatisierung"
bei musik umgehen kann.
kommt drauf an, ob man noten mit dem keyboard einklimpert (der sequenzer kann ja nicht vorher
wissen, wann man gedenkt die taste wieder loszulassen),
oder in eine partitur einhackt (dann weiss man die dauer (vermutlich) schon zum startzeitpunkt des events).

oder man hat garkeine 'events', und kuemmert sich nur um 'kontinuierliche' daten. bei meinem "drone-instrument" hab ich den ersten
nanokontrol jetzt durch, geht eben schon etwas auf die fader...

oder...

natuerlich wuerde man gerne note-on und -off in einem rutsch erledigen.
ich hab das fuer mich so geloest, dass ich das event erst beim note-off speichere, dann steht die dauer ja fest.
man hat dann eine liste aus tonhoehe, lautstaerke und dauer, die man in pd direkt an "makenote" verfuettern kann.
unerwuenschte effekte gibts dann nur, wenn man bei gehaltenen noten die aufnahme stoppt.
damit kann man leben, oder das auch abfangen.

so eine eventliste koennte man dann auch auf dem organelle-maeusekino darstellen, und landet
dann vielleicht bei sowas wie dem mmt8. was ja nichts schlechtes waere...
 
Note on/off ist ein fester Bestandteil des Midi Protokolls.
Ich habe ein Möglichkeit finden können wie man Note on/off mit PD senden kann. Scheint also doch zu gehen. Dann muss ich ja nur noch schauen wir da der Ablauf ist.
ich hab das fuer mich so geloest, dass ich das event erst beim note-off speichere, dann steht die dauer ja fest
Also die Dauer steht bei mir ja schon fest, da man sie ja selbst für eine Note angeben muss. Also wird On vor der eigentlichen Note gesendet und Off bevor die nächste Note/Pause kommt? Im Grunde also immer Off (letzte Note), On (nächste Note/Pause)? Ich werde es natürlich auch selbst mal testen. Aber 1. habe ich hier keine ausgefeilte MIDI-Infrastruktur (die entsteht immer nur on demand) und 2. auch keine großartige Auswahl an Hardware habe um das mal auf unterschiedlichen Geräten testen zu können.
orientiere dich nicht an anderen
Dieser kleine "Alle meine Entchen"-Sequencer gefällt mir echt ganz gut. Note u. Länge, fertig. Die Pianorolle fand ich persönlich schon immer etwas nervig und ist auf dem Organelle sowieso nicht vernünftig umsetzbar. Mir kommt das entgegen. Andere wollen halt nur die eingeschränkte (4/4) Interaktion. Da ich ja nicht nur für mich patche, sondern das gern auch der Allgemeinheit zur Verfügung stelle (wobei immer fraglich ist, ob die das auch nutzt) muss ich schon auch ein wenig das bieten was man so "gewohnt" ist. Viele möchten halt da nicht so kompliziert herum machen. Die würde ich auch schon gern abholen. Und bis zu einem gewissen Grad wird das auch möglich sein. Aber primär sollen natürlich meine eigenen Bedürfnisse und Vorstellungen erfüllt sein. ;-)

Bald habe ich Urlaub. Da werde ich mich an das Thema mal dran setzen.

Es gibt ja noch weitere Fragen. Sync mit einer externen Clock, oder auch selbst als Clock agieren. Zum Beispiel. Aber eins nach dem anderen.
 
Begreifst die Note als eine Datenstruktur mit den Bestandteilen Kanal, Position, Tonhöhe, und Dauer, kommst du leicht in den Nebel der Midispezifikation. Sobald du Töne mit gleichem Pitch überlappen lässt, ob bewusst oder weil du nen Fehler gemacht hast, verlässt du dich auf das Midigerät, dass es die für dich richtige Entscheidung trifft. Gibt ja nur zwei Möglichkeiten, implizites Note-Off oder spätere Note ignorieren.
 
Sobald du Töne mit gleichem Pitch überlappen lässt

so ist es. es gibt ganz viele gute gründe, die dinge einfach mal anders zu machen als normal. man sollte midi halbwegs kennen (vor allem wenn man es am ende ausgeben will), aber man muss es nicht benutzen. innerhalb einer software benutzt man die datenstruktur, die man am besten versteht.

er hat "musiktheorie" in der überschrift stehen. und er hat recht damit, dass das in dem zusammenhang überhaupt nicht deplatziert ist. :)
 
Sobald du Töne mit gleichem Pitch überlappen lässt
Genau das schließe ich ja eigentlich aus. Denn zwingend wird der Sequencer mit der nächsten Note/Pause warten müssen bis die angegebene Zeit (die der aktuellen Note/Pause) dafür verstrichen ist. Was dann auf dem Endgerät passiert ist natürlich nicht unter meiner Kontrolle. Aber genau das wird halt das Verhalten des Sequencers sein. Wenn du z.B. einen zweiten Track auf demselben MIDI-Kanal laufen hast ist das dein Problem und nicht das des Sequencers.

Egal welches Instrument man nimmt: es kann immer nur einen Ton zu einem Zeitpunkt erzeugen. Dieser Ton kann natürlich auch ein Akkord sein. Ein Ton der sich selbst überlagert... Ich weiß gar nicht wie ich mir das vorstellen soll. In der Realität jedenfalls nicht. Dass man ein Gerät durch einen Fehler im Kommunikationsprotokoll verwirren kann ist schon klar. Aber einen konkreten Anwendungsfall sehe ich hier nicht.

Aber genau diese Funktionalität sollte halt auch sauber für das Endgerät ablaufen. Damit der User weiß, was er machen kann und was nicht. Wie einen zweiten Track auf demselben Kanal. Was dann zu sich überlagernden On/Offs führen kann.
man sollte midi halbwegs kennen
Auf jeden Fall. Aber aus meiner Sicht ist das Konzept hier relativ unkompliziert und lässt sich im vorgegebenen Rahmen Note/Länge/Velocity/Kanal gut umsetzen. Oder ich lasse eine Kanalinformation auf Noten/Pausen-Ebene gar nicht erst zu. Das macht Elektron ja schließlich auch nicht anders. Da ist es, so viel ich weiß, an den Track gebunden. Irgendwelche MIDI-Schmankerl sind erstmal raus. Dass mit der Zeit vielleicht noch dieses oder jenes hinzukommen wird möchte ich aber gar nicht ausschließen. Aber am Anfang steht erstmal genau dieses Konzept.
innerhalb einer software benutzt man die datenstruktur, die man am besten versteht
Sehe ich auch so. Aber: Nun habe ich schon viele Infos die geeignet sind über MIDI versendet zu werden. Und das ist ja jetzt erstmal nicht so kompliziert. Es kostet damit nicht so viel und bietet sich für mich also an. Dann kann man den Organelle tatsächlich auch als "MIDI-Tracker"/Sequencer für alles Möglich nutzen. Fände ich schon ganz cool.
er hat "musiktheorie" in der überschrift stehen
;-) Sobald ich was mache was in etwa wie das gute alte Notenblatt funktionieren soll, bin ich ja quasi vollautomatisch im Überbegriff "Musiktheorie".
 
Egal welches Instrument man nimmt: es kann immer nur einen Ton zu einem Zeitpunkt erzeugen

außer natürlich saiteninstrumente. oder die synths vom 110. oder synths, die MPE unterstützen.

im grunde genommen auch alle geräte, die custom tuning tables erlauben.

und natürlich saiteninstrumente.

einem sequencer, der nur "länge" abspeichert und wiedergibt, kann das auch egal sein, der kann immer beides.


beim erstellen von midi-streams oder -dateien musst du so oder so zur sicherheit darauf achten, dass eine running note beendet wird, falls der gleiche key aus irgendwelchen gründen noch mal startet.

und solche gründe kommen schneller als wie man denkt.

einfaches beispiel: der user spielt erst eine melodiefolge ein und ändert dann die notenlängen um 300%. jetzt überlappt sich alles mögliche. wozu nun sollte man das schon im datenspeicher zusammenschnippeln? es langt vollkommen, das später beim formatieren der midi bytes zu machen.

wobei du ja dort dann auch alternativen dazu hast, wie z.b. doppelte noten einfach einen kanal weiterzuschieben.
für bewegte flächen aus einer hardware mit multimode nicht die schlechteste idee...


faustregel: schließe nichts aus, denn man weiß nie, was man morgen so alle brauchen wird. baue also alles so generisch und gleichzeitig so vollendet wie es geht. :)
 
Zuletzt bearbeitet:
Früh wissen, dass man am Ende (auch?) MIDI machen will, ist aber wichtig. Nicht so wie der Ersteller dieses Beitrags, auch Sequencer-/Soundprogrammierer (Hobby): Erst eigenen Mist machen, sich dabei ganz sicher sein, dass MIDI nicht imstande ist, die eigene Musik so abzubilden wie man es für richtig hält ... aber Obacht, wenn dann etwa ein Digitalpiano oder ein Synden$izer ins Haus kommt und man erkennt, dass da ein Midiport dran ist und dass darüber Mididateien aus dem Netz ganz gut abgespielt werden können, schöner als das mit der eigenen Soundengine geht ... wachsen halt Begehrlichkeiten und das Unheil manch bitterer Erkenntnis nimmt seinen Lauf.

Dieser Ton kann natürlich auch ein Akkord sein. Ein Ton der sich selbst überlagert... Ich weiß gar nicht wie ich mir das vorstellen soll.
Siehe dort, das Unheil am Horizont. Habe ja nicht umsonst – in Bezug auf MIDI – von Tönen gleicher Höhe (Pitch number) gesprochen, nicht von Akkorden. Du musst halt dafür sorgen, dass das Offset eines Tons relativ zum Offset, also der Startposition des vorhergehenden Tons interpretiert wird. Und dass er nur dann die gleiche Tonhöhe haben darf, wenn sein Offset mindestens der Dauer des vorhergehenden Tons entspricht. Dann ist es soweit ganz MIDI-safe.
 
Zuletzt bearbeitet:
außer natürlich saiteninstrumente
Klar kannst du da dieselbe Tonhöhe auf zwei Saiten parallel anspielen. ;-) Ist für mich aber trotzdem ein Ton. Aber lass uns daran nicht festbeißen. Ich hab's ja grundsätzlich schon kapiert. ;-)
und ändert dann die notenlängen um 300%
Also der User erhöht sie um 300%. Ist doch ganz einfach. Da wird aus z.B. einer halben Note eine 1,5er Note. Ach Mist, die gibt's ja gar nicht. Ja, das ist dann natürlich schon ein Problem. Aber was wird aus einer halben Note die drei Mal so lang sein soll? In Bezug auf was? Den Takt? Du hast 4 4tel Noten, wie verlängert man die um 300%? Ehrlich gesagt, da habe ich erstmal keine Ahnung. Ich wusste bisher auch nicht, dass so was überhaupt notwendig sein könnte. Allerdings ist es ja reine Mathematik. Das sollte also irgendwie darstellbar sein. Und: die Anwendung muss solch ein Feature auch erstmal anbieten. Solange das nicht der Fall ist kann der User die Noten auch nicht um 300% verlängern.

Auf dem Organelle hast du auch gar keine Möglichkeiten wer weiß was für Funktionen anzubieten. Da fehlen einfach die interaktiven Elemente. 4 Potis, ein Encoder, ein freier Button, eine LED. Plus eine Zwei-Oktaven-Tastatur die aber schon benötigt wird um die Note komfortabel auszuwählen.

1722870236349.png

Aber gut, dass du das Thema (indirekt) anschneidest. Da werde ich mir echt Gedanken machen müssen. Ich sitze nebenbei sowieso an einem neuen UX-Konzept. Der Organelle-Benutzer erwartet einfach was Geiles + ein paar interaktive Möglichkeiten um was noch Geileres zu bekommen. Ich kenne sogar einen "Musiker", der mit all diesen Patches relativ bekannt geworden ist und wahrscheinlich sogar davon lebt.
Früh wissen, dass man am Ende (auch?) MIDI machen will, ist aber wichtig
Ja sicher. MIDI ist gesetzt.
Erst eigenen Mist machen, sich dabei ganz sicher sein, dass MIDI nicht imstande ist, die eigene Musik so abzubilden wie man es für richtig hält
Sei nicht zu hart mit dir selbst. Mir ist nun wenigstens klar geworden, dass ich nicht nur einfach ein paar Daten irgendwo hin schicken sollte.

Ich denke, dass ich zumindest das Problem der mehrfach gesendeten Note behandeln sollte und zwingend ein Off senden sollte bevor die Note erneut gesendet wird.
 
Also der User erhöht sie um 300%. Ist doch ganz einfach. Da wird aus z.B. einer halben Note eine 1,5er Note.

ich meine was anderes. wenn du aufeinanderfolgende viertelnoten hast, die z.b. mit einem keyboard eingespielt wurden, und diese dann um 300% verlängerst, dann können sich dadurch hinterher bis zu 3 noten der gleichen tonhöhe überlappen.

falls das ziel zum schluss ein midi expander ist, kann dieser das ja nicht so verarbeiten.

es gibt nun 3 möglichkeiten damit umzugehen:

- das so zu speichern, darzustellen, und das midi auch so falsch auszugeben
- das so zu speichern, darzustellen, und das midi dann aber korrekt nach anwenung einer "voice stealing" funktion auszugeben
- das so zu speichern, es aber als legato darzustellen und auszugeben
- das erst gar nicht so zu speichern und überlappungen immer sofort zu clippen.

für die letzte version gibt es meiner auffassung nach keine sinnvolle begründung.

es wäre einfach nur eine einschränkung für denkbare spätere anwendungen des sequencers, die das dann plötzlich doch brauchen und können.
 
und diese dann um 300% verlängerst, dann können sich dadurch hinterher bis zu 3 noten der gleichen tonhöhe überlappen.
Das ist halt etwas was ich mir nicht konkret vorstellen kann. Eine viertel Note ist eine viertel Note. Warum sollte ich die verlängern wollen? Das mit der Überlappung ist in der Theorie schon klar.

Wenn ich das in MIDI sehe dann bedeutet eine "Verlängerung" wahrscheinlich, dass das Note Off eben nicht nach 1/4 sondern 3/4 der Taktlänge kommt. Und dann überschneiden sich die Noten (oder On und Off) tatsächlich. Meinst du das?

Das sehe ich bei meinem "Sequencer" halt nicht da ich die Länge explizit angeben muss. Man kann sie nur verlängern indem man eben die Länge von 1/4 auf z. B. 1/2 umstellt. Ein ganz anderes Thema ist da eher, was dann mit den Folgenoten passieren soll. Die verschieben sich dann ja um 1/4. Aber ich denke, dass man dieses Problem grundsätzlich immer hat. Egal, womit man arbeitet. Das Problem hätte ich in der DAW ja auch. Nur habe ich da andere interaktive Möglichkeiten um das schnell anpassen zu können.
 
Das ist halt etwas was ich mir nicht konkret vorstellen kann. Eine viertel Note ist eine viertel Note. Warum sollte ich die verlängern wollen? Das mit der Überlappung ist in der Theorie schon klar.
ich würde mir bei der Konzeption eines (Step-)Sequencers vielleicht eher eine Piano-Roll-Ansicht vor Augen führen als die schriftliche Notation auf dem Notenblatt. Die ist in mancher Hinsicht (in meinen Augen) ein Kompromiss, und erlaubt - gerade wenn es um digitale Umsetzung geht - manche Darstellung nur umständlich.

Nach meiner Erfahrung ist die Unterscheidung zwischen Viertel- Achtel- und halben Noten im Rahmen eines Sequencers weniger die zwischen Notenlängen (weil der Abstand zwischen Note-On und Note-Off und damit die Notenlänge jederzeit geändert werden kann, ohne dass sich die Position (der Startzeitpunkt) darauffolgender Noten ändert), als die der Position bzw. der Anordnung der Note-On Events im Taktraster. Schreibst Du auf einem Notenblatt hinter einer Viertelnote einen Punkt, wird daraus rechnerisch ja eine 3/8tel-Note, und die danach notierte Note (wir gehen mal von einer monofonen Melodielinie aus) würde entsprechend später erklingen (und du müsstest sie ggf. kürzen, damit du das Taktende nicht überlappst). Bei einem Sequencer hat die Änderung der Spieldauer einer Note erst mal keinen Einfluss auf den Startzeitpunkt anderer/folgender Noten. (Man könnte das natürlich so implementieren, aber das könnte kontraintuitiv sein)

Ich weiß gerade auch nicht aus derm Gedächtnis, wie gängige DAW überlappende Noten derselben Tonhöhe handhaben, würde mich aber nicht wundern, wenn oft die Note-On und Note-Off einfach stur abgespielt werden, und es Sache des Klangerzeugers ist, wie er das handhabt. Wenn der Klangerzeuger bei eintreffendem Note-Off immer zuerst die am längsten klingende Stimme abschaltet, dürfte das auch in vielen Fällen nicht stark auffallen. Ein C halten, und mehrere kurze weitere C-Noten spielen, während die zuerst angeschlagene Note weiterklingt, geht dann natürlich nicht. ;-)
 
Das ist halt etwas was ich mir nicht konkret vorstellen kann. Eine viertel Note ist eine viertel Note. Warum sollte ich die verlängern wollen?

die dauer der midi note ist häufig mit dem sustain des instruments verbandelt.

kennst du das nicht, dass du ein anderes patch anwählst und plötzlich stimmen die längen nicht mehr? das hat doch jede sequencer software seit 35 jahren.

ich meine wenn du es nicht brauchst, um so besser.


ja, es kann sein, dass es passiert. und es ist im zweifelsfalle einfacher, dass erst beim midi daten formatieren das zu lange zeugs abzuschneiden und es ansonsten zu ignorieren.

Das sehe ich bei meinem "Sequencer" halt nicht da ich die Länge explizit angeben muss.

wenn du eine offline edit funktion "3 mal so lang machen" auf folgenden bereits gespeicherten datensatz anwenden willst:

000ms: 60 127 125
250ms: 61 127 125
500ms: 62127 125
750ms: 62 127 125
1000ms: 63 127 125

dann bekommst du:

000ms: 60 127 375
250ms: 61 127 375
500ms: 62127 375
750ms: 62 127 375
1000ms: 63 127 375

...das note off der ersten 62 liegt jetzt hinter dem note on der zweiten 62.


das gleiche passiert auch in echtzeit mit folgender spur:

100ms: 60 127 99
200ms: 60 127 99
300ms: 60 127 99
400ms: 60 127 99

...sobald du das shuffling zuschaltest oder die BPM ein wenig erhöhst.


Nach meiner Erfahrung ist die Unterscheidung zwischen Viertel- Achtel- und halben Noten im Rahmen eines Sequencers weniger die zwischen Notenlängen [...] als die der Position [..] im Taktraster.

exakt.

das ist die sache mit den "pausen events" bei "alle meine entchen" aus dem markov thread.

wobei es egal ist wie man es nennt, wichtig ist nur, dass man sich des unterschieds bewusst ist.

in einem sequencer kann man problemlos auch ein phrase in legato "notieren", indem die länger (ergo das note off) schon nach 1 ms kommt - und den rest macht dann die hüllkurve vom elektronischen musikinstrument.

genau wie mn umgekehrt auch das ausklingverhalten durch die notenlänger im sequencer ändern kann.

ich persönlich würde nie davon ausgehen, dass man selbst - ganz zu schweigen von "mitbenutzern" - immer gleich arbeiten möchte.
 
Zuletzt bearbeitet:
das ist die sache mit den "pausen events" bei "alle meine entchen" aus dem markov thread.
Wenn du auf andere Threads verweist, kann es sein, dass jemand interessiertes da nachlesen mag. Mangels Link kann er oder sie das hier nicht. Meinst du diesen von mir erstellten? Und ja, ich hab nach Markov gesucht, wenn auch nur im Titel.
 
Ihr macht mich feddisch...

kennst du das nicht, dass du ein anderes patch anwählst und plötzlich stimmen die längen nicht mehr?
Nee, kenne ich tatsächlich nicht. Wie ich eingangs schrieb habe ich damit kaum Erfahrung da ich bisher nicht großartig automatisiert habe. Ich spiel noch alles selbst (oder versuche es zumindest), da ich mit diesen krass repetitiven Ton und Rhythmus-Strukturen ein Problem habe. Daher habe ich in meinem Leben auch keine E-Musik gehört. Bis auf Ausnahmen natürlich. Das Ganze ist sowieso nur aus einem Experiment heraus entstanden. Und für das benötige ich einen Sequencer. Markov (siehe Thema PD) war da ein Teil genauso wie Euclid, Bernoulli und auch Poly-Rhythmik. Alles nichts Neues. Ich bin halt nur neugierig. Aber für alles in der E-Musik wird ja irgendwie ein Trigger benötigt. Daher ist der Sequencer eine weitere Komponente aus dem späteren Gesamtkomplex. Und MIDI nehme ich hier gleich mit weil es sich anbietet.
indem die länger (ergo das note off) schon nach 1 ms kommt - und den rest macht dann die hüllkurve
Tatsächlich dachte ich, dass das sowieso genau so angewendet wird. Daher hatte ich auch keine Idee von Note on/off. Eher ein Trigger als eine tatsächliche Anweisung wie lange eine Note gehalten werden soll. Aber im Grunde versucht man ja (historisch betrachtet) ein Keyboard zu simulieren. Und da gibt's genau dieses Szenario ja auch.
Piano-Roll-Ansicht vor Augen führen als die schriftliche Notation auf dem Notenblatt
Genau das ist auf dem Endgerät mit dem grafischen Display zwar nicht gänzlich unmöglich, aber doch ziemlich aufwendig. Für den Benutzer wäre das natürlich angenehmer. Auf dem Organelle aber hart zu implementieren.

Also: für mich habe ich das nun so definiert, dass man eben Note, Notenlänge (zwischen 1/1 - 1/32, keine 3/8 oder sowas), Volocity und MIDI-Kanal. Die Notenlänge ist eher als Abstand zum nächsten Event zu sehen. MIDI on/off werde ich berücksichtigen.

Ich denke, dass damit schon durchaus was geht und jeder der PD nutzt (oder den Organelle) es theoretisch sinnvoll benutzen kann. Theoretisch deswegen, weil daran möglicherweise gar kein Interesse besteht. Ich mache ja nichts Neues. Für mich ist das dann die Basis für meinen (für mich) experimentellen Patch, bei dem es sich hauptsächlich um das Thema Wahrscheinlichkeit dreht. Ich habe da so viele Ideen (alle nicht neu höchstwahrscheinlich), die ich halt gern mal umsetzen möchte.

kann es sein, dass jemand interessiertes da nachlesen mag
Das kannst du hier nachlesen:

Implementierung einer statischen Markov Chain woraus dann eine dynamische Variante entstanden ist.

 
Genau das ist auf dem Endgerät mit dem grafischen Display zwar nicht gänzlich unmöglich, aber doch ziemlich aufwendig. Für den Benutzer wäre das natürlich angenehmer. Auf dem Organelle aber hart zu implementieren.
klar. Mir ging es dabei auch eher um die Vorstellung "im Kopf" (auch, was überlappende Noten betrifft) - da ist die Blattnotation m.E. nicht ganz das geeignetste Konzept. Für das Interface auf der Organelle kann man ja dennoch eine Noten- oder Eventliste verwenden. 🤷‍♂️

Worauf ich hinauswollte: In einer DAW bzw. einem Sequencer sind 4 aufeinanderfolgende 16tel-Noten mit der Länge 1/16el ebenso "Sechzehntel" wie 4 aufeinanderfolgende 16el-Noten mit der Länge 1/23tel (oder beliebiger Länge, bei unterschiedlicher Tonhöhe auch gerne zeitlich überlappend). Auf dem Notenblatt müsstest du schon für zweites 32el-Noten mit jeweils einer 32el-Pause danach notieren (oder mit einer Stakkato-Kennzeichnung arbeiten), und bei Längen, die noch weiter abweichen ggf. weitaus komplexere Notationen.

So wie ich dich verstanden habe, möchtest du pro Midikanal auch nur monophone Melodieführung oder exakt gleichzeitig angeschlagene Akkorde zulassen? Oder komplett polyphon? Gerade, wenn man das Live-Einspielen per MIDI erlaubt, wird es natürlich unterschiedliche Überlappungen mit einem Mix aus Akkorden, Arpeggios (bzw. gebrochenen Akkorden), Legato und Stakkato zu tun bekommen. Pausen würde ich im UI eines Sequencers keinesfalls darstellen, sofern diese Darstellung einem Tracker (Notenliste) ähnelt, und du nicht auf ein festes Zeitraster (z.B. 16el) quantisierst (bei einer Ansicht mit proportionaler Zeitachse (wie dem Pianoroll) ergeben sich die Pausen natürlich automatisch auf visueller Ebene).
 
Also: für mich habe ich das nun so definiert, dass man eben Note, Notenlänge (zwischen 1/1 - 1/32, keine 3/8 oder sowas), Volocity und MIDI-Kanal. Die Notenlänge ist eher als Abstand zum nächsten Event zu sehen. MIDI on/off werde ich berücksichtigen.
Das die Notenlänge der Abstand zum nächsten Event sein sollte dachte ich mir schon. Aber es gibt bei den Sequenzern in der Regel auch eine Notenhaltedauer. Das ist die Zeit, die die Taste gehalten wird. typischerweise lässt man sie los, bevor man die nächste drückt. Für einen optimalen Klang möchte man gerne einstellen können, wie viel vor der nächsten Note man die davor los lässt. Du könntest ja dafür einen weiteren wert "Prozent Haltedauer" einführen. Der geht dann von 0 bis 100 wobei 100 heisst, dass das Note Off unmittelbar vor dem nächsten Note on gesendet wird.50 würde heissen, das eine 1/4 Note nur 1/8 lang gehalten wird. Die nächste 1/4 Note wird dann trotzdem nach 1/4 Zeit angespielt. Zwischen note off und nächsten note on währe dann entsprechend 1/8 Zeit. Damit kann auch das Timing nicht kaputt gehen und eine Überlappung ist ausgeschlossen.
 
Zuletzt bearbeitet:
Ich spiel noch alles selbst (oder versuche es zumindest)

oh, du bist hand-einspieler.

ich ging also zu unrecht davon aus, dass natürlich jeder mensch irgendeine DAW kennt oder irgendeinen analogseqeuncer hat.

da ich mit diesen krass repetitiven Ton und Rhythmus-Strukturen ein Problem habe. Daher habe ich in meinem Leben auch keine E-Musik gehört.

"krass repetiv" ist wohl eher bei techno und weniger bei klassik zu finden. :)

Alles nichts Neues. Ich bin halt nur neugierig.

es kommt nur darauf an, dass es für dich selbst neu ist. es gibt nichts besseres als werkzeuge selbst zu bauen.

Aber für alles in der E-Musik wird ja irgendwie ein Trigger benötigt.

und keine sorge: dirk matten weiß auch nicht was "e-musik" ist.

Genau das ist auf dem Endgerät mit dem grafischen Display zwar nicht gänzlich unmöglich, aber doch ziemlich aufwendig. Für den Benutzer wäre das natürlich angenehmer. Auf dem Organelle aber hart zu implementieren.

die idee mit den vier trackermäßigen zahlenkolonnen ist doch in ordnung. mehr würde für ich für das display auch nicht machen wollen.
 
oh, du bist hand-einspieler
Ja genau. Bei der DAW weiß ich, wo der Aufnahmeknopf sitzt. Kostprobe:


Das war für die Jazz-Battle. Wobei mich ein Fori fragte ob das komplett in der DAW entstanden sein. Ich war dann einen Moment eingeschnappt. Sehr produktiv bin ich aber nicht. Ich mache einfach zu viel in PD momentan. Scheint mich irgendwie zu fesseln.
"krass repetiv" ist wohl eher bei techno und weniger bei klassik zu finden
Ja, da habe ich etwas sehr verallgemeinert. Natürlich höre ich auch Musik die mit elektronischen Klangerzeugern entstanden ist. Sonst wäre ich hier im Forum ja auch irgendwie falsch.
Sagt mir jetzt nüscht. ;-)
möchtest du pro Midikanal auch nur monophone Melodieführung oder exakt gleichzeitig angeschlagene Akkorde zulassen? Oder komplett polyphon?
Das kommt ein wenig darauf an wie ich den Screen des Organelle ausnutzen kann. Es sind lediglich 5x21 Zeichen. Um alle Statusinfos darzustellen verdammt wenig. Den Rest deines Beitrages muss ich mal in Ruhe lesen.
Damit kann auch das Timing nicht kaputt gehen und eine Überlappung ist ausgeschlossen.
Guter Ansatz. Ich bin mit dem Gerät halt eingeschränkt. Da muss ich schauen wie ich Funktionen unterbringe und sie dann auch noch halbwegs effizient nutzbar sind.
die idee mit den vier trackermäßigen zahlenkolonnen ist doch in ordnung
Denke ich auch. Fürs Erste werde ich das wohl auch so machen. Muss ja nicht gleich der perfekte MIDI-Sequencer werden. Mittlerweile ist alles schön modular. Da sind Erweiterungen nicht so das Thema.

Schlimm aber ist das Datenmanagement in PD. Wie viel Zeit ich da jetzt schon verballert habe... Aber mittlerweile läuft's ganz gut.
 


Neueste Beiträge

News

Zurück
Oben