DE4341787C2 - System zur zeitkorrekten Auslösung von Echtzeitaktionen durch Befehlsequenzen - Google Patents
System zur zeitkorrekten Auslösung von Echtzeitaktionen durch BefehlsequenzenInfo
- Publication number
- DE4341787C2 DE4341787C2 DE19934341787 DE4341787A DE4341787C2 DE 4341787 C2 DE4341787 C2 DE 4341787C2 DE 19934341787 DE19934341787 DE 19934341787 DE 4341787 A DE4341787 A DE 4341787A DE 4341787 C2 DE4341787 C2 DE 4341787C2
- Authority
- DE
- Germany
- Prior art keywords
- time
- delay
- receiver
- actions
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H1/00—Details of electrophonic musical instruments
- G10H1/0033—Recording/reproducing or transmission of music for electrophonic musical instruments
- G10H1/0041—Recording/reproducing or transmission of music for electrophonic musical instruments in coded form
- G10H1/0058—Transmission between separate instruments or between individual components of a musical system
- G10H1/0066—Transmission between separate instruments or between individual components of a musical system using a MIDI interface
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Electrophonic Musical Instruments (AREA)
Description
Als Anfang der achtziger Jahre die Eckdaten für die MIDI-Schnittsteile festgelegt
wurden, war die eigentliche Zielsetzung, Synthesizer untereinander kommunizieren zu
lassen, das heißt, Daten von Tonhöhen und Anschlagsstärken der Noten, die auf einer
Klaviatur gespielt werden, an einen Klangerzeuger zu übermitteln, um die Noten
akustisch umzusetzen oder andere Aktionen auszulösen. Obwohl Musik eine Problem
stellung ist, die aus ihrem Prinzip heraus eine vollständige parallele Verarbeitung durch
die Schnittsteile und den Klangerzeuger verlangt, werden diese Komponenten aus
wirtschaftlichen Gründen in den meisten Fällen seriell, verbunden mit einer entsprechen
den Verarbeitungsgeschwindigkeit, in manchen Fällen auch teilweise parallel ausgeführt.
Die anfallende Datenmenge ist nicht sehr groß: es genügte damals in Hinblick auf die
Datensicherheit und die Herstellungskosten eine serielle Schnittstelle mit einer relativ
geringen Übertragungsrate von 31.5 kBaud. Im MIDI-Standard-Protokoll sind Befehle
mit zwei oder drei Bytes Länge vorgesehen, wie beispielsweise die Note-On und die
Note-Off-Messages (Befehle zum An- und Ausschalten einer Note bzw. eines Oszilla
tors im Klangerzeuger) oder die Program-Change- und die Control-Change-Messages
(Befehle zum Wechseln der Klangprogramme und zum Auslösen weiterer musikalischer
Aktionen wie Vibrato, Klangfarben- und Lautstärkeänderungen). Die Übertragung des
drei Bytes langen Befehlscodes einer Note-On-Message, den eine Klaviatur an einen
Klangerzeuger sendet, wenn eine Taste angeschlagen wurde, dauert etwa 1 ms. Werden
beim Spielen eines Akkords mehrere Tasten auf der Klaviatur gleichzeitig angeschlagen,
so müssen die Befehle für die einzelnen Töne zwangsläufig nacheinander übertragen
werden. Zur vollständigen Übertragung eines sechsstimmigen Akkords benötigt die
Schnittstelle also ca. 6 ms, der letzte Befehl erreicht somit 5 ms später als der erste
Befehl den Empfänger. Dieser Zeitversatz ist für den Menschen normalerweise noch
nicht wahrnehmbar. Im Livebetrieb treten deshalb kaum nennenswerte Timingprobleme
auf, da der Klangerzeuger normalerweise nur von einem einzigen Musiker bedient wird,
wobei sich die anfallende Datenmenge pro Zeitpunkt in engen Grenzen hält.
Der Einsatz von Computern, welche in Verbindung mit der entsprechenden Software
als Sequenzer genutzt werden, ermöglichte später das Aufzeichnen und Speichern der
von einer Klaviatur oder anderen Eingabegeräten gesendeten Daten zusammen mit den
Zeitpunkten ihres Eintreffens und wiederum das automatische Abspielen dieser Daten an
einen oder mehrere Klangerzeuger, welche die Befehle in Töne und andere Aktionen
umwandeln. In Verbindung mit modernen digitalen Klangerzeugern, die auf diese An
wendung hin konzipiert wurden, lassen sich bis zu 16 verschiedene synthetische Instru
mente über 16 adressierbare MIDI-Kanäle gleichzeitig in einem einzigen Klangerzeuger
steuern und damit komplexe musikalische Arrangements realisieren kann.
Die digitale Steuerung von musikalischen Aktionen im Zusammenhang mit dem
MIDI-Interface ist beispielsweise beschrieben im Buch: P. Ackermann, Computer und Musik,
Springer-Verlag Wien-New York 1991, S. 186-203.
In diesem bekannten System, bestehend aus Sequenzer (Sender), Schnittstelle
(Übertragungsweg) und Klangerzeuger (Empfänger), müssen in der Praxis teilweise 30
und mehr Befehle auf verschiedenen MIDI-Kanälen, jedoch über den selben MIDI-Port
für den selben Zeitpunkt übertragen werden, was wegen der seriellen Arbeitsweise der
Schnittstelle prinzipiell nicht zu einem einzigen Zeitpunkt möglich ist. Es ergeben sich
hieraus unterschiedlich lange Blöcke von Aktionsbefehlen, wobei der jeweils erste Befehl
noch rechtzeitig seinen Empfänger erreicht. Der zweite Befehl wird jedoch schon durch
den ersten um ca. 1 ms verzögert, da bei Auftreten von mehreren Befehlen für einen
Zeitpunkt diese im Puffer der Schnittstelle zwischengespeichert und nacheinander
ausgegeben werden. Sie treffen somit zu spät ein, und das je nach Blocklänge mit
wechselnder Verzögerung, die nur schwer zu beeinflussen ist.
Der Klangerzeuger verfügt im allgemeinen über eine CPU, welche für den Empfang
und die Auswertung der MIDI-Befehle, sowie für die Auslösung der Klänge und deren
Veränderung über die Zeit nach vorprogrammierten Abfolgen zuständig ist: ferner führt
sie spontane Veränderungen des bereits klingenden Tones nach Eingang entsprechender
Control-Change-Befehle durch (s. o.). Aus dieser Struktur ergibt sich sich eine weitere
Quelle ungewollter Zeitverzögerungen in dem bekannten System. Die CPU des Klang
erzeugers muß nämlich nach Empfang beispielsweise eines Note-On-Befehls die Para
meter für den zu erzeugenden Klang berechnen, bevor mit der eigentlichen Ausgabe des
Klanges begonnen werden kann, was je nach Schnelligkeit des Prozessors und der
Komplexität der Berechnungen Zeiten im Millisekundenbereich in Anspruch nimmt,
bevor der Klang einschwingt.
Müssen durch den Prozessor in dieser Zeit bereits andere Klänge kontinuierlich aus
gegeben werden, nimmt diese Zeit abermals zu, weil dem Prozessor immer weniger
Rechenzeit zur Verfügung steht. In diesen ungünstigen Fällen, die in der Praxis beim
Betrieb mit Sequenzern jedoch regelmäßig auftreten, wird die ungewollte Verzögerung
der musikalischen Ereignisse für das menschliche Ohr in Form von rhythmischen
Ungenauigkeiten deutlich vernehmbar.
Mit diesem bekannten System läßt sich deshalb nur in einem sehr begrenzten Umfang
bei geringer Datenauslastung oder alternativ unter Benutzung mehrerer paralleler
MIDI-Ports und entsprechend vielen, nur geringfügig ausgelasteten Klangerzeuger
einigermaßen exakt und somit musikalisch arbeiten. Dieses ist für den Anwender eines
solchen Systems eine unwirtschaftliche und unbefriedigende Situation. Selbst bei
Einführung einer erheblich schnelleren Schnittstelle bliebe das Problem der Zeit
verzögerungen innerhalb des Klangerzeugers bestehen, diese lassen sich in dem
bekannten System ausschließlich durch kostenintensive Beschleunigung und/oder
Parallelisierung der beteiligten Hardware im Klangerzeuger verkleinern, jedoch nicht
vollständig eliminieren.
Es ist Aufgabe der Erfindung, ein Verfahren zu schaffen, welches eine zeitlich
exakte Auslösung von Aktionen durch zuvor aufgezeichnete Befehle ermöglicht,
unabhängig von der Übertragungsweise der Schnittstelle und den erforderlichen
Rechenzeiten der Empfänger.
Diese Aufgabe wird mit den Merkmalen des Patentanspruchs 1 gelöst. Vorteilhafte
Ausgestaltungen der Erfindung sind in den Unteransprüchen ausgewiesen.
Die Erfindung beruht auf zwei Tatsachen:
- 1. Das Abspielen gespeicherter Aktionsbefehle per Sequenzer ist keine wirkliche Echtzeitanwendung wie z. B. das direkte Spielen eines Synthesizers über eine Tastatur, weil die Zeitachse im Speicher der Sequenzersoftware abstrahiert vorliegt und somit beliebig verfügbar ist. Der Sequenzer ist bezüglich dieser Daten somit ein nicht-kausales System. Dennoch werden in herkömmlichen Systemen diese Befehle wie Echtzeitbefehle behandelt, d. h. sie werden erst zum Sollzeitpunkt des auszu lösenden Ereignisses an den Klangerzeuger übermittelt, welcher nur eine möglichst kurze Zeit zur Verarbeitung dieser Daten und zum Auslösen der Aktion in Anspruch nehmen darf.
- 2. Die MIDI-Schnittstelle ist nicht grundsätzlich überlastet, sondern nur zu den Zeit punkten, an dem zwei oder mehr Ereignisse gleichzeitig übertragen und ausgelöst werden sollen. Im zeitlichen Mittel ist die Auslastung jedoch relativ gering. Desweiteren ist die Rechenkapazität der Prozessoren in den Klangerzeugern auf diese Belastungsspitzen hin dimensioniert, so daß dazwischen ein Großteil des Potentials ungenutzt bleiben muß.
Bei diesen Belastungsspitzen treten große Blöcke mit vielen Note-On-Befehlen und
anderen Befehlen auf, die theoretisch unendlich schnell über die Schnittstelle übertragen
und vom Klangerzeuger verarbeitet werden müßten. Zu anderen Zeitpunkten ist der
Übertragungsweg jedoch frei, und der Klangerzeuger ist lediglich mit der kontinuierlichen
Ausgabe von Klängen beschäftigt, wobei sein Prozessor nur zu einem geringen
Prozentsatz und vor allem gleichmäßig belastet ist.
Die Erfindung löst diesen Konflikt, indem sie durch eine entsprechende zeitliche
Vorverlegung der beteiligten Prozesse die Belastungsspitzen entzerrt und auf der
Zeitachse verteilt, wobei die Information über den Zeitpunkt der Aktion jedoch nicht
verloren geht.
Bei dem erfindungsgemäßen System wird jedem Aktionsbefehl eine definierte
Zeitverzögerung zugewiesen. Um einen entsprechenden Zeitvorhalt früher startet der
Sequenzer die Übertragung des Befehls und um dieselbe Zeitdauer verzögert der
Empfänger die dazu gehörige Aktion, z. B. die Klangausgabe. Hierbei dient der Beginn,
das Ende oder ein anderer Punkt der Übertragung des Befehls dem Empfänger als
absoluter Referenzzeitpunkt, wobei dieser Zeitpunkt plus die relative Zeitverzögerung
den exakten Sollzeitpunkt für das Einsetzen des Klanges bzw. für das Auslösen der
Aktion ergibt. Somit kompensieren sich die Vorverzögerung der Übermittlung und die
Verzögerung der Aktion.
Die Zeit, die dem Prozessor des Empfängers zwischen dem Empfang eines Befehls
und dem Auslösen der Aktion verbleibt, um die Prozesse zur Auswertung des Befehls
und zur Vorbereitung der Aktion zu beenden, steigt damit von der geforderten kürzest
möglichen Zeit auf die wesentlich längere Zeit, um die die Aktion verzögert werden soll.
So können in diesem Modus ab einer bestimmten Mindestverzögerungszeit die Prozesse
zur Klangdatenberechnung im Rahmen der gewählten Verzögerungszeit flexibel auf der
Zeitachse verteilt werden. Die Mindestverzögerungszeit stellt die untere Grenze der
verfügbaren Verzögerungszeiten dar und ergibt sich aus der maximalen Laufzeit dieser
Prozesse im ungünstigsten Fall (worst case), welcher zum Beispiel auftritt, wenn der
Empfänger die Anzahl von Noten empfängt, die seiner maximalen Polyphonie entspricht,
oder ein Befehl eintrifft, während der Prozessor maximal mit der Ausgabe von Klängen
belastet ist.
Das Ergebnis dieser Berechnung wird bis zum Verstreichen der Verzögerungszeit
zwischengespeichert, dann erfolgt die eigentliche Auslösung der Aktion bzw. die Aufgabe
des Klanges genau zum Sollzeitpunkt. Da die Prozesse nun flexibel gehandhabt werden
können, werden kontinuierlich verfügbare Prozessorkapazitäten frei, welche beispiels
weise für erhöhte Polyphonie im Sequenzbetrieb genutzt werden können.
Eine Art der Realisierung des erfindungsgemäßen Systems sieht eine Funktion vor,
womit eine pro MIDI-Kanal unterschiedliche Verzögerungszeit manuell am Klang
erzeuger aktiviert und eingestellt wird, die dazu entgegengesetzten Vorverzögerungs
zeiten bei der Übertragung der Daten können bei bekannten Sequenzern in bekannter
Weise durch entsprechendes Vorverzögern der betroffenen MIDI-Spuren bzw.
MIDI-Kanäle justiert werden.
Benutzt der Anwender hierbei unterschiedliche Verzögerungszeiten, so werden die
zeitkritischen Datenblöcke gesplittet und in einem großen Rahmen auf der Zeitachse
verteilt, so daß sie sich nicht mehr beeinflussen.
Eine Weiterbildung der Erfindung ermöglicht es, gleichzeitige Aktionen auf ein und
dem selben Kanal, wie zum Beispiel die Töne von Akkorden, Clustern oder überlagerten
Schlagzeugsounds als Akkorde zu identifizieren und diese Töne zeitgleich und zum
korrekten Zeitpunkt wiederzugeben, obwohl alle Befehle hierzu in diesem Fall der selben
kanalbezogenen Vorverzögerungszeit unterliegen:
Erhält ein Klangerzeuger mit aktivierter Verzögerung einen Note-On-Befehl, so wird
er diesen nach Ablauf der Verzögerungszeit als Klang wiedergeben. Folgen diesem
Befehl unmittelbar und ohne Unterbrechung weitere Note-On-Befehle auf dem selben
MIDI-Kanal, so ist dieser Datenblock als Akkord zu identifizieren, dessen Töne alle
zum selben Zeitpunkt wie der erste erklingen sollen. Der Prozessor hat nun den Rest der
verbliebenen Verzögerungszeit Gelegenheit, für alle Töne des Akkords die benötigten
Berechnungen anzustellen, um nach Ablauf der Zeit - gerechnet vom Eingang des ersten
Note-On-Befehls - alle Töne zeitgleich einschwingen zu lassen.
Das erfindungsgemäße System sieht ferner das vollautomatische und dynamische
Management der Verzögerungszeiten durch den Sender vor, welcher die sinnvollen
Verzögerungszeiten anhand der zeitlichen Strukturen der auszulösenden Aktionen
ermittelt und die Information über diese Verzögerungszeiten zusammen mit den Aktions
befehlen oder in einem gesonderten Befehl vor den betroffenen Aktionsbefehlen an den
Empfänger übermittelt.
Im Falle des MIDI-Systems bietet sich hierzu die Definition eines neuen, noch nicht
belegten kanalbezogenen Control-Change-Befehls im Rahmen des MIDI-Standard-Pro
tokolls zur Übermittlung dieser Zeitinformation pro MIDI-Kanal an, wobei auch hier die
oben genannte Methode zur Erkennung von Akkorden zum Einsatz kommen soll.
Der zulässige Wertebereich von 0-127 muß sinnvoll aufgeteilt werden. Eine lineare
Zuordnung auf 100-354 ms Verzögerung erscheint hier praktikabel. Die sich daraus
ergebende Auflösung von 2 ms ist ausreichend: die nutzbare Zeit von 254 ms genügt für
jede musikalische Anwendung. Die Mindestverzögerungszeit von 100 ms ist überdimen
sioniert, und erlaubt dem Empfänger deshalb eine großräumige Verteilung der Prozesse
innerhalb der Verzögerungszeit, ermöglicht desweiteren dem Anwender eine Identi
fikation von Übertragungsfehlern dieses Controllers, da sich in diesem Falle eindeutige
Zeitfehler im musikalischen Bild ergeben. Der Wert 0 entspricht einer Deaktivierung der
Funktion und ermöglicht auf diesem Kanal die herkömmliche Echtzeitsteuerung. Es
besteht somit Aufwärtskompatibilität zu den bekannten Systemen.
Controller-Value | |
Zeitverzögerung | |
1 | |
100 ms (Mindestzeitverzögerung) | |
2 | 102 ms |
. . . | . . . |
126 | 352 ms |
127 | 354 ms (maximale Zeitverzögerung) |
0 | 0 ms (Desaktivierung) |
Dieser separate Verzögerungsbefehl gilt für alle ihm folgenden Aktionsbefehle,
so lange bis ein neuer Verzögerungsbefehl eintrifft. Das hat zur Folge, daß zum Beispiel
die unmittelbar hintereinander übertragene Befehlsfolge
Verzögerungsbefehl|200 ms | |
Aktionsbefehl | #1 |
Verzögerungsbefehl | 150 ms |
Aktionsbefehl | #2 |
bewirkt, daß die Aktion #2 vor der Aktion #1 ausgelöst wird, obwohl die Übertragungs
reihenfolge umgekehrt war.
Wie auch bei der manuellen Aktivierung der Verzögerungszeit ermöglicht das
automatische Management im erfindungsgemäßen System ein gemischtes Betreiben von
erfindungsgemäß zeitkorrigierten Empfängern und herkömmlichen, bekannten Empfängern
an ein und dem selben MIDI-Port, adressiert über verschiedene MIDI-Kanäle. Der
Benutzer hat zur Initialisierung des Systems lediglich anzugeben, welche Empfänger des
Systems bzw. welche Kanäle zur Verarbeitung des Verzögerungsbefehls vorgesehen sind.
Diese Funktion ließe sich auch durch einen automatischen Handshake realisieren, wobei
der Empfänger dem Sender eventuell zusätzlich noch seine individuelle Mindest
verzögerungszeit mitteilt. Erhält der Sender auf einem Kanal keine Rückmeldung, so
muß er von einem herkömmlichen Empfänger ausgehen, welcher in Echtzeit zu steuern
ist.
Wird eine Sequenz gestartet, so ist es möglich, daß Aktionen ausgelöst werden
müssen, die weniger als die minimale Verzögerungszeit von dem Startpunkt entfernt
liegen. Diese Befehle können somit nicht mehr vorverzögert ausgegeben werden und
müssen deshalb im herkömmlichen Echtzeitmodus, d. h. bei deaktivierter Verzögerungs
funktion verarbeitet werden. Alle Aktionen, die weiter als die minimale Verzögerungszeit
hinter dem Startpunkt liegen, werden im Verzögerungsmodus zeitkorrekt wiedergegeben.
Aus diesem Grunde ist der Bediener dazu angehalten, die Sequenz mindestens um diese
Mindestverzögerungszeit vor der ersten Aktion zu starten, was jedoch in der Praxis in
den wenigsten Fällen zu Problemen führt.
Eine sinnvolle Arbeitsweise des automatischen Verzögerungszeiten-Managements
seitens des Senders im erfindungsgemäßen System ist, die Aktionsbefehle so früh wie
möglich an den Empfänger zu übermitteln, d. h. unter Verwendung einer möglichst großen
Vorverzögerungszeit, wobei jedem Aktionsbefehl eine individuelle Verzögerungszeit
zugeordnet wird, das entspricht im Falle des MIDI-Systems einem Verzögerungsbefehl
vor jedem Aktionsbefehl, sofern dieser nicht zu einem Akkord gehört und die zuletzt
geltende Verzögerungszeit nicht mehr verwendet wird. Die Vorverzögerungszeit darf
jedoch immer nur so groß gewählt werden, daß nicht mehr als ein Befehl in den Puffer
der Übertragungsstrecke gelangt, weil dann die Referenzzeitpunkte bei der Übermittlung
der Befehle eingehalten werden.
Ein vereinfachter Algorithmus dazu sieht folgendermaßen aus:
- 1. Warte so lange, bis keine Daten mehr übertragen werden und die Übertragungsstrecke frei ist.
- 2. Berechne die Zeitdifferenz zwischen dem aktuellen Zeitpunkt und dem Sollzeitpunkt der nächstfolgenden Aktion. Ist diese Zeitdifferenz größer als die maximal verfügbare Zeitverzögerung, dann warte so lange, bis die Zeitdifferenz gleich der maximal verfügbaren Zeitverzögerung ist.
- 3. Ist diese Zeitdifferenz kleiner als die Mindestzeitverzögerung, so muß dieser Aktionsbefehl zum Sollzeitpunkt der Aktion in Echtzeit, d. h. bei deaktivierter Verzögerungszeit übertragen werden. (Dieser Fall tritt nur auf, wenn der Sequenzer gerade gestartet wurde oder der Übertragungsweg seit geraumer Zeit ununterbrochen genutzt wurde.)
- 4. Ist die Zeitdifferenz innerhalb des verfügbaren Verzögerungsbereiches, so übertrage den Aktionsbefehl sofort zum aktuellen Zeitpunkt in Verbindung mit der Information über die Zeitverzögerung, die der in Punkt 1. ermittelten Zeitdifferenz entspricht.
- 5. Gehe zu Punkt 1.
Die Erfindung wird im folgenden anhand schematischer Zeichnungen an Ausführungs
beispielen näher erläutert.
Fig. 1 zeigt eine mögliche Verschaltungsvariante des erfindungsgemäßen Systems.
Jeder der Empfänger/Klangerzeuger 1, 2 und 3 erhält dieselben Daten über den Über
tragungsweg/die Schnittstelle 4 vom Sender/Sequenzer 5, in dem die Daten über die
Aktionen gespeichert sind. Die Empfänger selektieren aus dem Datenstrom die für sie
bestimmten Befehle nach den Kanälen aus und lösen die entsprechenden Aktionen aus.
Im Speicher des Sequenzers seien nun die folgenden Aktionen und ihre absoluten oder
relativen Sollzeitpunkte gespeichert:
Die Kanäle 1, 2 und 3 sollen vom selben Empfänger 1 und durch den selben Prozessor
verarbeitet werden, Empfänger 2 empfängt nur Kanal 4 und Empfänger 3 den Kanal 5.
das Beispiel Fig. 1 geht von einem gemischten Betrieb aus: Die Empfänger 1 und 2 seien
für den Empfang von Verzögerungsbefehlen vorgesehen, Empfänger 3 sei ein bekannter,
herkömmlicher Empfänger und somit nicht zum Verzögern von Aktionen fähig. Diese
Umstände sind dem Sender bereits durch manuelle Initialisierung oder Handshake
bekannt. Die Aktionen A#1 bis A#7 sollen zum selben Sollzeitpunkt t=0 stattfinden, die
Aktionen A#8 und A#9 zu verschiedenen Zeitpunkten t=1 und t=2. Die Aktionen A#4,
A#5 und A#6 gehören dem selben Kanal und dem selben Sollzeitpunkt an und
entsprechen deshalb einem Akkord. Der Referenzzeitpunkt für die Verzögerungszeiten
sei jeweils das Ende der Übertragung eines Aktionsbefehl-Codes.
Fig. 2 zeigt für dieses Beispiel die Zeitpunkte der Befehlsübertragung und der
Prozesse in den einzelnen Empfängern und letztlich die Istzeitpunkte der Aktionen im
erfindungsgemäßen System bezüglich der Zeitachse t.
Entsprechend dem weiter oben genannten Algorithmus übermittelt der Sequenzer den
Aktionsbefehl A#1 auf dem Kanal 1 um die maximal verfügbare Zeit V1 vor dem Soll
zeitpunkt t=0 an den Empfänger, nachdem er diese Vorverzögerungszeit V1 dem
Empfänger durch einen entsprechenden Verzögerungsbefehl bekanntgegeben hat.
Dieselbe Prozedur erfolgt mit den Aktionen A#2, A#3 und A#4 auf den entsprechenden
Kanälen 2, 3 und 4 mit den Verzögerungszeiten V2, V3 und V4, wobei diese Zeiten
kleiner sind als die maximal verfügbare Verzögerungszeit und somit auch kleiner sind
als V1, weil diese Aktionsbefehle später übermittelt werden müssen, da sie sonst im
Puffer der Schnittstelle ungewollt zwischengespeichert werden.
Im Sinne der Akkorderkennung werden die Aktionsbefehle A#5 und A#6 unmittelbar
nach A#4 übermittelt, wodurch diese beiden Befehle gemeinsam mit A#4 der Verzöge
rungszeit V4 zugeordnet sind, wobei der Referenzzeitpunkt bereits durch den Aktions
befehl A#4 festgelegt wurde. Der Befehl A#8 und die dazugehörige Verzögerungszeit V5
werden laut Algorithmus direkt nach dem Akkord übermittelt: trotz späterem Sollzeitpunkt
t=1 kann die maximale Verzögerungszeit hier nicht mehr ausgenutzt werden. Danach
erfolgt eine zwangsläufige Übertragungspause, bis A#8 bei Verzögerungszeit V6 (wieder
maximale Verzögerungszeit) übermittelt wird. Der Aktionsbefehl A#7 muß auf
herkömmliche Weise zum Sollzeitpunkt an den Empfänger 3 übertragen werden, da hier
kein Vorverzögern erlaubt ist.
Bei den Empfängern 1 und 2 wird nach Empfang eines Aktionsbefehls damit begonnen,
die zuvor auf diesem Kanal empfangene Verzögerungszeit für diesen Befehl abzuzählen.
Ist der Prozessor momentan verfügbar - wie z. B. bei Aktion A#1 - so wird sofort der
Prozeß P#1 zur Auswertung des Aktionsbefehls und zur Vorbereitung der Aktion
gestartet und das Ergebnis für den Rest der ablaufenden Verzögerungszeit zwischen
gespeichert. Ist der Prozessor momentan nicht verfügbar, wie z. B. bei Aktion A#2 und
A#3, so wird gewartet, wobei die Verzögerungszeit jedoch schon abläuft. Der Prozeß
P#2 startet somit erst nach Beendigung von Prozeß P#1. Durch die Definition der
minimal verfügbaren Verzögerungszeit wird gewährleistet, daß jeder Prozeß noch vor
dem Sollzeitpunkt abgearbeitet werden kann.
Erst nachdem der Empfänger 2 den Aktionsbefehl A#4 empfangen hat und die
Verzögerungszeit V4 gestartet hat, gehen die Aktionsbefehle A#5 und A#6 ein und
werden im Sinne der Akkorderkennung ebenfalls der schon ablaufenden Verzögerungszeit
A#4 zugeordnet. Alle einmal laufenden Verzögerungszeiten - wie z. B. V2 auf Kanal 2 -
werden auch durch innerhalb dieser Zeit eintreffende Verzögerungsbefehle - wie z. B.
V5 ebenfalls auf Kanal 2 - nicht mehr beeinflußt. Nach Ablauf der jeweiligen Verzöge
rungszeiten werden die entsprechenden Aktionen durch die Empfänger 1 und 2 zeit
korrekt, im Falle der Aktionen A#1 bis A#6 zeitgleich ausgelöst. Der herkömmliche
Empfänger 3 kann die Aktion A#7 nur verspätet auslösen, da diese durch den
notwendigen Prozeß P7 verzögert wird.
Fig. 3 zeigt die Verarbeitung derselben Befehlskette im herkömmlichen, bekannten
System. Hier werden die Aktionsbefehle seriell erst ab dem Sollzeitpunkt übertragen. Sie
werden sofort im Empfänger verarbeitet, sofern der Prozessor frei ist und dann werden
die Aktionen ausgelöst. Die Befehle für Empfänger 2 werden nach den Befehlen für
Empfänger 1 ausgegeben und somit verzögert. Die serielle Abarbeitung der Befehle
durch die Prozessoren verzögert die Aktionen um ein weiteres, und zwar abhängig von
der Reihenfolge der Prozesse. Die Darstellung zeigt, daß die Aktionen alle zu unter
schiedlichen Zeitpunkten hinter dem Sollzeitpunkt ausgelöst werden, die Zeitpunkte
hängen von der Reihenfolge der Befehle ab. Anders als im erfindungsgemäßen System
(Fig. 2) wird hier der Aktionsbefehl A#7 für den Empfänger 3 durch die Befehlscodes für
die Empfänger 1 und 2 weiter nach hinten geschoben, was andersherum zeigt, daß bei
gemischtem Betrieb (Fig. 2) die herkömmlichen Empfänger in ihrem Timingverhalten
nicht weiter negativ beeinflußt werden.
Claims (9)
1. Verfahren zur seriellen Übertragung der Musikdaten von einem Sequenzer über
eine Schnittstelle auf einen Empfänger zum Auslösen musikalischer Aktionen, das
folgende Merkmale aufweist:
- - Die Befehle für die Aktionen sind mit deren Sollzeitpunkten im Sequenzer gespeichert und werden über die Schnittstelle an den Empfänger übertragen.
- - Zur Vermeidung von Zeitversatz einzelner Aktionen bei mehreren gleichzeitig an der Schnittstelle anstehenden Befehlen werden diese mit einem Zeitvorhalt vor ihrem jewei ligen Sollzeitpunkt übertragen.
- - Der einem Befehl zugeordnete Zeitvorhalt wird ebenfalls an den Empfänger übertragen.
- - Im Empfänger werden nach Zwischenspeicherung die Aktionen nach Ablauf einer durch den jeweiligen Zeitvorhalt gegebenen Verzögerungszeit ausgelöst.
2. Verfahren nach Anspruch 1, das folgende weitere Merkmale aufweist:
- - Zur empfängerseitigen Vermeidung von Zeitversatz der Aktionen von ihren jeweiligen Sollzeitpunkten arbeitet der Empfänger diejenigen Prozesse, die zur Vorbereitung der jeweiligen musikalischen Aktion erforderlich sind, innerhalb der für diese Aktion gege benen Verzögerungszeit ab.
- - Die Ergebnisse dieser Prozesse werden bis zum Ende der verstreichenden Verzöge rungszeit zwischengespeichert.
3. Verfahren nach Anspruch 2 mit der Maßgabe, daß für die Verzögerungszeit eine
untere Grenze festgelegt wird, die mindestens so groß ist wie die maximale Laufzeit der
Prozesse.
4. Verfahren nach einem der Ansprüche 1 bis 3, das folgende weitere Merkmale
aufweist:
- - Der Sequenzer steuert die Verzögerungszeit dynamisch in der Weise, daß die Zeit vorhalte durch Analyse der Zeitstruktur der auszulösenden Aktionen ermittelt werden und die Information über die Länge des Zeitvorhaltes jeweils in einem gemeinsamen Befehl zusammen mit dem Aktionsbefehl an den Empfänger übertragen werden.
5. Verfahren nach einem der Ansprüche 1 bis 3, das folgende weitere Merkmale
aufweist:
- - Der Sequenzer steuert die Verzögerungszeit dynamisch in der Weise, daß die Zeit vorhalte durch Analyse der Zeitstruktur der auszulösenden Aktionen ermittelt werden und die Information über die Länge des Zeitvorhaltes gemeinsam für eine bestimmte Gruppe von Aktionen, welche durch eine gemeinsame Kanalnummer identifiziert werden, in einem separaten Befehl auf dieser Kanalnummer vor den betreffenden Aktionsbefehlen an den Empfänger übertragen wird, wobei die Verzögerungszeit für alle folgenden Aktionsbefehle gilt, die der betroffenen Gruppe angehören, so lange bis ein neuer Verzögerungsbefehl auf dieser Kanalnummer eingeht.
6. Verfahren nach Anspruch 5, das folgende weitere Merkmale aufweist:
- - Zur Vermeidung von Zeitversatz bei Aktionen mit gleicher Kanalnummer unter Benutzung eines konstanten Zeitvorhaltes werden diejenigen Aktionsbefehle, die derselben Gruppe oder derselben Kanalnummer zugeordnet sind und somit derselben Zeitverzögerung unterliegen, jedoch gleichzeitige Aktionen auslösen sollen, insbesondere musikalische Akkorde oder Kluster, unmittelbar hintereinander und ohne Unterbrechung an den Empfänger übermittelt, wobei sich der verwendete Zeitvorhalt auf den ersten dieser übertragenen Aktionsbefehle bezieht.
- - Der Empfänger nimmt den Übertragungszeitpunkt des ersten Aktionsbefehls als Referenzzeitpunkt für die nun startende Zeitverzögerung, wobei alle unmittelbar und ohne Unterbrechung folgenden Aktionsbefehle derselben Gruppe dieser bereits ablaufenden Verzögerungszeit zugeordnet werden.
- - Nach Ablauf dieser gemeinsamen Zeitverzögerung löst der Empfänger alle betroffenen Aktionen zum gemeinsamen Sollzeitpunkt aus.
7. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Modus der
Verzögerung beim Empfänger für alle Befehle oder für eine bestimmte Gruppe von
Befehlen desaktivierbar ist, um eine Echtzeitsteuerung zu ermöglichen.
8. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Sequenzer bei
einer Initialisierung oder durch einen automatischen Handshake mit den angeschlossenen
Empfängern eine Information darüber erhält, welcher Empfänger und/oder welcher
Kanal zur Verarbeitung des Verzögerungsbefehls fähig ist.
9. Verfahren nach einem der Ansprüche 3 bis 8, wobei der Sequenzer bei einer
Initialisierung oder durch einen automatischen Handshake mit den angeschlossenen
Empfängern eine Information darüber erhält, wie groß die minimal verfügbare
Verzögerungszeit eines jeden Empfängers ist.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19934341787 DE4341787C2 (de) | 1993-12-08 | 1993-12-08 | System zur zeitkorrekten Auslösung von Echtzeitaktionen durch Befehlsequenzen |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19934341787 DE4341787C2 (de) | 1993-12-08 | 1993-12-08 | System zur zeitkorrekten Auslösung von Echtzeitaktionen durch Befehlsequenzen |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4341787A1 DE4341787A1 (de) | 1995-08-17 |
DE4341787C2 true DE4341787C2 (de) | 1995-11-16 |
Family
ID=6504450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19934341787 Expired - Fee Related DE4341787C2 (de) | 1993-12-08 | 1993-12-08 | System zur zeitkorrekten Auslösung von Echtzeitaktionen durch Befehlsequenzen |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4341787C2 (de) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10030357A1 (de) | 2000-06-21 | 2002-01-17 | Heidenhain Gmbh Dr Johannes | Verfahren und Vorrichtung zur seriellen Datenübertragung zwischen einem Positionsmesssystem und einer Verarbeitungseinheit |
DE10111630A1 (de) | 2001-03-09 | 2002-11-07 | Heidenhain Gmbh Dr Johannes | Verfahren zum Betrieb einer Positionsmesseinrichtung und hierzu geeignete Positionsmesseinrichtung |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2148576B (en) * | 1983-10-06 | 1986-09-24 | Casio Computer Co Ltd | Music playing system |
JP2892532B2 (ja) * | 1991-07-31 | 1999-05-17 | 株式会社リコス | 音楽情報の高速処理装置 |
-
1993
- 1993-12-08 DE DE19934341787 patent/DE4341787C2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE4341787A1 (de) | 1995-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2149104A1 (de) | Verfahren und einrichtung zum adressieren einer speicherstelle mit wahlweise bestimmbaren geschwindigkeiten | |
DE3318667C1 (de) | Elektronisches Tastenmusikinstrument und Verfahren zu dessen Betrieb | |
DE2712226A1 (de) | Tongeneratoranordnung, insbesondere fuer ein elektronisches musikinstrument | |
EP1076847B1 (de) | Verfahren zum a/d-wandeln analoger signale sowie entsprechende a/d-wandleranordnung | |
DE68907648T2 (de) | Elektronisches musikinstrument. | |
DE3023581C2 (de) | Verfahren zur digitalen Hüllkurvensteuerung eines polyphonen Musiksyntheseinstruments und Schaltungsanordnung zur Durchführung des Verfahrens | |
DE2745196C2 (de) | Hüllkurvengenerator | |
DE2819269C2 (de) | ||
DE69321650T2 (de) | In elektronischen Musikinstrumenten verwendete Vorrichtung zur Verarbeitung von digitalen Signalen | |
DE4341787C2 (de) | System zur zeitkorrekten Auslösung von Echtzeitaktionen durch Befehlsequenzen | |
EP0010600B1 (de) | Verfahren zur codierten Übertragung von Sprachsignalen, Verwendung des Verfahrens in einem Zeitmultiplex-Übertragungssystem und Anordnung zur Durchführung des Verfahrens | |
DE69705434T2 (de) | Tonerzeugungssystem unter Verwendung eines Computerprogrammes | |
DE2641452A1 (de) | Elektronisches musikinstrument | |
DE69618907T2 (de) | Verfahren und Vorrichtung zur Tonerzeugung | |
EP0126975A2 (de) | Elektronisches Tasteninstrument | |
DE3100934C2 (de) | Verfahren und Vorrichtung zum Tasten von elektronischen Musikinstrumenten | |
DE69732797T2 (de) | Verfahren und vorrichtung zur speicherung von tonfolgen in cyclischen schleifen | |
DE3249791C2 (de) | Elektronisches Musikinstrument | |
DE69414477T2 (de) | Verfahren zur zeitlichen Einteilung von zu Nachrichten gehörenden Zellemissionen sowie Vorrichtung zur Durchführung dieses Verfahrens | |
EP0030034B1 (de) | Digitale Halbleiterschaltung für eine elektronische Orgel | |
EP1649355A1 (de) | Verfahren und System zur Darstellung von digitalen Anzeigeelementen | |
WO2000003325A2 (de) | Can-modul | |
EP0043093B1 (de) | Digitale Halbleiterschaltung für eine elektronische Orgel | |
DE2635306C2 (de) | System zur Zeitmultiplex-Übertragung asynchroner Binärwertwechsel von Datensignalen | |
DE2327375C2 (de) | PCM-Vermittlungsstelle mit Zeitvielfach- und Raumvielfacheinrichtungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8122 | Nonbinding interest in granting licences declared | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |