tilt_sequencer: Jack-Transport Start/Stop, Fractional Beat Intervals

Habe über das Wochenende erstmal den Parser von tilt_sequencer komplettiert.

Kommanozeilen-Syntax:

tilt_sequencer DATAFILE [MIDI_PORT [INITIAL_BPM]]

Argumente:

  • DATAFILE:
    String: Datei mit Events.
  • MIDI_PORT:
    String: Name des zu öffnenden virtuellen MIDI-Ausgabe-Ports;
    Default: “tilt_sequencer”.
  • INITIAL_BPM:
    Float: Wenn nicht von JACK-Transport mitgeteilt, verwende dieses Temp in beats-per-minute;
    Default: 120.

Syntax der Event-Datei:

Leere Zeilen werden ignoriert.

Jede nicht-leere Zeile besteht aus einem oder mehreren “Token”. Ein “Token” ist entweder ein Schlüsselwort oder ein numerischer Wert.

Float-Beat:

beats [byte1 [byte2 [byte3]]

Float-Value beats, gefolgt von 0 bis 3 MIDI-Message-Bytes.

Fractional-Beat:

beats/beat_r [byte1 [byte2 [byte3]]

Float-Value beats, gefolgt von Integer-Value beat_r, gefolgt von 0 bis 3 MIDI-Message-Bytes.

Control:

CTRL ctrl_num ctrl_val

Schlüsselwort “CTRL” gefolgt von Byte-Wert ctrl_num, gefolgt von Byte-Wert ctrl_val.

Beispiel:

CTRL 1 0
CTRL 2 0
CTRL 3 0
1/3 144 80 100
0 128 80 127

CTRL 1 20
CTRL 2 35
CTRL 3 45
1/3 144 80 100
0 128 80 127

CTRL 1 35
CTRL 2 55
CTRL 3 70
1/3
1/3 144 80 100
0 128 80 127

In diesem Beispiel werden die Controller 1 bis 3 nacheinander auf die Werte (0,0,0), (20,35,45) und schließlich (35, 55, 70) gesetzt. Nach jeder Änderung wird einen Drittel-Beat lang die Note 80 auf Kanal 0 mit Velocity 100 angeschlagen und mit Velocity 127 beendet.

Download:

Wie immer per SVN:

svn co svn://linuxfoo.de/tilt_sequencer

Enjoy. :-)

Veröffentlicht in GNU/Linux, Multimedia, Programmierung | Kommentare geschlossen

Ein kleiner MIDI-Sequencer als JACK-Transport-Slave

Hier der Anfang eines kleinen Beat-exakten Sequencers, gesteuert mit Jack-Transport:

svn co svn://linuxfoo.de/tilt_sequencer

Zugriff per WebSVN

Abhängigkeiten:

  • libjack-dev
  • librtmidi-dev

Anmerkungen:

Zur Laufzeit muss ein Programm, z.B. Ardour oder klick den JACK Transport Timebase Master machen. Dann passt sich der Sequencer automatisch der BPM an, wobei allerdings zu beachten ist, dass das Update derzeit erst nach Ablauf des aktuellen Events wirksam wird.

TODO:

Klar, dass ich als nächstes eine Multithreaded-Anwendung mit Echtzeit-BPM-Update und Skew-Correction einbaue.

Für Vorschläge zum Input-Format bin ich dankbar, eine GUI zu bauen habe ich nicht vor, ich will erstmal eben genau nicht eine GUI sondern eine gescheite Notation.

Aufruf:

./tilt_sequencer test/data1.txt

Eingabe-Datenformat:

Derzeit lautet das Datenformat einfach (pro Zeile):

BEATS BYTES COMMAND_BYTE DATA_BYTE_1 DATA_BYTE_2

Zwischen den Tokens liegt jeweils genau ein ASCII Space character (0×20)

Am Zeilenende liegt ein UNIX Newline (0x0A). Leere Zeilen werden ignoriert.

Alle Werte sind in ASCII dezimal zu notieren. Es kann jede von sscanf(3)  unterstützte Notation für float (%f) bzw. int (%d) verwendet werden.

  • BEATS: float: Wie lange nach dem Senden dieses Events gewartet werden soll.
  • BYTES: int, 2 oder 3: Wieviele Bytes dieses Event hat.
  • COMMAND_BYTE, DATA_BYTE_1/2: int, 0-255: Die Bytes des MIDI-Events.
Veröffentlicht in GNU/Linux, Multimedia, Programmierung | Kommentare geschlossen

Zwei Breakbeatz …

… in einem Stück: FM Challenge (OGG-Vorbis @ ca. 435k, ca. 18MB, 5:33s Spielzeit). Wer kein OGG abspielen kann: Auf YouTube (Audio ist aber von niedrigerer Qualität).

Heute mal etwas sinistrer, aber keine Bange, nicht für lange.

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

Breakbeats / Amen (Upated)

Screenshot of Ardour3

Das Projekt in Ardour Version 3 (Beta).

Eine kleine Fingerübung zum Theman Amen Break ;-)

Update: Jetzt neu mit Post-EQ :-)

Beatz Revision Zwei (OGG Vorbis 500k, 2:47sec Spielzeit, ca 8,9MB).

Video auf YouTube

Video auf YouTube

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

Danton

Harr!

Danton (OGG-Vorbis 128k, Spielzeit ca. 2:39sec, ca. 2,6MB).

 

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

Drum & Bass

Es hat Drums, es hat Bass, also ist es Drum & Bass :-)

