Seite 1 von 1

Midi, MIXXX, Beat und Timecode

Verfasst: 03.02.2013, 14:15
von dg3nec
Hallo,
anbei meine Files mit denen ich aus MIXXX den Beat und den Timcode schicken lasse. Abhängig vom Fader, also Deckbezogen.
Da ich zwei Rechner nutze, (Musik/Licht) schicke ich die Daten via rtpMIDI (von Tobias Erichsen) über das lokale Netzwerk.

Ist das Netzwerk mit MIDI eingerichtet, werden die Files in den Ordner der Midi-Definitionen vom MIXXX gelegt. Ist MIDI nun aktiv, kann in den Einstellungen von MIXXX das Layout PCDimmer dafür ausgewählt werden.
Für den Beat sende ich die Note "D" (steht im Fränkischen für D(T)ackt hi hi). Im PCDimmer löse ich damit einen manuellen Beat aus. Dazu die MIDI-Einstellung im PC-Dimmer entsprechend setzen. Im Beat-Tool noch auf Manuell stellen...fertig.

Die Zeit wird auch übertragen. Schön zu sehen im Timecodeplayer. Hier kann es aber sein, dass der Midi-Port erneut ausgewählt werden muss. Siehe anderen Thread in diesem Forum. Die Zeit wird nicht als Quarterframe sondern Fullframe gesendet. So ist es kein Problem, wenn die Geschwindigkeit abweicht +- oder andere Spielerein. Im Gegensatz zu VDJ wird nicht irgendeine laufende Zeit, sonder die Position vom Lied (Fader und Deckabhängig) gesendet. Nicht irretieren lassen: Die Zeitanzeige MIXXX und PCDimmer wird minimal differieren. Das liegt daran, das im MIXXX die Poition aus Wert 0 bis 1 ausgegeben wird, das mit der Liedlänge verrechnet wird. Ist aber eher ein Schönheitsproblem.
So kann man die Effekte super einfach im Timecodeplayer starten, stoppen, Breaks und Aktzente einfügen. Habe mal probiert: Ein Lied ist so in unter 30 Minuten und ca. 30 Zeilen ruckzuck mit einer passenden Lightshow verziert.

Was mir noch fehlt, wäre die Möglichkeit das Laden von Files im Timecodeplayer zu automatisieren. Liedname/Filename per Sysex senden und im PC-Dimmer entsprechend den Timecodeplayer laden zu lassen. Dann wäre mein Glück perfekt und ein Partyabend mit Super Musik und Licht gelungen abgerundet. Ohne das man selbst viel fummeln muss. Naja, vieleicht wird's ja noch....

Hier anbei das File (Achtung veraltet, weiter unten neuere Version).

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 04.02.2013, 20:18
von bestdani
Sehr schöne Idee! Ich habe es direkt ausprobiert und das funktioniert wunderbar.

Selbst wenn ich mal nur Licht mache, sehe ich darin eine prima Möglichkeit, das Licht per Gehör der Musik anzupassen: Einfach ein 4-4-Metronom in Mixxx laden und dann per Kopfhörer an die Musik angleichen, schon sollte auch die Optik gebeatmatched sein. :D

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 05.02.2013, 19:02
von dg3nec
Danke für das Lob. Es freut mich auch, das es funktioniert. :D
Für MIXXX 1.11 muss wohl noch ein Parameter rein, damit es besser ausschaut. Aber das ist nicht wichtig für die Funktion, bei Gelgenheit mal dran gehen. Es funktioniert ja unter 1.11

Kleiner Zwischenbericht, bei dem eine Info/Statement seitens Christian gut wär. Danke...

Über das Launchpad vom MIXXX habe ich den Wunsch generiert im Script die Variable "Songname" zu erhalten. Zweck: Übertragen per Midi-Sysex. Das hat Rayn als Wunsch aktzeptiert und Sean M. hat das am nächstens Tag angenommen umzusetzen. Das heißt, demnächst kann per SYSEX mit meinem Script einen Liednamen übertragen werden.
Kann man das im PCDimmer im Midi hinkriegen diese Sysex zu empfangen und damit was anzufangen? Man könnte sich ja auf den Header einigen hi. Wenn ich im Timecodeplayer den übertragenen "Liednamen" beim speichern als Filenamen nehme, könnte man doch bei erhalt der Sysex den Timecodplayer damit laden. Den Timecode kurz auf 0 halten zwecks init usw. wäre nicht das Problem. Kurzgesagt einen Sysex befehl, der den Filnamen enthält den der timcodeplayer läd.

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 12.02.2013, 20:41
von Ingo
Hi,

