Das Echtschlag Muster

Dieses Thema im Forum "DAW / Komposition" wurde erstellt von mc4, 14. April 2011.

  1. mc4

    mc4 Tach

    Aus meinem Sequenzer-Entwicklungslabor

    Heute eine Frage/Bitte an euch:
    Gibt es eigentlich ein text-basiertes File-Format zum Abspeichern, Austauschen
    und Editieren einfacher Sequenzen?

    Falls ihr eine Software kennt, die Klartext reden und schreiben kann, wäre ich
    für einen Hinweis dankbar.

    MusicXML und CSound sind hierfür Overkill.
    Ich suche etwas Einfaches mit geringer Redundanz.

    ---------------------------------------------------------------
    Mein Vorschlag wäre: Der RealBeat Pattern / Das Echtschlag Muster ;-)

    - Jeder Trigger steht auf einer eigenen Zeile
    - die zeitliche Position wird in der Form Schlag.Prozent notiert
    - der Positionsangabe folgen 0..n Eigenschaften
    - Standardeigenschaft ist eine Zahl von 1-128, die
    eine Midinote oder eine Samplenummer angibt
    - die Sequenz wird immer von einer Zeile ohne Eintrag abgeschlossen,
    damit die Gesamtlänge berechnet werden kann.
    - Zeitangaben ohne weitere Werte sind erlaubt, werden ignoriert

    Beispiel:
    1.00
    2.00 3
    4.00 4
    4.50 1
    4.75 2
    5.00

    Dieses Pattern stellt einen einzelnen 4/4 Takt dar.
    Es könnte eine Snare spielen, mit den Sounds 1 bis 4.
    Die Schläge liegen auf Beat 2 und 4,
    sowie auf den letzten beiden Sechzehnteln:
    4.50 ist die Mitte des vierten Schlags, also die zweite Achtel des Beats
    4.75 ist die vierte Sechzehntel des Beats (0.00 0.25 0.50 0.75 )
    Der erste Beat ist eigentlich nicht nötig, man kann aber
    Zeitpositionen ohne Parameter angeben, um später etwas nachzutragen
    oder testweise etwas herauszulöschen.
    5.00 markiert das Ende, der Pattern ist somit genau einen Takt lang.

    Zunächst hatte ich eine Beat.Tick Schreibweise, da ich intern
    MidiTick Auflösung mit 24 ticks per Viertelnote verwende.
    Das wäre aber nicht austauschbar.

    Mit der Prozentangabe könnte jeder Sequenzer die bestmöglichste
    Umrechnung intern machen und beliebige Auflösungen sind möglich.

    Erweiterungen:
    In die Zeile könnte man weitere Eigenschaften, wie Velocity, Tonlängen etc
    schreiben. Jede Angabe wird von einem Prefix Buchstaben eingeleitet.

    Beispiel:

    g25 steht für 25% Gate
    v90 steht für 90% Lautstärke

    Ich hoffe , ich konnte mich halbwegs klar ausdrücken.
    Für Anregungen bin ich dankbar.
     
  2. Anonymous

    Anonymous Guest

    Hier etwas was ich benutze:

    Code:
    dru=x.x-x-x.;
    
    Das Schlagmuster wird mit x oder - oder . angegeben. x bedeutet Note, - bedeutet Verlängerung, . bedeutet Pause. Die Länge von "x" kann mit einem anderen Befehl bestimmt werden, z.B. anc = 48, 48 entspricht der Länge einer 1/8tel Note. Dieses Pattern wird dann immer wiederholt bis zu einer Länge, die man über den Befehl len festlegen kann.

    Für diverse andere Sachen gibt es andere Befehle, wie für Notenwerte, Controller, Tempo usw.

    Damit kann man ganz leicht verrückte Patternideen ausprobieren, da man mehrere Rhythmuspatterns einfach überlagern kann, z.B. für Polyrhythmen und mehr. Ist halt nicht für real-time gedacht, sondern wenn man eine Patternidee hat und schnell zum Ergebnis kommen möchte, in Form einer Midi-Datei.

    Das Schöne an dieser Methode ist, dass man wirklich nur die Kernidee als Text aufschreibt, den Rest, also alles was lästige Kopiererei wäre erfolgt durch das Tool. Auch die Gesamtlänge kann mit len = 32 angegeben werden, die Einheit von len sind Beats, also Viertelnoten, 32 entsprechen also genau 8 Takten bei 4/4.

    Das habe ich vor mehr als 6 Jahren geschrieben, also auch schon länger nicht benutzt. :)

    Wenn Du aber irgendwelche Screenshots eines Notenpatterns aus Cubase/Logic/Live hier einfügst, kann ich probieren meine Textvariante davon hier aufzuschreiben und kann dann z.B. mit Deiner RealPattern Variante hier verglichen werden bezüglich Vor- und Nachteile sowie weitere Ideen. Hier kann nun interessante Patternforschung betrieben werden. :D
     
  3. mc4

    mc4 Tach

    Danke für deine Mithilfe.
    Dein Pattern mit x, Verlängerung und Pause ist für Trigger tatsächlich die ideale Kurzform.
    Für einfache rhythmische Sachen hatte ich so etwas auch schon integriert und werde es
    auch beibehalten.

    Komplizierter wird es bei mehreren Tracks, bei denen jedes Instrument auch noch viele
    Automatisierungen benutzt. Möchte man hier jedes Instrument einzeln schreiben oder eine
    Art Gruppierung haben?
    So ein Score wird bei 20 Tracks und 5 Automatisierungen schnell unübersichtlich.

    Bisher habe ich noch keine ideale Lösung gefunden.

    Mein Sequencer-Framework arbeitet intern mit interpolierten Keyframes, also zeitlichen
    Positionen, denen beliebige Parameter zugeordnet werden können.

    Diese Parameter sind sowohl die Grundeigenschaften der Note ( Pitch, Gate, Velocity ), als auch
    weitere Klangeigenschaften wie zum Beispiel Filterung und Modulationen.

    Die Art der Interpolation (truncated, linear, catmull-rom, quantized ) kann per
    Schritt (also zwischen zwei Keyframes) eingestellt werden. Soweit ich weiss ist diese
    Technik für einen Sequencer völlig neu.

    Somit geschieht zB das Setzen einer Tonhöhe unabhängig vom Triggern. Man setzt keine
    kompletten Midinoten, sondern nur den Aspekt der Veränderung.

    Beispiel:
    ------------------------------------------------------------
    Keyframes zum Zeitpunkt 0:
    Pitch 48 Interpolation:linear Quantize:scaled
    Trigger 1/16 Interpolation:none
    Gate 1.0 Interpolation:s-curve


    Keyframes zum Zeitpunkt 16.0:
    Pitch 72
    Trigger 1/16
    Gate 0.05

    Durch das Setzen dieser beiden Punkte erhalten wir :
    - eine Sequenz über 4 Takte (16 beats)
    - eine aufsteigende Melodielinie über 2 Oktaven (48..72)
    - die Noten werden an eine Skala angepasst, zB chromatisch
    - es werden durchgehend 16tel gespielt
    - die Artikulation verläuft von legato nach staccato ( Gate 1.0..0.05 )
    - die Artikulation ist aufgrund der S-Kurve ein und ausschwingend (ease-in/ease-out)


    Ich schaue gerade mal, welche Keyframe-Formate es gibt, zB im
    Animationsbereich.

    Auf jeden Fall, das hast du richtig eingeschätzt, soll das Textformat helfen,
    die Grundidee schnell und ohne Ballast festzuhalten.
    Das TextTool müsste dann Möglichkeiten bieten Tracks zu splitten, löschen
    und zu verbinden.
     
  4. Anonymous

    Anonymous Guest

    Soweit ich sehen kann fehlt bei mir bislang diese Art der "Modulation der Notenlänge per Step". Könnte ich evtl. mit neuen Befehlen realisieren, der Befehl bestimmt dann über die Länge des Notenpatterns oder die Gesamtlänge, je nachdem was man will, wie die Notenlängen per Note in der Sequenz variiert werden sollen. Bei mir gibt es bislang entweder die konstante Länge oder ich hatte noch einen Befehl um eine Notenlänge in mehrere kürzere, gleichlange Teile zu zerlegen um so 1/3, 1/5, 1/7, 1/9'tel Notenlängen zu generieren. Sowas wäre in normalen Sequencern kaum möglich. Ich glaube ich hatte da meist testweise nur 1/5'tel benutzt, da die anderen zu kurz/schnell werden und 1/3'tel kennt man sowieso über die Triplets.
     
  5. mc4

    mc4 Tach

    Wie kombinierst du mehrere Instrumente in einer Textdatei?

    Übrigens liest sich ein + als Verlängerung angenehmer:
    Code:
    x+++ x+ x+++..
    x--- x- x---..
    
    Kann man besser auszählen.
     
  6. Anonymous

    Anonymous Guest

    Code:
    ###  i
    
    len=512
    
    anc=192; cha=1; key=c-o2; vmp=10-100; 		dru=x--..; 					add;
    anc=191; cha=2; key=d-o3; vmp=100-50-110; 	dru=..x; 					add;
    anc=187; cha=3; key=f-o3; vmp=30-20-80-70-90-100-110-80-30; dru=...x; 	add;
    
    seq=i
    
    vmp bedeutet velocity-map, d.h. einfach Velocityübergänge nach diesen Werten über die gesamte Länge des Notenpatterns. Ich hatte mal versucht mit Kirchenglockenmustern zu experimentieren, im obigen Fall für das Gloria-Motiv mit c-d-f. Daneben gab es auch Motive, die Te-Deum, Pater-Noster, Parsifal, Salve Regina, Präfation hiessen. Die Informationen hatte ich von irgendwelchen Kirchenglocken-Informationsseiten. :)

    Das wären einfache ein-pitchige Notenmuster, über midi channel getrennt.

    ?
     
  7. Anonymous

    Anonymous Guest

  8. mc4

    mc4 Tach

    Klingt interessant.
    Leider läuft die Applikation nicht auf meinem Mac.
    und was Euclidean MIDI Patterns sind habe ich auch noch nicht verstanden.
     
  9. Anonymous

    Anonymous Guest

    Da könnte nur ein anderer Mac User weiterhelfen, unter Windows XP läuft es ganz gut hier. Ich habe auch festgestellt, dass man die .xml Datei beliebig selber editieren und somit auch Steps > 16 eingeben kann. Funktioniert auch. Über die GUI ist ja die obere Grenze bei 16.

    Da gibt es eigentlich nicht viel zu verstehen, die Schläge werden möglichst equidistant über die Steplänge verteilt.

    (3,:cool: bedeutet also wie verteile ich 3 Schläge möglichst equidistant über 8 Steps. Das wars schon.
     
  10. mc4

    mc4 Tach

    Danke,
    ich werde es die Tage mal auf dem anderen Rechner testen, der hat Snow Leopard drauf,
    ist ein Java Versions Problem.
     
  11. mc4

    mc4 Tach

    Aaah! Banal. :shock:
    Das wäre bei mir die Ramp Kurve für die Berechnung zwischen den Keyframes.
     
  12. Anonymous

    Anonymous Guest

    Aber die Steps sind schon quantisiert. Um Dein Keyframes Konzept zu verstehen wäre eine Visualisierung ganz nützlich, damit keine Missverständnisse auftreten.
     
  13. Anonymous

    Anonymous Guest

    In diesem banff.pdf Paper sind ja einige Beispiele aufgelistet und kommentiert:
    Quelle: The Euclidean Algorithm Generates Traditional Musical Rhythms, Godfried Toussaint,
    School of Computer Science, McGill University Montreal, Quebec, Canada godfried@cs.mcgill.ca
     
  14. Anonymous

    Anonymous Guest

    Ja, vor allem versetzt zu verbinden. :)
     
  15. mc4

    mc4 Tach

    Das sind wirklich gute Beispiel für die Grundmuster.
    Zur Visualisierung der stufenlosen Trigger mache ich morgen mal eine Grafik.

    Stell es dir wie folgt vor:
    Du unterteilst einen Takt in 8 gleiche Achtel, das wäre der einfachste Fall, linear.
    Wenn du aber statt einer stetig steigenden Linie (Sägezahn) eine andere Kurve
    nimmst, zB eine quadratische, die erst langsam, dann immer stärker ansteigt,
    so hast du eine Verschiebung der Trigger. Zum Ende werden die Noten dichter.
    Wie ein springender Ball. Es wirkt wie eine Tempo-Änderung.

    Die Notenpositionen sind dabei völlig unquantisiert, eine Quantisierung
    kann man zusätzlich hinzufügen
     
  16. mc4

    mc4 Tach

    Keine Grafik, aber hier mal die normalisierten Positionen
    für eine lineare und eine kubische Kurve:
    Code:
    linear  cubic
    1 0.0000 0.0000
    2 0.0625 0.0002
    3 0.1250 0.0020
    4 0.1875 0.0066
    5 0.2500 0.0156
    6 0.3125 0.0305
    7 0.3750 0.0527
    8 0.4375 0.0837
    9 0.5000 0.1250
    10 0.5625 0.1780
    11 0.6250 0.2441
    12 0.6875 0.3250
    13 0.7500 0.4219
    14 0.8125 0.5364
    15 0.8750 0.6699
    16 0.9375 0.8240
    Die zweite Spalte wären Sechzehntel, die dritte
    wäre ein sich verlangsamender Verlauf, der mit normalen
    Notenwerten nicht sinnvoll darstellbar ist.

    Während der gleichmässige Verlauf bei der zweiten Achtel ( 0.125 )
    3 Trigger gespielt hat, sind es bei der Cubic schon 9.
     
  17. Anonymous

    Anonymous Guest

     

    Anhänge:

  18. Anonymous

    Anonymous Guest

    Ok, soweit ist es mir nun klar. Wenn man schon die Schlagpositionen so verändern will, wäre es vielleicht auch interessant, dies dynamisch vorzunehmen, man stelle sich eine Feder vor die sich zusammendrückt und wieder entspannt, periodisch, also die bekannte Schwingung, ungedämpft oder aber auch gedämpft. Dann würde sich eine konstante Patternvorgabe auch über die Parameter der Schwingung ändern. Dann könnte man sich diese eine Feder auch als eine Sequenz von mehreren Federn mit unterschiedlichen Parametern vorstellen, z.B. eine Kette von 4 Federn, mit
    Code:
    Steps 1..4      -->    Feder 1
    Steps 5..8      -->    Feder 2
    Steps 9..12     -->    Feder 3
    Steps 13..16    -->    Feder 4
    Wie die Rhythmen dann wohl klingen werden? Nach Schrott?! :?
     
  19. mc4

    mc4 Tach

    Ich stelle heute mal ein Klangbeispiel rein.
    Nichtlineare Trigger wirken wie Tempoveränderungen, sind deshalb
    in der Regel für kurze Rolls und Wirbel einsetzbar.
    Leichte Verschiebungen können für einen Humanize-Effect verwendet
    werden, bei gedoppelten Spuren spielen die 'Musiker' dann nicht exakt
    übereinander.

    Danke für die Grafik.
     
  20. mc4

    mc4 Tach

    Ersetze Feder mit Kurve, dann hast du genau mein Model.
    Zwischen zwei Zeitpunkten (Keyframes) können beleibige
    Kurven gesetzt werden.

    Mein Keyframe hat soweit
    - eine Position ( Beats, Sekunden oder Frames)
    - einen Wert
    - einen Verlauf ( eine beliebige Kurve oder ein Muster oder auch Zufall)
    - eine Quantisierung
     
  21. Anonymous

    Anonymous Guest

    Ich meinte das in Bezug auf meine dynamische Mehrfederidee.

    Aber Klangbeispiele sind immer gut.
     
  22. lilak

    lilak Tach

    für solche experimente kann ich dir Pure Data empfehlen: sehr leicht zu verstehen und grafisch aufgebaut. textfiles rein und rauslesen ist auch kein problem.

    ein intelligenter sequencer wäre allerdings was interessantes. für mich das ist problem mit allen sequencern das lineare grundgerüst. in wirklichkeit wird jede wiederholung von irgendwas als rhytmus wahrgenommen egal ob die zeit dazwischen linear abläuft.

    polyrhytmik ist schon der richtige ansatz. in der "westlichen" musik ist das halt mlitärisch primitiv meistens 2 über 4 (periode 4) und in afrika zb 3 über 4 (periode 12) ... am besten kann man das in der südafrikanischen mbira musik hören, da spielen meist mehrere mbiras polyrhytmisch übereinander.

    die euklidischen patterns haben nur den vorteil dass sie auf einem einzigen abstand aufbauen und die töne deshalb immer "zusammenkommen". muss aber nicht sein. mach mal in ableton drei midiloops mit 5/7/11 viertel länge und beliebigen noten. wenn du die übereinanderspielst gibt das eine einzige melodie von 5x7x11 = 385 länge.
     
  23. mc4

    mc4 Tach

    Klar, kenne ich.
    Hier soll aber mein eigenes Sequencer-Framework (in C++) zum Einsatz kommen und ich suche dafür
    noch ein geeignetes Datenformat mit dem man auch ohne Tools kleine Ideen schnell
    festhalten kann.
     

Diese Seite empfehlen