FAQ - Logic Studio 8

Pro / Express / Studio

Moderatoren: d/flt prod., MarkDVC, Mods

Benutzeravatar
MarkDVC
Super Tweaker
Beiträge: 11011
Registriert: 25 Sep 2003 - 10:05
Logic Version: 10
Wohnort: St. Tönis bei Krefeld

Re: FAQ - Logic Studio 8

Beitrag von MarkDVC » 31 Jan 2009 - 20:49

30.

Danke an Petrosil:

Frage: Im Thread "Einbindung Akai MPK49" hier:

http://www.logicuser.de/forum/viewtopic ... &sk=t&sd=a
Golda hat geschrieben:Wie mache ich nun Logic8 klar, dass er im einen Fall bitteschön Werte hinzuzählen soll und im anderen Fall abziehen?
Antwort:
Petrosil hat geschrieben:So weit die immer noch unbeantwortete Frage. Ich habe mir den MPK49 mal zur Brust genommen und das seltsame Datenformat auseinander gepflückt. Wird 'ne etwas längere Erklärung, nur kurz vorweg: Man kann die Endlosregler mit relativen Daten in Logic verwenden. Aber es ist nicht ganz simpel, und im MPK49 Handbuch steht es nicht drin.

Wer die detaillierte Erklärung nicht wissen will möge etwas weiter unten lesen, da beschreibe ich konkret wie man Logic mit diesen Daten an den Start bekommt.

Also, zuerst die Frage "Was macht das Ding da eigentlich?". Die Daten die Golda hier gepostet hat sehen etwas seltsam aus. Um das zu erklären muss ich etwas ausholen...

Zunächst mal als Beispiel ein gebräuchlicher relativer Controller vom Format Signed Magnitude (Vorzeichenwert), ein Format was z.B. die Logic bzw. Mackie Control sendet. So etwas kann man noch gut in seine Bestandteile zerlegen. Im Controller-Zuweisungs-Fenster von Logic sieht ein solcher Controller etwa so aus:
B0 01 Lo7
B0 ist das so genannte Statusbyte ist. Es sagt aus was für eine Sorte MIDI-Daten hier gesendet werden, und auf welchem MIDI-Kanal. B steht für Control Change Message, die 0 steht für MIDI-Kanal 1. Die MIDI-Kanäle 1-16 werden hexadezimal durchnummeriert (von 0-F, 0/1/2/3/4/5/6/7/8/9/A/B/C/D/E/F). Controller auf Kanal 16 haben z.B. das Statusbyte BF.
01 ist die Controller-Nummer in hexadezimaler Schreibweise.
Lo7 schließlich beschreibt den Wertebereich dieses Controllers, also alle Werte von 0-127. Lo7 heißt für Logic, dass es auf jeglichen Wert dieses Controllers reagieren soll.

Die Eigenschaft "relativ", also keine direkten Werte zu senden, sondern bereits vorhandene Werte zu erhöhen oder zu verringern, bekommt der Controller durch die Werte die beim links bzw. rechts herum drehen gesendet werden. In diesem Beispiel sendet der Regler beim rechts herum drehen immer wieder den Wert 1, beim links herum drehen immer wieder den Wert 65. An dieser Wiederholung immer derselben Werte erkennt Logic dass der empfangene Controller relativ zu interpretieren ist. An der Höhe der Werte kann Logic zudem erkennen welches relative Format gemeint ist (es gibt deren mehrere, die alle gleich funktionieren und sich nur durch die Werte unterscheiden).

Zwischenruf: "Wie weiß ich denn, wie meine Controller-Nummer in hexadezimal heißt. Und woran erkenne ich überhaupt, ob dezimal oder hexadezimal gemeint ist?"
Tipp: Man kann Werte zwischen dezimal und hexadezimal mit dem OS X Programm "Rechner" umrechnen. In der dezimalen Ansicht die Nummer eingeben und die Ansicht auf hexadezimal umschalten, oder umgekehrt wenn man von hexadezimal nach dezimal umrechnen will.
Tipp 2: Um dezimale von hexadezimalen Zahlen besser unterscheiden zu können, ist es üblich an den Wert ein h anzuhängen, oder ein Dollarzeichen vorweg zu stellen. Das Beispiel oben würde korrekt geschrieben B0h 01h Lo7 oder $B0 $01 Lo7 aussehen. Zur besseren Übersicht habe ich es so geschrieben wie es in Logic erscheint.

Nun zum MPK49. Hier zunächst mal das Display, wenn man einen Regler auf relativen Modus eingestellt hat:

Bild

Wenn man nun an diesem Regler dreht, und sich das Ergebnis in einem MIDI Monitor (nicht in Logic) anschaut, bekommt man folgende Sequenzen von Controllern:
Rechts herum gedreht B0h 63h 7Fh B0h 62h 7Fh B0h 60h 01h
Links herum gedreht B0h 63h 7Fh B0h 62h 7Fh B0h 61h 01h

Wir haben hier also nicht einen Controller sondern deren drei, und der letzte ist auch noch unterschiedlich je nach Drehrichtung? Wie kompass?

AKAI bezeichnet dieses Format als +/- NRPN (was ich bisher so nicht gekannt habe). Wenn man das mal in seine Teile zerlegt, kommt trotzdem eine gewisse Logik dahinter zum Vorschein.
Zunächst mal NRPN. Das heißt ausgeschrieben "Non Registered Parameter Number", und ist ein alter und bekannter MIDI Standard. Damit kann ein Hersteller einen Regler frei einer nicht im MIDI Standard definierten Funktion seines Gerätes zuweisen. Regler-Nummer und Wert lösen jeweils 14 Bit auf, also mögliche 16384 Regler-Nummern, und jede kann bis zu 16384 unterschiedliche Werte senden. Haufen Holz...

Wie geht das aber? Es ist ziemlich allgemein bekannt (und wird immer wieder bemeckert) dass ein einzelner Controller nur 128 Werte haben kann. Hier kommen wir zu MSB und LSB, "Most Significant Byte" und "Least Significant Byte". Eine Regler-Nummer oder ein Regler-Wert wird in zwei Teile zerlegt. Ich nenne das mal das Apothekerschrank-Prinzip: Man stelle sich einen Apothekerschrank mit 128 Schubladen vor, von denen jede 128 Fächer hat. Um eine Schachtel Pillen schnell zu finden, muss man zunächst wissen in welcher Schublade man zu suchen hat, und dann die Nummer des Fachs in dem die Pillen gelagert werden. Die Nummer der Schublade entspricht dem MSB, die Nummer des Fachs entspricht dem LSB. Die Nummer der Schublade ist wichtiger (also "most significant"), weil in jeder Schublade die Fächer 1-128 vorkommen. Die Fachnummer allein nützt einem nichts. Mit beiden Werten zusammen kann man insgesamt 128x128=16384 verschiedene Adressen erzeugen.

Der MIDI Standard sieht vor, dass MSB/LSB für Regler-Nummer und Regler-Wert mit bestimmten Controller-Nummer gesendet werden. Für Regler-Nummer MSB ist das der Controller 99(63h), für LSB der Controller 98(62h). Damit hätten wir schon mal die ersten beiden Controller identifiziert die der MPK49 sendet. Er kodiert damit die Regler-Nummer. Im Display sieht man jeweils 127 für MSB und LSB, in der gesendeten Nachricht entspricht das dem ersten Teil B0h 63h 7Fh (MSB) B0h 62h 7Fh (LSB).

Normal werden in NRPNs auch die Regler-Werte so dargestellt. Allerdings sind das dann absolute Werte, und der MPK49 soll doch relative Daten senden....
Aber auch dafür hat der MIDI Standard gesorgt: Es gibt zwei Controller (die Nummern 96 und 97), die als Increment (Wert erhöhen, Controller 96) und Decrement (Wert verringern, Controller 97) definiert sind. Der Wert des Controller gibt dabei die Schrittweite an, mit der der Wert verändert werden soll.
Beispiel: Ein Controller 96 mit Wert 1 erhöht den aktuellen Wert um 1 Schritt. CC96 mit Wert 5 würde den aktuellen Wert um 5 Schritte erhöhen.
Das gleiche gilt für Decrement, nur dass hier der Controller 97 verwendet wird.
Genau diese Increment/Decrement Controller sind der jeweils dritte Controller in dem String den der MK49 sendet (B0h 60h 01h bzw. B0h 61h 01h).