schöne Idee und Danke für die Umsetzung; funktioniert auch bei mir :)
Die Übertragung des Liedtitels wäre natürlich genial, nur die Integration der Sysex-Nachrichten in PC_DIMMER könnte noch etwas Aufwand bedeuten (Chris? :wink: ).

Grüße,
Ingo

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 13.02.2013, 16:25
von Torsten
Da meine Soundkarten leider auch nicht für das Beattool geeignet war, habe ich jetzt die Variante mit Mixxx ausprobiert - hat ein bisschen gedauert, aber hier meine Tipps, wie es mir schließlich gelungen ist. Voraussetzung ist natürlich ein installiertes Mixxx inkl Configfiles aus dem ersten Posting.

1.) Da ich keine Midi Hardware habe, aber sowohl Mixxx als auch PCDImmer auf einer Kiste laufen habe, habe ich mir "Loop Midi" (ebenfalls von Tobias Erichsen) herunterladen http://www.tobias-erichsen.de/software/loopmidi.html und installiert. Nach dem Starten einfach auf das kleine "+" in der Loopmidi-Gui klicken und ein neues Midi-Device ist erstellt.

2.) Mixxx starten und unter Einstellungen -> Midi-Geräte -> Loop Midi Port auswählen rechts "aktiviert" anhakeln -> Voreinstellungen laden -> "PC Dimmer" auswählen. Leider gibt es dann kein Feedback von Mixxx, ob die Einstellungen geladen sind oder nicht... einfach weitermachen :-)

3.) PC Dimmer starten -> Einstellungen -> Midi Einstellungen -> Midi In Gerät: loop Midi -> das grüne "+" klicken und einen Event erstellen (siehe Bild) Message: 144 Data 1: 50 Data 2: 100; Werte beziehen vonh Data 2; Programmteil: Beattool; Steuerung: Beat auslösen (OK)

4.) Beattool starten, auf manuell stellen

5.) Zurück zu Mixxx: Jetzt mal je einen Titel in den linke und rechte Cueliste ziehen und starten. Im oberen Teil werden die BPM angezeigt.

6.) Wieder in PC-D: Wenn man jetzt wieder die Midi-Einstellungen aufruft, sollte dort bei dem erzeugten Event die Zahlen zwischen 128 und 144 bzw 0 und 100 zucken. Im Beattool sollte ungefähr die gleiche BPM-Anzahl, wie in Mixxx angezeigt werden.

7.) Zurück zu Mixxx: Damit die rechte Cueliste den Beat vorgibt, den Crossfader leicht nach rechts ziehen. In der Mittelstellung gibt nämlich nur der linke Teil den Beat vor

Und jetzt: gogogo Partymuckenmodul :D :clap:
Mixx_pcdimmer_midi.jpg
Mixx_pcdimmer_midi.jpg (96.79 KiB) 17243 mal betrachtet

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 17.02.2013, 19:06
von dg3nec
Schöne Anleitung. Prima, sagar Mittelstellung Fader fehlt nicht. Lob, das stimmt.
Zu deinem 2.:
Mixxx gibt keine Rückmeldung, da es keine Midi-Matrix hat. Die würde angezeigt werden. Es ist ja nur Script Zeugs dass da werkelt. Und das ist dort halt nicht "sichtbar". Also, es ist korrekt so....

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 22.02.2013, 21:11
von dg3nec
Hallo,
ich habe noch eine Fuktion hizugefügt. Beim Liedwechsel wird nun die Note "C" gesendet. Hierzu wird die Faderstellung ausgewertet.

Damit die Lichtsteuerung nicht aus dem Tritt kommt wenn ein DJ am Fader hin- und her reißt so schnell er kann, ist eine Sperre von einer Sekunden vor dem nächstem Wechsel drin.

Die Mittelstellung des Faders wird hier erst mal ignoriert. Bis eine eindeutiger Wechsel statt fand. Mixxx macht ja bei Fader-Rechts-Klick den Fader in Nullstellung.

In der Midi-Konfiguration kann man, wie in der Anleitung weiter oben beschrieben, einfach etwas zuordnen was passieren soll bei Liedwechsel. Tipp: Midi-Note aufzeichnen lassen, ohne das ein Deck läuft, den Fader über Nullstellung hinweg schieben im Mixxx.

Grüßli, Michael

Hier anbei das File (Achtung veraltet, weiter unten neuere Version).

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 24.02.2013, 18:41
von bestdani
Das hört sich doch sehr vielversprechend an. :)

