Das Echtschlag Muster

M

mc4

..
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.
 
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
 
TonE schrieb:
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.

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.
 
- 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)
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.
 
Wie kombinierst du mehrere Instrumente in einer Textdatei?

x oder - oder . angegeben. x bedeutet Note, - bedeutet Verlängerung, . bedeutet Pause.

Übrigens liest sich ein + als Verlängerung angenehmer:
Code:
x+++ x+ x+++..
x--- x- x---..
Kann man besser auszählen.
 
mc4 schrieb:
Wie kombinierst du mehrere Instrumente in einer Textdatei?
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.

Kann man besser auszählen.
?
 
Klingt interessant.
Leider läuft die Applikation nicht auf meinem Mac.
und was Euclidean MIDI Patterns sind habe ich auch noch nicht verstanden.
 
mc4 schrieb:
Leider läuft die Applikation nicht auf meinem Mac.
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.

und was Euclidean MIDI Patterns sind habe ich auch noch nicht verstanden.
Da gibt es eigentlich nicht viel zu verstehen, die Schläge werden möglichst equidistant über die Steplänge verteilt.

(3,8) bedeutet also wie verteile ich 3 Schläge möglichst equidistant über 8 Steps. Das wars schon.
 
Danke,
ich werde es die Tage mal auf dem anderen Rechner testen, der hat Snow Leopard drauf,
ist ein Java Versions Problem.
 
TonE schrieb:
... die Schläge werden möglichst equidistant über die Steplänge verteilt.
(3,8) bedeutet also wie verteile ich 3 Schläge möglichst equidistant über 8 Steps. Das wars schon.

Aaah! Banal. :shock:
Das wäre bei mir die Ramp Kurve für die Berechnung zwischen den Keyframes.
 
mc4 schrieb:
TonE schrieb:
... die Schläge werden möglichst equidistant über die Steplänge verteilt.
(3,8) bedeutet also wie verteile ich 3 Schläge möglichst equidistant über 8 Steps. Das wars schon.
Das wäre bei mir die Ramp Kurve für die Berechnung zwischen den Keyframes.
Aber die Steps sind schon quantisiert. Um Dein Keyframes Konzept zu verstehen wäre eine Visualisierung ganz nützlich, damit keine Missverständnisse auftreten.
 
In diesem banff.pdf Paper sind ja einige Beispiele aufgelistet und kommentiert:
The simplest rhythms have a value of k=1. This subfamily of Euclidean rhythms yields:
E(1,2) = [x .]

E(1,3) = [x . .]

E(1,4) = [x . . .], etc.
Note that since we are interested in cyclic non-periodic rhythms it is not necessary to enumerate these rhythms with multiples of kand n. For example, multiplying (1,3) by 4 gives (4,12) which yields: E(4,12) = [x . . x . . x . . x . .], which is periodic with four repetitions of E(1,3) = [x . .]. Incidentally, E(4,12) = [x . . x . . x . . x . .] is the (12/8)-time Fandango clapping pattern in the Flamenco music of southern Spain, where ‘x’ denotes a loud clap and ‘.’ a soft clap [10].

E(2,3) = [x . x] is a common Afro-Cuban drum pattern. For example, it is the conga rhythm of the (6/8)-time Swing Tumbao [18]. It is also common in Latin American music, as for example in the Cueca [33].

E(2,5)=[x . x . .] is a thirteenth century Persian rhythm called Khafif-e-ramal [34]. It is also the metric pattern of the second movement of Tchaikovsky’s Symphony No. 6 [17]. When it is started on the second onset ([x . . x .]) it is the metric pattern of Dave Brubeck’s Take Five as well as Mars from The Planets by Gustav Holst [17].

E(3,4)=[x . x x] is the archetypal pattern of the Cumbia from Colombia [20], as well as a Calypso rhythm from Trinidad [13]. It is also a thirteenth century Persian rhythm called Khalif-e-saghil [34], as well as the trochoid choreic rhythmic pattern of ancient Greece [21].

E(3,5)=[x . x . x], when started on the second onset, is another thirteenth century Persian rhythm by the name of Khafif-e-ramal [34], as well as a Rumanian folk-dance rhythm [25].