Zwischenruf: "Welche Auflösung haben denn nun relative Regler?"
Antwort: Im Prinzip gar keine. Ein relativer Regler hat eine Schrittweite. Die Auflösung, also wie genau ein Parameter geregelt werden kann, hängt davon ab wie fein der Parameter auflösen kann. Das sind oft (zumindest bei den Logic eigenen Plug-Ins) weit mehr als die berüchtigten 128 Schritte.
Energischer Zwischenruf: "Bei mir machen die Parameter aber trotz relativer Steuerung nur 128 Schritte."
Antwort: Das ist gut möglich, und hat seinen guten Grund. In Logic gibt es eine Einstellung mit der man die Auflösung relativer Regler begrenzen kann. Sehr gute Endlosregler geben bis zu 5000 Impulse pro Umdrehung. Bei den preiswerten ist es meist sehr viel weniger. Bei sehr hoch auflösenden Plug-Ins wie z.B. dem Sample Delay (Auflösung 1 Sample pro Schritt, 0-10.000 Sample, also zehntausend Schritte) hat man ohne diese Begrenzung der Auflösung eine endlose Kurbelei am Hals. Man kann sich die Auflösung selber einstellen, und dabei den besten Kompromiss zwischen Auflösung und Kurbelei herausfinden. Das Optimum hängt wie gesagt davon ab wie gut die Abtastung des Endlosreglers ist, also wie viele Schritte pro Umdrehung er senden kann. Der Standardwert für die Auflösung relativer Regler in Logic ist 128 Schritte. Man kann das in der unten gezeigten Einstellung auf höhere Werte ändern.

Bild

Im MPK49 ist also die relative Arbeitsweise der Regler nicht im Wert des gesendeten Controller kodiert, sondern wird mit verschiedenen Controller-Nummern dargestellt, deren Werte immer gleich bleiben. Und genau das ist der Punkt an dem die Programme die diese Werte lernen sollen stolpern. Das Kodieren von relativen Werten in die beiden Controller 96 und 97 ist zwar im MIDI Standard definiert, aber ziemlich ungebräuchlich. Breit durchgesetzt hat sich die relative Steuerung wie ganz am Anfang beschrieben. Auch bei den Hardware Controllern die relative Formate unterstützen ist das oben beschriebene Format am gebräuchlichsten.

Zwischenruf: "Und wie geht das jetze in Logic mit dem MPK49??? Ich schlaf gleich ein...".

Gemach, da kommen wir jetzt zu.

Wie schon gesagt versteht Logic nicht was der MPK49 von ihm will, und erkennt dessen Daten nicht so wie sie gemeint sind. Was wir brauchen sind zwei verschiedene Controller-Zuweisungen für jeden Parameter der in Logic gesteuert werden soll. Das ist eigentlich nicht weiter schlimm, wenn man die Zuweisungen manuell editiert. Ich fang mal mit dem Regler an der oben im AKAI Display abgebildet ist. Die Zahlenreihen die man braucht sind immer ähnlich, nur der Wert für MSB/LSB (das sind der dritte und der sechste Wert der gesamten Reihe) ändern sich:
Increment: B0h 63h 7Fh B0h 62h 7Fh B0h 60h 01h
Decrement: B0h 63h 7Fh B0h 62h 7Fh B0h 61h 01h
Die grüne Zahl entspricht dem Wert für NRPN MSB am AKAI (in hexadezimal), die rote Zahl entspricht dem Wert für NRPN MSB am AKAI (in hexadezimal).

So geht es Schritt für Schritt, anhand des oben abgebildeten Reglers am MPK49:
1. In Logic bewege den Regler, den Du mit dem MPK49 steuern willst.
2. Nun aktiviere die Lernfunktion für Controller-Zuweisungen.
3. Drehe den Regler am MPK49.
4. Schalte den Lernmodus in Logic aus.