Was natürlich auch noch genial wäre, wenn man zudem noch die Line-Fader mit einbeziehen könnte. Ich z. B. rühre beim Mixen nur sehr selten den Crossfader an. Sollte ja im Prinzip durch eine einfache Bedingung "Ist Fader 1 > Fader 2" oder umgekehrt, die nur greift, wenn Crossfader nahezu in Mittelstellung ist, schon erledigt sein.

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 23.03.2013, 15:21
von dg3nec
OK, der Vorschlag es auch von den Linereglern abhängig zu machen klingt erst mal logisch. Ich glaube es verstanden zu haben.

Ich schlag mal folgendes vor. Ich denk noch mal drüber nach, weil irgendein Bauchgefühl sagt da könnte was schiefgehen. Beispiel: Was passiert wenn hier einer unterschiedliche Stellungen hat und mit dem Crossfader arbeitet? Spontan fällt mir ein, wenn man es umbaut und auf dynamische Änderungen der Regler reagiert. Mal drüber schlafen...

Ich versuche deinen Vorschlag umzusetzen!

PS:
Heut muss ich aber erst mal ein neues Spielzeug integrieren :-) , hab mir so ein Numark DJ/IO mitgneommen beim großen T. Mal sehen ob es dem Klang in der Bude/Wohnzimmer zuträglich ist.

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 11.09.2013, 15:33
von dg3nec
Vorschlag von Dani umgesetzt. Die Volumeregler vom Deck in die Steuerung eingebunden.

Im Detail:
Die Beats, abhängig von den Lautstärkereglern, funktioniert nun paralel zum Fader. Damit dies funktioniert, sind folgende Dinge zu beachten:
1. Die Laustärkeregler werden nur beachtet/wirksam wenn der Fader in nahezu Mittelstellung und für mindestens 3 Sekunden nicht bewegt wurde. Ein Achtel links/rechts wird aktzeptiert.
2. Wird der Fader (auch nur ein wenig) bewegt, ist die Steuerung über Lautstärkeregler erst mal wieder gesperrt. bis Bedingungen wie unter 1. wieder gelten.
3. Um "wilde Wechsel" zu verhinden ist auch hier ein erneuter Deckwechsel nur nach ablauf einer Sekunde möglich. Wird ab nachgeholt.

@bestdani:
Ich hoffe es entspricht deinem Vorschlag. Habe zwischenzeitlich ein DJtoGo und es damit kurz gesteset. Es funktionierte. Ein Test von dir als "Vorschläger" wäre gut.

PS: So ganz einfach mit "Welcher Regler ist grad mehr aufgedreht" ist, war es dann doch nicht hi hi. Schließlich wollte ich beides vernünftig und gleichzeitig haben.

Grüße, Michael

Hier anbei das File...

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 17.09.2013, 21:16
von bestdani
Funktioniert ausgezeichnet. Genauso habe ich mir das vorgestellt.
Sehr schön gemacht. :)

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 18.09.2013, 11:45
von dg3nec
Gern geschehen und danke für deinen Test.

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 31.12.2013, 14:09
von dg3nec
Hier die nächste Erweiterung. :wink3:

Jetzt wird der BPM-Wert aus Mixxx auf Midi Ausgegeben.
Grund: Ich möchte damit BPM abhängig Geschwindigkeiten eines Gerätes ändern.

Umsetzung in Mixxx.
- Pro Beat wird der BPM-Wert ausgelesen und als Wert 2 der Note E (Dezimal 52) per Midi ausgegeben. Breich 0 bis 127.
- Um Sinnvolle in PCD verwertbare Werte zu empfangen wurde BPM wie folgt verändert. Es werden prinzipiell 50 abgezogen. Somit ist BPM 50 der unterste Wert. Entsprechend ist ein BPM von 177 das Maximum.

Umsetzung in PCD:

In den Midi Einstellungen den Wert 2 der Note D (=52) auf einen unbenutzen DMX Kanal ausgeben. Dieser bildet so die BPM aus Mixxx ab. Wobei 0 <= 50BPM und 255 >= 177 BPM entspricht.
midi_e_setup.jpg
midi_e_setup.jpg (71 KiB) 16806 mal betrachtet
Beispiel:
In den Midi Einstellungen Note E Wert 2 auf DMX Kanal 127 gelegt. Jetzt hat man einen Wert den man abfragen und verwerten kann.
Mein TLB20 soll die Geschwindigkeit anpassen anhand der BPM. Jedoch ist nicht jeder Wert geeignet. Geschwindigkeitswerte von 140 bis 240 sind brauchbar.
Hierfür habe ich im Kontrolpanel einen Button belegt mit Programmcode. Hier der Code (liegt auch als TXT im ZIP-File)