Effex (OGG Vorbis 128k, 2:37sec Spielzeit, ca. 2,8MB)

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

Weiterer Sound

Mit meiner hübschen neuen Piano-Anlage und ausgestattet mit einer padControl-Fernsteuerung habe ich diesen Track aufgenommen:

Inbetween Beats (Spielzeit 3:25, Format OGG-Vorbis 128k, Dateigröße ca. 3,5MB).

Enjoy. :-)

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

seq24 mit padControl

Mit der in diesem Artikel gezeigten  ~/.seq24rc steuere ich seq24 mit meinem Korg padControl an.

Mit qmidiroute habe ich schnell mal bestimmt, welcher Pad auf meinem padControl eigentlich welche note sendet (ja ich weiss, das kann man einstellen, das hier ist nur ein Beispiel für eine ziemlich wirre Belegung):

Zeile/Spalte A B C D
I 61 69 65 63
II 60 59 57 55
III 49 51 68 56
IV 48 52 54 58

Die ersten zwei Zeilen habe ich in seq24 mal nachgebaut:

Daraus ergibt sich die nachfolgende ~/.seq24rc. Dazu zur Erläuterung (danke an Nedko für den Hinweis auf das Dokument SEQ24, in dem das erklärt wird):

Das Prinzipielle Zeilenformat ist

$NUMMER [$TOGGLE] [$ON] [$OFF]

$NUMMER ist die fortlaufende Nummer der seq24-Sequenzen (die weissen Kästen im Hauptfenster). Durchnummeriert wird spaltenweise beginnend mit Null, also: erste Spalte von oben bis unten sind die Nummern 0 bis 3, zweite Spalte sind 4 bis 7 usw.

$TOGGLE, $ON und $OFF sind MIDI-Muster, das heisst, sie treffen auf bestimmte MIDI-Signale zu. Dabei sind 6 Werte anzugeben:

  • 0 oder 1 um zu bestimmen, ob dieses Muster aktiv ist
  • 0 oder 1 um zu bestimmen, ob dieses Muster “invertiert” ist, das heisst, wenn hier 0 steht, löst das MIDI-Event das seq24-Event ganz normal aus, wenn hier 1 steht, haben $ON und $OFF vertauschte  Bedeutung.
  • Eine Dezimalzahl für das MIDI-Kommando. Für mich sind nur wichtig: 144 (Note On) und 128 (Note Off).
  • Eine Dezimalzahl für das 1. Datenbyte des MIDI-Events. Bei Note-On/Off ist das die Note, 0 bis 127. Dies sind die Werte aus meiner Tabelle oben, spaltenweise entnommen.
  • Zwei Dezimalzahlen für zulässige “von”- und “bis”-Werte des 2. MIDI-Datenbytes. Bei Note-On/Off ist das die “Velocity” (Stärke des Anschlags). Ich nehme jede Velocity, also sage ich 0 für “von” und 127 für “bis”.

Daraus ergibt sich der folgende Eintrag für die erste Sequenz, in meiner Tabelle in der ersten Zeile und ersten Spalte (A1), und auf dem seq24-Screenshot ebenso:

0 [0 0 0 0 0 0] [1 0 144 61 0 127] [1 0 128 61 0 127]

(beachte, dass ich $TOGGLE gar nicht verwende, weswegen da alles auf 0 gesetzt ist).

Mit einem brauchbaren Texteditor sind die restlichen 15 Zeilen schnell daraus dupliziert, man muss nur die “61″ im 2. und 3. Block jeweils anpassen. Beispielhaft für die 1. Spalte:

0 [0 0 0 0 0 0] [1 0 144 61 0 127] [1 0 128 61 0 127]
1 [0 0 0 0 0 0] [1 0 144 60 0 127] [1 0 128 60 0 127]
2 [0 0 0 0 0 0] [1 0 144 49 0 127] [1 0 128 49 0 127]
3 [0 0 0 0 0 0] [1 0 144 48 0 127] [1 0 128 48 0 127]

Übrigens, die Version von seq24, die ich hier installiert habe, will aus mir nicht erklärlichen Gründen die Zahl “74″ als erste Zeile der Konfiguration, sonst ignoriert er alles, was in der .seq24rc steht und macht es beim nächsten Programmende platt. Darum fängt meine .seq24rc auch so an:

[midi-control]
74
0 [0 0 0 0 0 0] [1 0 144 61 0 127] [1 0 128 61 0 127]
# ... usw.

Im Patch-Panel sieht das ganze dann so aus:

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

JACK Audio mit Flash (in Firefox)

Hier gibt es einen Weg zum konfigurationsfreien Routing von Flash-Sound-Ausgabe zum JACK-Soundservice:

http://jackaudio.org/routing_flash

Funktioniert sehr gut, was ich getan habe, ist:

1. “libflashsupport.so” erstellen und als Firefox-Plugin installieren:

git clone git://repo.or.cz/libflashsupport-jack.git
cd libflashsupport
sh bootstrap.sh
make
sudo make install
ln -si /usr/lib/libflashsupport.so ~/.mozilla/plugins

2. JACK starten

3. Firefox neu starten

4. Ausprobieren

Screenshot:

Veröffentlicht in GNU/Linux, Multimedia, Musik | Kommentare geschlossen

Das neue YouTube-Layout …

… ist wirklich toll, wenn man es mit FireFox+Stylish ein bisschen … aufräumt:

Veröffentlicht in GNU/Linux, Multimedia, Zeugs | Kommentare geschlossen