E(3,7)=[x.x.x..] is a Ruchenitza rhythm used in a Bulgarian folk-dance [24]. It is also the metric pattern of Pink Floyd’s Money [17].

E(3,8)=[x . . x . . x .] is the Cuban tresillo pattern discussed in the preceding [15].

E(4,7)=[x . x . x . x] is another Ruchenitza Bulgarian folk-dance rhythm [24].

E(4,9)=[x.x.x.x..] is the Aksak rhythm of Turkey [6]. It is also the metric pattern used by Dave Brubeck in his piece Rondo a la Turk [17].

E(4,11) = [x . . x . . x . . x .] is the metric pattern used by Frank Zappa in his piece titled Outside Now [17].

E(5,6)=[x . x x x x] yields the York-Samai pattern, a popular Arab rhythm, when started on the second onset [30].

E(5,7)=[x . x x . x x] is the Nawakhat pattern, another popular Arab rhythm [30].

E(5,8)=[x.xx.xx.]is the Cuban cinquillo pattern discussed in the preceding [15]. When it is started on the second onset it is also the Spanish Tango [13] and a thirteenth century Persian rhythm, the Al-saghil-al-sani [34].

E(5,9)=[x . x . x . x . x] is a popular Arab rhythm called Agsag-Samai [30]. When started on the second onset, it is a drum pattern used by the Venda in South Africa [26], as well as a Rumanian folk-dance rhythm [25].

E(5,11)=[x . x . x . x . x . .] is the metric pattern used by Moussorgsky in Pictures at an Exhibition [17].

E(5,12) = [x . . x . x . . x . x .] is the Venda clapping pattern of a South African children’s song [24].

E(5,16)=[x..x..x..x..x....] is the Bossa-Nova rhythm necklace of Brazil. The actual Bossa-Nova rhythm usually starts on the third onset as follows: [x . . x . . x . . . x . . x . .] [31]. However, there are other starting places as well, as for example [x . . x . . x . . x . . . x . .] [3].

E(7,8) = [x . x x x x x x] is a typical rhythm played on the Bendir (frame drum), and used in the accom-paniment of songs of the Tuareg people of Libya [30].

E(7,12) = [x . x x . x . x x . x .] is a common West African bell pattern. For example, it is used in the Mpre rhythm of the Ashanti people of Ghana [32].

E(7,16) = [x . . x . x . x . . x . x . x .] is a Samba rhythm necklace from Brazil. The actual Samba rhythm is [x . x . . x . x . x . . x . x .] obtained by starting E(7,16) on the last onset. When E(7,16) is started on the fifth onset it is a clapping pattern from Ghana [24].

E(9,16) = [x . x x . x . x . x x . x . x .] is a rhythm necklace used in the Central African Republic [2]. When it is started on the fourth onset it is a rhythm played in West and Central Africa [15], as well as a cow-bell pattern in the Brazilian samba [29]. When it is started on the penultimate onset it is the bell pattern of the Ngbaka-Maibo rhythms of the Central African Republic [2].

E(11,24)=[x..x.x.x.x.x..x.x.x.x.x.] is a rhythm necklace of the Aka Pygmies of Central Africa [2]. It is usually started on the seventh onset.

E(13,24)=[x.xx.x.x.x.x.xx.x.x.x.x.]is another rhythm necklace of the Aka Pygmies of the upper Sangha [2]. It is usually started on the fourth onset.
Quelle: The Euclidean Algorithm Generates Traditional Musical Rhythms, Godfried Toussaint,
School of Computer Science, McGill University Montreal, Quebec, Canada godfried@cs.mcgill.ca
 
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
 
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.
 
mc4 schrieb:
Während der gleichmässige Verlauf bei der zweiten Achtel ( 0.125 )
3 Trigger gespielt hat, sind es bei der Cubic schon 9.
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?! :?
 
TonE schrieb:
Wie die Rhythmen dann wohl klingen werden? Nach Schrott?! :?

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.
 
TonE schrieb:
Code:
Steps 1..4      -->    Feder 1
Steps 5..8      -->    Feder 2
Steps 9..12     -->    Feder 3
Steps 13..16    -->    Feder 4

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
 
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.
 
lilak schrieb:
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.

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.
 


News

Zurück
Oben