Code: Alles auswählen

unit ButtonCode;

interface

procedure ButtonMouseDown;
procedure ButtonMouseUp;

implementation

procedure ButtonMouseDown;
var
	BPMKanal_Nummer, BPMKanal_Wert, Geraet_WertAlt, Geraet_WertNeu, Geraet_Fadetime, Geraet_Min, Geraet_Max:integer;
	Geraet_ID, Geraet_Kanal:variant;
	
begin

  // BPM holen
  BPMKanal_Nummer:=127; // Wert entsprechend dem DMX-Kanal der den BPM-Wert darstellt anpassen!
  BPMKanal_Wert:=get_absolutchannel(BPMKanal_Nummer);

  // ####### Gerät 1, Stairville TLB-20
  // Folgende Werte anpassen!
  Geraet_ID:='{2B55FC65-AF60-4A9F-89A3-1127DAC8AF6D}';  // ID des Gerätes, Anführungszeichen müssen bleiben 
  Geraet_Kanal:='Gobo1rot'; // Kanal als Name, Anführungszeichen müssen bleiben
  Geraet_Fadetime:=0; // Fadetime in ms
  Geraet_Min:=140;  // Untegrenze DMX-Wert (Zum umrechnen, so das der Teilbereich dem BPM-Kanal komplett entspricht) 
  Geraet_Max:=240;  // Obergrenze DMX-Wert (Zum umrechnen, so das der Teilbereich dem BPM-Kanal komplett entspricht) 

  // Gerätewert alt ermiteln
  Geraet_WertAlt:=get_channel(Geraet_ID, Geraet_Kanal);  
  // Berechnung des neuen Gerätewertes
  Geraet_WertNeu:=(Geraet_Max-Geraet_Min)*(BPMKanal_Wert/255)+Geraet_Min;
  // Wert an Gerät ausgeben
  set_channel(Geraet_ID, Geraet_Kanal, Geraet_WertAlt, Geraet_WertNeu, Geraet_Fadetime);  
// ####### ENDE Gerät

end;

procedure ButtonMouseUp;
begin
end;

end.
Im Code sind natürlich Werte anzupassen. Bitte einmal durchlesen. Wenn mehrer Geräte geändert werden sollen, kann man der Block mit "Geraet 1" einfach kopieren und entsprechend die Werte anpassen. Achtung: Geraet_Min muss kleiner sein als Geraet_Max. Ich überlege mir dazu noch eine Lösung, damit eine "Negative" zuweisung (Geräte mit Drehrichtung) beide Richtungen genommen werden können.

Zusätzlich könnte man auf die Midi Note C (=48) reagieren und im Kontrolpanel die "Taste" auslösen. Diese kommte kurz nach Liedwechsel. Somit wäre dies automatisiert. Ob das Sinnvoll ist, muss jeder selbst entscheiden.

Hier das File.
Beinhaltet neben den zwei Files für Mixxx auch den Beispielcode für PCD als TXT.
PC_Dimmer_2013_12_31.zip
(3 KiB) 430-mal heruntergeladen

ACHTUNG veraltet, weiter unten schauen

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 19.06.2014, 10:50
von dg3nec
Weitere Funktionaliät?
Ich bin gerade wieder dabei es zu erweitern. In einem anderem Forum gelang es nicht, das VU-Meter zu nutzen. Ich fand es ist eine brauchbare Idee. Jetzt sammle ich mal weiter Ideen. Möglichst möchte ich nun die Midi-Ausgabe in Mixxx verallgemeinern, so dass man auch andere DMX-Programme problemlos nutzen kann.

Aber zunächste mal wollte ich das Vu-Meter haben 8)
Der Wert selbst war relativ schnell übertragen via Midi. Im PC-Dimmer dann auf einen Submaster Fader gelegt. Der wiederum dann Dimmerkanänle ansteuert. Das Ergebnis war ernüchternt. Die Änderugen waren minimal in der Helligkeit.
Nachdem ich nun Min- und Maxwerte ermittle und diese dann relativ umrechne schaute es schon besser aus. Wie die gute alte selbstgebaut Lichtorgel aus Kindertagen hi hi hi.
Momentan habe ich auf diesem Weg: Vu-Master mono, links und rechts. Werte kommen 25x pro Sekunden.

Hat noch jemand Ideen oder Verbesserungen? Her damit...

Re: Midi, MIXXX, Beat und Timecode

Verfasst: 14.09.2014, 15:50
von dg3nec
Eines vorweg. Ich habe mich entschlossen einen anderen Namen zu nehmen. Es heißt jetzt "Midi for Light". Die Filenamen entsprechend auch! Grund: PC Dimmer ist nicht das einzige DMX-Programm das Midi verarbeiten kann.