Nun hat Logic zwar eine Zuweisung für den richtigen Parameter gelernt, aber sie funktioniert nicht wie gewünscht. Jetzt editierst Du die Zuweisung manuell:
5. Setze die richtigen Werte im Feld "Wertänderung" ein, für Increment (Wert erhöhen, rechts herum drehen) sind das:
B0 63 7F B0 62 7F B0 60 01
Diesen String kannst Du einfach hier herauskopieren und in Logic einsetzen.
6. Ändere im Feld "Modus" den Wert auf "Relativ".
Die fertige Zuweisung sollte jetzt so aussehen:

Bild

Mit dieser Zuweisung kann Logic Werte eine Parameters erhöhen. Jetzt fehlt noch die zweite Zuweisung damit man die Werte auch wieder verringern kann:

7. Kopiere die Zuweisung in der Liste links neben den Parametern, und füge sie wieder ein.
8. Ändere im Feld "Wertänderung" die vorletzte Zahl von 60 auf 61.
9. Setze im Feld "Multiplikator vor den Wert 1.00 ein Minus-Zeichen. Damit kehrst Du die Drehrichtung des Reglers um, Logic verringert den Wert des gesteuerten Parameters.
10. Stelle im Feld "Modus" den Wert "Relativ" ein.
Die fertige zweite Zuweisung sollte jetzt so aussehen:

Bild

Um Zuweisungen für Regler mit anderen Nummern zu erstellen, brauchst Du im String B0 63 7F B0 62 7F B0 60 01 die grüne Zahl durch den linken Wert im AKAI (NRPN MSB) in hexadezimal ersetzen, die rote Zahl durch den rechten Wert im AKAI (NRPN LSB).

Beispiel: Im AKAI steht nicht 127 127, sondern 65 127. Zuerst rechne die 65 in eine hexadezimale Zahl um im Rechner:
1. Rechner starten, auf Programmierer-Ansicht schalten (Cmd+3)
2. Zahl eingeben in dezimaler Ansicht:

Bild

3. Rechner auf hexadezimale Ansicht schalten und Wert in den String eintragen:

Bild

Die fertigen Strings:
Increment: B0 63 41 B0 62 7F B0 60 01
Decrement: B0 63 41 B0 62 7F B0 61 01

Ab hier dann wieder wie beschrieben in der Schritt-für-Schritt-Anleitung.

Und was lernen wir daraus?
1. Es gibt für alles eine logische Erklärung.
2. Man kann jedes Thema beliebig breit auswalzen.
3. Der Mensch der sich dieses Format ausgedacht hat gehört an die nächste Kuhstalltür genagelt... 8O :wink:

Grüße, Manfred

PS: Ich hoffe Ihr verzeiht mir die Epistel, aber ich fand das Thema recht interessant 8) Vielleicht war es ja hilfreich.
MacPro 5.1 6 Core 3.33, 16 GB, 10.12.6, ULN 8, MCU,XT,C4,MCC,2MCM|Utr, AMT|MBP 15" i7 16GB 10.12.6, 2882|LPX 10.4.1|Audioease, Waves, PSP, Snlksis, Ohm, UAD, Poco, Snx, NI, SToys, SpSonics, U-he, FbFilt, iZotope, Mldyne, Nuendo, W'lab
Benutzeravatar
MarkDVC
Super Tweaker
Beiträge: 11011
Registriert: 25 Sep 2003 - 10:05
Logic Version: 10
Wohnort: St. Tönis bei Krefeld

Re: FAQ - Logic Studio 8

Beitrag von MarkDVC » 24 Mär 2009 - 17:24

31.

Frage: Warum, wenn ich ein Channel Strip auf Solo schalte, höre ich immer noch andere Signale?

A: Das Stichwort heisst "Solo Safe". Hier ist ein Apple KB Dokument darüber:

http://support.apple.com/kb/TS1939
MacPro 5.1 6 Core 3.33, 16 GB, 10.12.6, ULN 8, MCU,XT,C4,MCC,2MCM|Utr, AMT|MBP 15" i7 16GB 10.12.6, 2882|LPX 10.4.1|Audioease, Waves, PSP, Snlksis, Ohm, UAD, Poco, Snx, NI, SToys, SpSonics, U-he, FbFilt, iZotope, Mldyne, Nuendo, W'lab
Antworten