Umsetzung des VU-Meters aus Mixx via MIDI ist nun abgeschlossen. Es gibt viele Werte die Übertragen werden. Übertragen werden die Werte 25 mal pro Sekunde. Klingt erst mal kompliziert, erröffnet aber sehr viele Möglichkeiten. Hier die Erklärung dazu.
MIXXX hat drei VU-Meter Werte. Links, Rechts und Mono (Summe). Alle Drei sind vorhanden. Als erstes gibt es nun den aktuellen absoluten Wert. Da sich hier relativ "wenig" tut (Wenn man dmit Diimt), lasse ich weitere berechnen. Bezogen auf die Letzte Sekund das Minimum, Maximum und den Mittelwert. Weiterin den absoluten Werte umgerechnet auf Minimum und Maximum. Dieser Wert bringt die Lampen schon eher in Wallung.
Um nun ein VU-Meter nachzubilden, habe ich die Werte auf 4 aufgeteilt. Allerdings so, dass erst Wert 1 voll an sein muss bevor Wert 2 befüllt wird und so weiter. Dies wiederum als Absolut (kleine Änderung) und Relativ (große Änderung weil auf letzte Sekunde bezogen).

Beispiel:
Ich habe 4 Scheinwerfer. Die Werte Meter 1 bis Meter 4 vom Mono-Kanal schicke ich auf 4 Submaster. Diese vier Submaster steuern nun den Dimmerkanal der Scheinwerfer. Dazu gebe ich noch einen Effekt, der pro Beat jeweils die Farbe aller Scheinwerfer ändert. Um das ganze zuschaltbar zu machen, habe ich Kontrolpanel zwei Buttons belegt die eine Submasterbelegung laden. Einmal mit Dimmerkanal steuerung, einmal ohne. So kann ich das VU-Meter "Ein" und "Aus" schalten. Macht sich übrigens super! Farbe nach Beat und die Helligkeit abhängig zum VU-Meter...

Hier noch die Werte und wo sie in Midi als Note gesendet werden.


Midi Werte die gesendet werden:
###############################
Kanal Summe/Mono:
=================
Aktuell absolut: dez.64, okt.5 note E

Durchschnitt Minimum: dez.65, okt.5 note F
Durchschnitt Mittel: dez.66, okt.5 note F#
Durchschnitt Maximum: dez.67, okt.5 note G

Aktuell relativ: dez.68, okt.5 note G#

Meter 1 absolut: dez.69, okt.5 note A
Meter 2 absolut: dez.70, okt.5 note A#
Meter 3 absolut: dez.71, okt.5 note B
Meter 4 absolut: dez.72, okt.6 note C

Meter 1 relativ: dez.73, okt.6 note C#
Meter 2 relativ: dez.74, okt.6 note D
Meter 3 relativ: dez.75, okt.6 note D#
Meter 3 relativ: dez.76, okt.6 note E

Kanal links:
=================
Aktuell absolut: dez.80, okt.6 note G#

Durchschnitt Minimum: dez.81, okt.6 note A
Durchschnitt Mittel: dez.82, okt.6 note A#
Durchschnitt Maximum: dez.83, okt.6 note B

Aktuell relativ: dez.84, okt.7 note C

Meter 1 absolut: dez.85, okt.7 note C#
Meter 2 absolut: dez.86, okt.7 note D
Meter 3 dez.87, okt.7 note D#
Meter 4 absolut: dez.88, okt.7 note E

Meter 1 relativ: dez.89, okt.7 note F
Meter 2 relativ: dez.90, okt.7 note F#
Meter 3 relativ: dez.91, okt.7 note G
Meter 4 relativ: dez.92, okt.7 note G#

Kanal rechts:
=================
Aktuell absolut: dez.96, okt.8 note C

Durchschnitt Minimum: dez.97, okt.8 note C#
Durchschnitt Mittel: dez.98, okt.8 note D
Durchschnitt Maximum: dez.99, okt.8 note D#

Aktuell relativ: dez.100, okt.8 note E

Meter 1 absolut: dez.101, okt.8 note F
Meter 2 absolut: dez.102, okt.8 note F#
Meter 3 absolut: dez.103, okt.8 note G
Meter 4 absolut: dez.104, okt.8 note G#

Meter 1 relativ: dez.105, okt.8 note A
Meter 2 relativ: dez.106, okt.8 note A#
Meter 3 relativ: dez.107, okt.8 note B
Meter 4 relativ: dez.108, okt.9 note C