DE69618907T2 - Verfahren und Vorrichtung zur Tonerzeugung - Google Patents

Verfahren und Vorrichtung zur Tonerzeugung

Info

Publication number
DE69618907T2
DE69618907T2 DE69618907T DE69618907T DE69618907T2 DE 69618907 T2 DE69618907 T2 DE 69618907T2 DE 69618907 T DE69618907 T DE 69618907T DE 69618907 T DE69618907 T DE 69618907T DE 69618907 T2 DE69618907 T2 DE 69618907T2
Authority
DE
Germany
Prior art keywords
tone
tone generation
waveform data
generation processing
generating
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 - Lifetime
Application number
DE69618907T
Other languages
English (en)
Other versions
DE69618907D1 (de
Inventor
Motoichi Tamura
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Publication of DE69618907D1 publication Critical patent/DE69618907D1/de
Application granted granted Critical
Publication of DE69618907T2 publication Critical patent/DE69618907T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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
    • G10H5/00Instruments in which the tones are generated by means of electronic generators
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Details of electrophonic musical instruments
    • G10H1/18Selecting circuits
    • G10H1/183Channel-assigning means for polyphonic instruments
    • G10H1/185Channel-assigning means for polyphonic instruments associated with key multiplexing
    • G10H1/186Microprocessor-controlled keyboard and assigning means
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/311MIDI transmission

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf Techniken zur Tondatenerzeugung und insbesondere auf ein Verfahren und eine Vorrichtung, die geeignet sind, einen arithmetischen Universalrechner, wie z. B. eine CPU, zu veranlassen, eine Tonerzeugungsbearbeitung auszuführen.
  • Bei vielen elektronischen Musikinstrumenten werden heutzutage Mikroprozessoren verwendet, um die Tonerzeugungsbearbeitung auszuführen. In einigen Fällen führen die Mikroprozessoren sogar Bearbeitungen aus, um den Tondaten, die durch die Tonerzeugungsbearbeitung gebildet wurden, Effekte beizumischen. Es ist schon lange allgemeine Praxis, solche Mikroprozessoren durch spezielle Hardware zu implementieren (beispielsweise einen Tongenerator LSI oder DSP), der eine Schaltstruktur aufweist, welche von dem besonderen eingesetzten Tonerzeugungsverfahren abhängt (zum Beispiel Wellenformspeicher- oder FM-Syntheseverfahren).
  • Dank der jüngsten Verbesserung der Rechenfähigkeit von CPUs sind jedoch elektronische Musikinstrumente erschienen, in denen die CPU, welche in einen Universalrechner geladen wurde, oder die ausgewählte Tonerzeugungsvorrichtung programmiert wird, um die nötige Tonerzeugungsbearbeitung auszuführen. Hier wird eine solche Tonerzeugungsvorrichtung oder ein Verfahren "Softwaretongenerator" genannt, während die traditionelle Tonerzeugungsvorrichtung oder das Verfahren "Hardwaretongenerator" genannt wird.
  • US 5,283,386 offenbart die Technik des Erzeugens von Tönen durch eine CPU, die als Tongenerator ein Softwareprogramm ausführt, wobei die offenbarte Technik die CPU in jedem Abtastzyklus unterbricht, um Daten aus nur einem Abtastwert zu bilden.
  • US 5,376,752 offenbart einen Musiksynthesizer mit dynamischer Stimmenzuordnung. Das bekannte System ordnet dynamisch mehrere Stimmen zu, wobei jede einen unterschiedlichen digitalen Bearbeitungsalgorithmus zur Ausführung erfordert. Das System ist auf das Zuordnen von Stimmen zu deren entsprechenden Bearbeitungsalgorithmen in Echtzeit gerichtet.
  • US 5,432,293 beschreibt eine Wellenformerzeugungsvorrichtung, die einen Wellenformspeicher in mehreren Modi auslesen kann. Die Vorrichtung ist auf das Kombinieren der Bearbeitung von Wellenformdaten, die eine hohe Genauigkeit erfordern, durch Einsetzen eines Interpolationsalgorithmus mit dem Verarbeiten von Wellenformdaten gerichtet, welche eine solche Operation nicht benötigen. Dies erfolgt durch Verwenden von zwei Bearbeitungsmodi, einen, der einen Interpolationsschritt beinhaltet, wobei der andere keinen solchen Schritt beinhaltet. Die Auswahl der Modi wird entsprechend der Qualität der zu verarbeitenden Wellenformdaten ausgeführt.
  • Beim Softwaretongenerator muss die CPU gleichzeitig die Tonerzeugungsbearbeitung und zahlreiche andere Bearbeitungen ausführen. Somit ist es in Fällen, in denen ein Universalrechner zur Implementierung des Softwaretongenerators verwendet wird, wünschenswert, die Tonerzeugungsbearbeitung mit einem Betriebssystem durchzuführen, welches eine Multitaskfunktion aufweist (beispielsweise Windows 95 (Handelsmarke) von Microsoft Corporation), um sicherzugehen, dass die Tonerzeugungsbearbeitung ausgeführt wird, ohne durch die andere Bearbeitung beeinflusst zu werden.
  • Heutzutage werden aber tatsächlich Betriebssysteme ohne Multitaskfunktion (z. B. Windows 3.1 (Handelsmarke) von Microsoft Corporation) weit verbreitet verwendet, und es besteht ein großer Bedarf, dass die Tonerzeugungsbearbeitung mit solchen Betriebssystemen ausgeführt werden kann. Mit diesen Betriebssystemen neigt die Ausführung der Tonerzeugungsbearbeitung oftmals dazu, durch einen Einfluss der anderen Bearbeitung verzögert zu werden, woraus sich eine deutliche Behinderung für die Tonerzeugung ergeben könnte.
  • Es ist daher eine Aufgabe der vorliegenden Erfindung, eine Tonerzeugungsvorrichtung und ein Verfahren auf der Grundlage eines Softwaretongenerators zur Verfügung zu stellen, die effektiv eine Behinderung der Tonerzeugung vermeiden, sogar, wenn die Tonerzeugungsbearbeitung mit einem Betriebssystem ausgeführt wird, das keine volle Multitaskfunktion aufweist.
  • Um das oben erwähnte Ziel zu erreichen, stellt die vorliegenden Erfindung eine Tonerzeugungsvorrichtung zur Verfügung, die folgendes aufweist: eine Zuführeinheit zum Zuführen einer Spielinformation; eine Speichereinheit, um eine Vielzahl von Programmen, einschließlich eines Tonerzeugungsprogramms dort zu speichern; und eine arithmetische Universalrechnereinheit, die in der Lage ist, die in der Speichereinheit gespeicherten Programme gleichzeitig parallel auszuführen, wobei die arithmetische Rechnereinheit veranlasst, dass eine Vielzahl von internen Unterbrechungssignalen innerhalb einer vorgegebenen Zeitperiode erzeugt werden und im Ansprechen auf die internen Unterbrechungssignale das Tonerzeugungsprogramm aktiviert wird, um Wellenformdaten auf der Grundlage der durch die Zuführeinheit zugeführten Spielinformationen zu erzeugen. Das durch die arithmetische Rechnereinheit aktivierte Tonerzeugungsprogramm enthält einen Einstellmechanismus zum Einstellen eines Umfangs einer zu erzeugenden Wellenform, so dass eine vorgegebene Anzahl von Abtastwerten von Wellenformdaten kumulativ innerhalb der vorgegebenen Zeitperiode durch Wellenformdaten-Bildungsoperationen gebildet werden, die durch das von der arithmetischen Rechnereinheit aktivierte Tonerzeugungsprogramm ausgeführt werden.
  • Nach einer bevorzugten Ausführungsform reduziert, wenn die vorgegebene Anzahl von Abtastwerten von Wellenformdaten nicht alleine durch die durch das aktivierte Tonerzeugungsprogramm ausgeführten Wellenformdaten-Bildungsoperationen gebildet werden können, der Einstellmechanismus für jeden Tonerzeugungskanal, der durch die Spielinformation zur Tonerzeugung bezeichnet wurde, eine bestimmte Anzahl von Tonerzeugungskanälen, die zur Bildung der Wellenformdaten zu verwenden sind, so dass eine Bildung der vorgegebenen Anzahl von Abtastwerten von Wellenformdaten gesichert ist.
  • Es sind Softwaretongeneratoren bekannt, die ausgestaltet sind, eine vorbestimmte Anzahl von Abtastwerten der Tondaten in jeder vorbestimmten Zeitperiode zu bilden und später alle gebildeten Tondaten zusammen wiederzugeben. Allgemein wird in einem solchen Softwaretongenerator die Tonerzeugungsbearbeitung nur einmal (zu nur einer Aktivierungszeit) in jeder vorbestimmten Zeitperiode aktiviert, um die vorbestimmte Anzahl von Abtastwerten von Tondaten für die Zeitperiode zu bilden. Wenn jedoch ein Betriebssystem des Softwaretongenerators keine volle Multitaskfunktion aufweist, kann die Tonerzeugungsbearbeitung unter Umständen nicht zum Aktivierungszeitpunkt aktiviert werden oder neigt dazu, aufgrund eines Einflusses anderer Bearbeitungen nach der Aktivierungszeit aktiviert zu werden. Daher können die Operationen zum Bilden der vorbestimmten Anzahl von Abtastwerten von Tondaten manchmal nicht innerhalb der vorbestimmten Zeitperiode abgeschlossen werden, was eine merkliche Behinderung der nötigen Tonerzeugung verursachen würde.
  • Nach der Tonerzeugungsvorrichtung der vorliegenden Erfindung, welche in der oben erwähnten Weise angeordnet ist, wird jedoch die Tonerzeugungsbearbeitung mehrmals (d. h. zu mehreren Aktivierungszeitpunkten) innerhalb jeder vorbestimmten Zeitperiode aktiviert. Somit kann, sogar wenn die Tonerzeugungsbearbeitung bei einigen der Aktivierungszeitpunkte nicht aktiviert wird, die vorbestimmte Anzahl der Abtastwerte von Tondaten in geeigneter Weise innerhalb der vorbestimmten Zeitperiode gebildet werden, und zwar durch die Tondaten-Bildungsoperationen, die nur zu den anderen Aktivierungszeitpunkten verspätet ausgeführt werden, wenn die Tonerzeugungsbearbeitung tatsächlich aktiviert wird. Diese Anordnung vermeidet auf verlässliche Weise eine Behinderung der Tonerzeugung.
  • Nach einer weiteren Ausführungsform weist die Vorrichtung außerdem folgendes auf: ein erstes Register, um dort, wenn eine Tonerzeugungsbearbeitung auf der Grundlage der Spielinformation einem unbenutzten Tonerzeugungskanal zugewiesen ist, einen Parameter zur Steuerung der Tonerzeugungsbearbeitung zu speichern; und ein zweites Register, um dort, wenn eine neue Tonerzeugungsbearbeitung auf der Grundlage einer anderen Spielinformation dem Tonerzeugungskanal zugewiesen ist, während der Kanal nicht für die neue Tonerzeugungsbearbeitung verfügbar ist, einen Parameter zur Steuerung der neuen Tonerzeugungsbearbeitung zu speichern. Das durch die arithmetische Rechnereinheit aktivierte Tonerzeugungsprogramm enthält außerdem einen Auswählmechanismus zum Auswählen des ersten Registers vor einem vorgegebenen Zeitpunkt, um die neue Tonerzeugungsbearbeitung zu starten, und zum Auswählen des zweiten Registers nach dem vorgegebenen Zeitpunkt. Die Erzeugung von Wellenformdaten wird im Tonerzeugungskanal durchgeführt, wobei ein ausgewähltes der ersten und zweiten Register verwendet wird.
  • Wenn die neue Tonerzeugungsbearbeitung auf der Grundlage neu zugeführter Spielinformationen einem solchen Kanal zugewiesen wird, der noch für die laufende Tonerzeugungsbearbeitung verwendet wird, können Parameter zur Steuerung der neuen Tonerzeugungsbearbeitung für eine lange Zeit nicht in das zugehörige Register aufgenommen werden, bis die laufende Tonerzeugungsbearbeitung in dem Kanal beendet ist; die neue Tonerzeugungsbearbeitung kann nämlich nicht in dem Kanal vorbereitet werden. Sogar wenn die Aktivierung der Tonerzeugungsbearbeitung während einer solchen Zeit stattfindet, kann somit die neue Tonerzeugungsbearbeitung in diesem Tonerzeugungskanal nicht ausgeführt werden, was die Tondaten-Bildungsoperationen sogar noch weiter verzögern würde.
  • Nach der Tonerzeugungsvorrichtung und dem Verfahren der vorliegenden Erfindung, die in der oben erwähnten Weise angeordnet sind, kann jedoch, wenn eine neue Tonerzeugungsbearbeitung auf der Grundlage einer neu zugeführten Spielinformation einem solchen Kanal zugewiesen wird, der noch für die laufende Tonerzeugungsbearbeitung verwendet wird und daher für die neue Tonerzeugungsbearbeitung nicht zur Verfügung steht, die neue Tonerzeugungsbearbeitung im Kanal sofort im zweiten Register vorbereitet werden, während die fortlaufende Ausführung der laufenden Tonerzeugungsbearbeitung in dem Kanal unter Verwendung des ersten Registers sichergestellt wird. Diese Anordnung kann auf verlässliche Weise eine unerwünschte Verzögerung in der Tondatenbildung aufgrund der verzögerten Vorbereitung der neuen Tondatenbearbeitung verhindern.
  • Wenn im bekannten Softwaretongenerator die Tonerzeugungsbearbeitung zum Aktivierungszeitpunkt nicht aktiviert wird oder nach dem Aktivierungszeitpunkt aufgrund des Einflusses einer anderen Bearbeitung aktiviert wird, dann wird das Intervall zwischen einem Zeitpunkt, zu dem Spielinformationen zugeführt werden, und einem Zeitpunkt, zu dem die Tonerzeugungsbearbeitung auf der Grundlage von Spielinformationen später begonnen wird, länger. Als Ergebnis kann eine Situation auftreten, in der viele der Tonerzeugungskanäle die Tonerzeugungsbearbeitung nicht initiieren können, wobei ihre zugehörigen Register Parameter zur Steuerung der Bearbeitung dort gespeichert haben. Wenn eine neue Tonerzeugungsbearbeitung auf der Grundlage neu zugeführter Spielinformationen einem solchen Kanal zugewiesen wird, der für die laufende Tonerzeugungsbearbeitung noch verwendet wird, können Parameter zur Steuerung der neuen Tonerzeugungsbearbeitung für eine lange Zeit nicht in das zugehörige Register aufgenommen werden, bis die laufende Tonerzeugungsbearbeitung in dem Kanal beendet ist; die neue Tonerzeugungsbearbeitung kann nämlich in dem Kanal nicht vorbereitet werden. Sogar wenn die Aktivierung der Tonerzeugungsbearbeitung während einer solchen Zeit stattfindet, kann daher die neue Tonerzeugungsbearbeitung in diesen Tonerzeugungskanal nicht ausgeführt werden, was die Tondatenbildungsoperationen sogar weiter verzögern würde.
  • Nach der Tonerzeugungsvorrichtung und dem Verfahren der vorliegenden Erfindung, die in der oben erwähnten Weise angeordnet sind, kann jedoch, wenn eine neue Tonerzeugungsbearbeitung auf der Grundlage einer neu zugeführten Spielinformation einem solchen Kanal zugewiesen wird, der noch für die laufende Tonerzeugungsbearbeitung verwendet wird und daher für die neue Tonerzeugungsbearbeitung nicht zur Verfügung steht, die neue Tonerzeugungsbearbeitung im Kanal sofort im zweiten Register vorbereitet werden, während die fortlaufende Ausführung der laufenden Tonerzeugungsbearbeitung in dem Kanal unter Verwendung des ersten Registers sichergestellt wird. Diese Anordnung kann auf verlässliche Weise eine unerwünschte Verzögerung in der Tondatenbildung aufgrund der verzögerten Vorbereitung der neuen Tondatenbearbeitung verhindern.
  • Nach einer weiteren Ausführungsform der Erfindung kann die Vorrichtung weiter folgendes aufweisen: eine Vielzahl von Ausgabepuffern zum Einschreiben von Wellenformdaten; und eine Wiedergabeeinheit zum sequenziellen Wiedergeben der Wellenformdaten von einem der Ausgabepuffer, der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde. Das durch die arithmetische Rechnereinheit aktivierte Tonerzeugerprogramm enthält Programmkodemechanismen, um einen Tonerzeugungsprozess zur Erzeugung von Wellenformdaten auf der Grundlage der Spielinformationen vor einer Wiedergabezeit der Wiedergabeeinheit, einen Schreibprozess zum Einschreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht reserviert ist, und einen Reservierungsprozess zur Reservierung des anderen Ausgabepuffers zu implementieren, der die Wellenformdaten zur nachfolgenden Wellenformdatenwiedergabe durch die Wiedergabeeinheit dort eingeschrieben hat. Der Tonerzeugungsprozess empfängt die Spielinformationen von der Zuführeinheit zu einem Zeitpunkt, der dem Wiedergabezeitpunkt um eine Zeit vorangeht, die der Gesamtkapazität der Ausgabepuffer entspricht, und zwei oder mehrere der Ausgabepuffer können durch den Reservierungsprozess simultan reserviert werden.
  • Wenn in dem bekannten Softwaretongenerator eine Tonerzeugungsbearbeitung nach einer vorbestimmten Zeit aufgrund eines Einflusses einer anderen Bearbeitung aktiviert wird, würde die Wiedergabe der Töne verzögert und die Tonerzeugung stark behindert werden. Nach der Tonerzeugungsvorrichtung und dem Verfahren der vorliegenden Erfindung, die in der oben erwähnten Weise angeordnet sind, können Töne jedoch, sogar wenn die Tonerzeugungsbearbeitung nicht innerhalb einer vorbestimmten Zeitperiode aktiviert wird, ohne unerwünschte Unterbrechung wiedergegeben werden, solange die Tonerzeugungsbearbeitung aktiviert wird und die Wiedergabe von einem der Ausgabepuffer erfolgt, bevor die Wiedergabe von allen reservierten Ausgabepuffern beendet ist. Diese Anordnung kann effektiv einen Toleranzbereich der Zeitverzögerung bei der Aktivierung der Tonerzeugungsbearbeitung erweitern, was eine unerwünschte Unterbrechung in einen Strom von erzeugten Tönen verhindert.
  • Nach einer weiteren Ausführungsform weist die Tonerzeugungsvorrichtung außerdem folgendes auf: eine Vielzahl von Ausgabepuffern zum Einschreiben von Wellenformdaten; und eine Wiedergabeeinheit zum sequenziellen Wiedergeben der Wellenformdaten, die in einem der Ausgabepuffer gespeichert sind, der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde. Das durch die arithmetische Rechnereinheit aktivierte Tonerzeugungsprogramm enthält einen Programmkodemechanismus, um einen Tonerzeugungsprozess zur Erzeugung von Wellenformdaten auf der Grundlage von Spielinformationen, die durch die Zuführeinheit vor einer Wiedergabezeit der Wiedergabeeinheit zugeführt werden, einen Schreibprozess zum Einschreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht reserviert wurde, und einen Reservierungsprozess zur Reservierung des anderen Ausgabepuffers zu implementieren, der die Wellenformdaten zur nachfolgenden Wellenformdatenwiedergabe durch die Wiedergabeeinheit dort eingeschrieben hat. Der Tonerzeugungsprozess ist in der Lage, Wellenformdaten zum Einschreiben in zwei oder mehrere Ausgabepuffer früher zu erzeugen, und er bestimmt auf der Grundlage einer bestimmten Anzahl von Abtastwerten von Wellenformdaten, die zum Zeitpunkt einer Aktivierung des Tonerzeugungsprozesses früher erzeugbar sind, eine Gesamtzahl der Abtastwerte der zu erzeugenden Wellenformdaten.
  • Auf der Grundlage der bestimmten Anzahl der früher erzeugbaren Abtastwerte von Wellenformdaten kann der Tonerzeugungsprozess die gesamte Anzahl von Abtastwerten von Wellenformdaten bestimmen, die in einem Bereich zu erzeugen sind, der eine vorgegebene obere Grenze nicht überschreitet.
  • Die arithmetische Universalrechnereinheit kann veranlassen, dass die Vielzahl interner Unterbrechungssignale auf nicht periodische Art erzeugt werden. In dieser Ausführungsform weist das durch die arithmetische Rechnereinheit aktivierte Tonerzeugungsprogramm folgendes auf: einen ersten Mechanismus zum variablen Anweisen, dass eine bestimmte Anzahl von Tonwellenformabtastwerten durch Aktivierung des Tonerzeugungsprogramms erzeugt wird; und einen zweiten Mechanismus zur Erzeugung der bestimmten Anzahl von Tonwellenformabtastwerten, die durch den ersten Mechanismus durch Aktivierung des Tonerzeugungsprogramms variabel angewiesen wurden.
  • Nach einer weiteren Ausführungsform der Erfindung weist die Vorrichtung außerdem folgendes auf: eine Puffereinheit zum temporären Speichern von Daten von Tonwellenformen; und eine Wiedergabeeinheit zur Wiedergabe von Tonwellenformen durch sequenzielles Auslesen der gespeicherten Daten aus der Puffereinheit. Die arithmetische Universalrechnereinheit veranlasst, dass die Vielzahl von internen Unterbrechungssignalen auf eine nichtperiodische Weise erzeugt werden. Die Spielinformation wird durch die Zuführeinheit vor einem Wiedergabezeitpunkt der Wiedergabeeinheit zugeführt, und das durch die arithmetische Rechnereinheit aktivierte Tonerzeugungsprogramm weist folgendes auf: einen ersten Mechanismus zum Bestimmen einer Zielanzahl von Tonwellenformabtastwerten, die zu einem Zeitpunkt einer aktuellen Aktivierung des Tonerzeugungsprogramms erzeugbar sind; und einen zweiten Mechanismus zum Erzeugen einer bestimmten Anzahl von Tonwellenformabtastwerten im Ansprechen auf die aktuelle Aktivierung des Tonerzeugungsprogramms, wobei die bestimmte Anzahl derart bestimmt wird, dass die bestimmte Anzahl der Zielanzahl folgt und die durch den zweiten Schritt erzeugten Tonwellenformabtastwerte in der Puffereinheit temporär gespeichert werden.
  • Nach der Tonerzeugungsvorrichtung der vorliegenden Erfindung, angeordnet in der oben erwähnten Weise, wird die Steuerung jedesmal, wenn die Tonerzeugungsbearbeitung aktiviert wird, so durchgeführt, dass Tonbildungsoperationen bis zu einer bestimmten Anzahl von Abtastwerten von Tondaten für diesen Aktivierungszeitpunkt als Zielwert durchgeführt werden. Somit kann eine vorbestimmte Anzahl von Abtastwerten von Tondaten innerhalb der vorbestimmten Zeitperiode durch Tondatenbildungsoperationen gebildet werden, wobei dies nur geschieht, wenn die Tonerzeugungsbearbeitung tatsächlich aktiviert wird. Der Zielwert wird vorzugsweise so eingestellt, dass die Bildungsoperationen der vorbestimmten Anzahl von Abtastwerten von Tondaten innerhalb der Zeitperiode beendet werden können, muss jedoch nicht notwendigerweise auf einen solchen Wert eingestellt werden. In dem Fall, in dem die Wiedergabe von den Ausgabepuffern vor der Ausführung der Tonerzeugungsbearbeitung wie bei der zuvor erwähnten Anordnung erfolgt, kann der Zielwert nämlich so eingestellt werden, dass wenn die Bildung der vorbestimmten Anzahl von Abtastwerten von Tondaten nicht innerhalb der Zeitperiode beendet wird, die Tondaten, die in dieser Zeitperiode nicht gebildet werden, in der nächsten vorbestimmten Zeit verspätet gebildet werden können. Kurz gesagt, braucht der Zielwert nur so eingestellt werden, dass er einen derartigen tolerierbaren Bereich für die Zeitverzögerung bei der Aktivierung der Tonerzeugungsbearbeitung garantiert, der keine unerwünschte Unterbrechung in einem Strom von erzeugten Tönen verursacht.
  • Bei einigen speziellen Formen der Tondatenbildungssteuerung der vorliegenden Erfindung kann eine Zeitverzögerung bei der Tonerzeugungsverarbeitung aufgenommen werden, und zwar durch Addieren aller nicht gebildet verbliebenen Tondaten (aller Tondaten, die zu einem speziellen Aktivierungszeitpunkt nicht gebildet wurden), zur Anzahl der Abtastwerte, die im Ansprechen auf die nächste Aktivierung der Bearbeitung gebildet werden, oder durch Erhöhen der Anzahl der Abtastwerte, die im Ansprechen auf jede nachfolgende Aktivierung durch eine gleichmäßige Menge oder eine zur Anzahl der nicht-gebildet verbliebenen Tondaten proportionalen Menge gebildet werden.
  • Die Erfindung bezieht sich auch auf ein Tonerzeugungsverfahren, wie es in Anspruch 9 definiert ist, dessen vorteilhafte Ausführungsform in den abhängigen Ansprüchen 10- 16 definiert sind. Weiter betrifft die Erfindung auch ein maschinenlesbares Speichermedium, wie es in dem unabhängigen Anspruch 17 definiert ist, dessen vorteilhafte Ausführungsformen in den abhängigen Ansprüchen 18-24 definiert sind.
  • Für ein besseres Verständnis der obigen und anderer Merkmale der vorliegenden Erfindung werden die bevorzugten Ausführungsformen der Erfindung nachfolgend detaillierter mit Bezug auf die beigefügten Zeichnungen beschrieben. In den Zeichnungen ist folgendes gezeigt-
  • Fig. 1 ist ein Blockschaltbild, welches eine allgemeine Struktur eines Computermusiksystems zeigt, auf welches das Prinzip der vorliegenden Erfindung angewandt wird.
  • Fig. 2 ein Diagramm ist, welches eine beispielhafte Softwarekonfiguration eines in dem Computersystem der Fig. 1 eingesetzten Softwaretongenerators zeigt;
  • Fig. 3 ist ein Diagramm, welches eine Beispielkonfiguration einer Schnittstelle "SGM-AP" der Fig. 2 zeigt.
  • Fig. 4 ist eine Diagramm, welches Beispieloperationen der Software von Fig. 2 zeigt.
  • Fig. 5 ist ein Diagramm, welches ein Beispiel einer Maßnahme 1 erläutert.
  • Fig. 6 ist ein Diagramm, das ein weiteres Beispiel der Maßnahme 1 erläutert.
  • Fig. 7 ist ein Diagramm, das ein Beispiel der Maßnahme 3 erläutert.
  • Fig. 8 ist ein Flussdiagramm einer Hauptroutine, die durch eine CPU aus Fig. 1 ausgeführt wird.
  • Fig. 9 ist ein Flussdiagramm eines Initialisierungsprozesses, der durch die CPU ausgeführt wird.
  • Fig. 10 ist ein Flussdiagramm, das ein Beispiel eines Note-EIN-Ereignisprozesses zeigt, der durch die CPU ausgeführt wird.
  • Fig. 11 ist ein Flussdiagramm, das ein Beispiel eines Note-AUS-Ereignisprozesses zeigt, der durch die CPU ausgeführt wird.
  • Fig. 12 ist ein Flussdiagramm, das ein Beispiel einer Tongeneratorbearbeitung 1 zeigt, die durch die CPU ausgeführt wird.
  • Fig. 13 ist ein Flussdiagramm, das ein Beispiel eines externen Unterbrechungsprozesses zeigt, der durch eine DMA-Steuereinheit der Fig. 1 ausgeführt wird.
  • Fig. 14 ist ein Flussdiagramm eines Beispiels für eine Tongeneratorbearbeitung II, die durch die CPU auf der Grundlage eines Rückkehrbefehls ausgeführt wird, welcher von der DMA-Steuereinheit ausgegeben wird.
  • Fig. 15 ist ein Flussdiagramm eines Beispiels für eine Tongeneratorbearbeitung II, die durch die CPU auf der Grundlage einer Rücksetzungsanfrage ausgeführt wird, welche von der DMA-Steuereinheit ausgegeben wird.
  • Fig. 16 ist ein Flussdiagramm einer Hauptroutine, die durch die CPU in einer Modifikation der vorliegende Erfindung ausgeführt wird.
  • Fig. 17 ist ein Flussdiagramm eines Unterprogrammaufrufprozesses, der durch die CPU ausgeführt wird.
  • Fig. 18 ist ein Flussdiagramm, welches ein Beispiel der modifizierten Tonerzeugungsbearbeitung I zeigt.
  • Fig. 19 ist ein Flussdiagramm, welches ein weiteres Beispiel der modifizierten Tonerzeugungsbearbeitung I zeigt.
  • Fig. 20 ist ein Flussdiagramm, das ein weiteres Beispiel der Tongeneratorbearbeitung 11 zeigt, die durch die CPU in der Routine der Fig. 16 auf der Grundlage einer Rücksetzungsanfrage von der DMA-Steuereinheit ausgeführt wird.
  • Fig. 21 ist ein Flussdiagramm, welches ein Beispiel einer weiter modifizierten Tonerzeugungsbearbeitung I zeigt.
  • Fig. 22 ist eine graphische Darstellung, die ein Beispiel einer charakteristischen Kurve zeigt, wenn eine Menge an zu bildenden Tondaten als Funktion der Verzögerungsstärke eingestellt wird.
  • Fig. 23 ist eine graphische Darstellung, die ein weiteres Beispiel der charakteristischen Kurve zeigt.
  • Fig. 24 ist ein Diagramm, welches ein Beispiel einer Tondatenmenge zeigt, die in der Modifikation 2 in Verbindung mit der Erzeugung von internen Unterbrechungssignalen gebildet wurde. Und
  • Fig. 25 ist eine graphische Darstellung, die ein Beispiel für ein charakteristische Kurve einer Funktion zeigt, wenn die Zahl der Tonerzeugungskanäle als eine Funktion der Verzögerungsstärke eingestellt wird.
  • Fig. 1 ist ein Blockschaltbild, welches eine allgemeine Struktur eines Computermusiksystems 18 auf der Grundlage eines erfindungsgemäßen Softwaretongenerators zeigt, bei dem eine CPU 3 eines Personalcomputers die Tonerzeugungsbearbeitung ausführt, wie es später im Detail beschrieben wird.
  • Mit der CPU 3 sind über einen Daten- und Adressbus 6 eine MIDI-Schnittstelle 1, ein Zeitgeber 2, ein ROM (Nur-Lesespeicher) 4, ein RAM (Direktzugriffsspeicher) 5, eine Maus 7, eine Tastatur 8, eine Anzeige 9, eine Festplattenvorrichtung 10 und eine DMA-Steuereinheit 11 (Direktspeicherzugriff) verbunden.
  • Die DMA-Steuereinheit 11 führt einen Wiedergabeprozess aus, bei dem sie das bekannte Direktspeicherzugriffsverfahren verwendet, um sequenziell aus einem Ausgabespeicher des RAM 5 Tondaten auszulesen, die durch die CPU 3 bei der Ausführung der Tonerzeugungsbearbeitung gebildet werden, und anschließend sendet sie die ausgelesenen Tondaten an einen D/A-Wandler 12 (DAC: digital nach analog), und zwar Abtastwert für Abtastwert in Synchronisation mit den Wiedergabeabtasttaktimpulsen vom Wandler 12. Jedes der über den D/A-Wandler 12 in analoge Darstellung gewandelten Tondaten wird hörbar über ein Tonsystem 13 wiedergegeben, welches Verstärker und Lautsprecher aufweist.
  • Die Festplattenvorrichtung 10 weist zahlreiche auf ihr vorgespeicherte Softwareprogramme, wie ein OS (in dieser Ausführungsform Windows 3.1 (Handelsmarke von Microsoft)) und Anwendungssoftwareprogramme, sowie Wellenformdaten einer Vielzahl von Klangfarben für eine oder mehrere Perioden auf.
  • Die durch die CPU 3 auszuführenden Programme können im ROM 4 statt auf der Festplatte 10 vorgespeichert werden, und dort können zahlreiche andere Daten neben den Wellenformdaten gespeichert werden. Durch Laden jedes Programms von der Festplatte 10 oder dem ROM 4 in den RAM 5 kann die CPU 3 das Programm ausführen. Dies vereinfacht stark das Aktualisiern, Hinzufügen usw. eines Betriebsprogramms. Eine CD-ROM (Compactdisk) 19 kann als wechselbares externes Aufzeichnungsmedium zum Aufzeichnen zahlreicher Daten und eines optionalen Betriebsprogramms verwendet werden. Ein solches Betriebsprogramm und Daten, die in der CD-ROM 19 gespeichert sind, können mittels eines CD-ROM-Laufwerks 14 ausgelesen werden, um anschließend zur Speicherung auf die Festplatte 10 übertragen zu weiden. Dies vereinfacht die Installation und das Aktualisieren des Betriebsprogramms. Das wechselbare externe Aufzeichnungsmedium kann etwas anderes sein als die CD-ROM, wie z. B. eine Floppy-Disk und eine magneto-optische Disk (MO).
  • Eine Kommunikationsschnittstelle 15 kann mit dem BUS 6 verbunden werden, so dass das Computermusiksystem 18 über die Schnittstelle 15 mit einem Kommunikationsnetzwerk 16 verbunden werden kann, wie z. B. einem LAN (lokal area network), dem Internet und einem Telefonleitungsnetzwerk, und es kann auch mit einem geeigneten Servercomputer 17 über das Kommunikationsnetzwerk 16 verbunden werden. Wenn das Betriebsprogramm und die zahlreichen Daten nicht auf der Festplatte 10 gespeichert werden, können dieses Betriebsprogramm und die Daten somit vom Servercomputer 17 empfangen werden und auf die Festplatte 10 heruntergeladen werden. In einem solchen Fall sendet das Computermusiksystem 18, d. h. ein "client", einen Befehl mit einer Anfrage an den Servercomputer 17, um das Betriebsprogramm und zahlreiche Daten über die Kommunikationsschnittstelle 15 und das Kommunikationsnetzwerk 16 herunterzuladen. Im Ansprechen auf den Befehl vom Computermusiksystem 18 übermittelt der Servercomputer 17 das angeforderte Betriebsprogramm und die Daten an das System 18 über das Kommunikationsnetzwerk 16. Das Computermusiksystem 18 schließt das notwendige Herunterladen durch Empfangen des Betriebsprogramms und der Daten über das Kommunikationsnetzwerk 15 und durch Speichern von diesen auf der Festplatte 10 ab.
  • Es sollte klar sein, dass das Computermusiksystem 18 der vorliegenden Erfindung durch Installieren des Betriebsprogramms und der verschiedenen Daten, die den Operationen der vorliegenden Erfindung entsprechen, in einem kommerziell erhältlichen Personalcomputer implementiert werden kann. In einem solchen Fall können das Betriebsprogramm und die verschiedenen Daten, die den Operationen der vorliegenden Erfindung entsprechen, den Benutzern in einer aufgezeichneten Form in einem Aufzeichnungsmedium, wie z. B. einer CD-ROM oder Floppy-Disk, zur Verfügung gestellt werden, welches durch den Personalcomputer lesbar ist. Wenn der Personalcomputer mit einem Kommunikationsnetzwerk, wie einem LAN, verbunden wird, können das Betriebsprogramm und zahlreiche Daten dem Personalcomputer über das Kommunikationsnetzwerk ähnlich zu dem oben erwähnten Fall zugeführt werden.
  • Fig. 2 ist ein Diagramm, welches eine Beispielkonfiguration der zur Implementierung des Softwaretongenerators verwendeten Software (Tonerzeugungssoftware) zeigt. Um die Programmierungskomplexität zu minimieren, ist diese Tonerzeugungssoftware hierarchisch als eine Zusammensetzung kleinster Einheiten (Module) organisiert, die unabhängig voneinander programmierbar sind. Speziell handelt es sich bei einem "Sequenzerprogramm" in der höchsten Ebene der Hierarchie, um ein Modul zum Erzeugen von MIDI-Nachrichten, welches in Form eines Anwendungssoftwareprogramms (z. B. eines Sequenzer-, Spiel- oder Karaokesoftwareprogramms) vorliegt.
  • Eine Schnittstelle "SGM MIDI aus API" ist eine Art von Anwendungsprogrammierungsschnittstelle, die im Softwaretongenerator zur Durchführung des Informationsaustausches zwischen den Modulen vorgesehen ist.
  • Eine weitere Schnittstelle "SGM-AP" an der unteren Ebene der Hierarchie ist ein Programm zum Erzeugen von Tondaten auf der Grundlage der MIDI-Nachricht, die vom Sequenzerprogramm über die Schnittstelle SGM MIDI aus API zugeführt wird. Wie in Fig. 3 gezeigt, besteht dieses Tondatenerzeugungsprogramm SGM-AP aus einem MIDI-Ausgabe-Treiberabschnitt und einem Tongenerator- (oder Maschinen-) Abschnitt. Der MIDI-Ausgabe-Treiberabschnitt ist ein Modul zum Antreiben des Tongeneratorabschnitts, der auf die MIDI-Nachricht anspricht, um Stimmendaten in Steuerparameter umzuwandeln und den Tongeneratorabschnitt zu steuern. Die Steuerparameter werden an den Tongeneratorabschnitt über eine Zwischenmodulschnittstelle (nicht gezeigt) gesendet. Wenn der MIDI-Ausgabe-Treiberabschnitt initialisiert wird, werden Wellenformdaten aus einer Datei geladen und an den Tongeneratorabschnitt über die Zwischenmodulschnittstelle gesendet, so dass der Tongeneratorabschnitt Tondaten unter Verwendung der Wellenformdaten und entsprechend der Steuerparameter erzeugt.
  • In Fig. 2 handelt es sich bei einer Schnittstelle "WELLE aus API" um eine Art von Anwendungsprogrammierschnittstelle, die in Windows 3.1 (Handelsmarke von Microsoft) zur Verfügung gestellt wird. "Ausgabevorrichtung" ist ein Modul zum Ausgeben von Tondaten an den D/A-Wandler 12, welche von dem Programm SGM-AP über die Schnittstelle WELLE aus API zugeführt wurden. In diesem Computermusiksystem sendet, wie früher bemerkt, die DMA-Steuereinheit 11 die Tondaten im Direktspeicherzugriffsverfahren an den D/A-Wandler 12. Somit wird die Ausgabevorrichtung durch ein Unterbrechungssignal von der DMA-Steuereinheit 11 unter Steuerung der CPU 3 aktiviert.
  • Die Bearbeitung auf der Grundlage der in Fig. 2 gezeigten Software wird unten mit Bezug auf Fig. 4 dargelegt. Beim Starten des Sequenzerprogramms wird die Zuführung von MIDI-Nachrichten gestartet, worauf der MIDI-Ausgabe-Treiberabschnitt aktiviert wird, um Stimmendaten in Steuerparameter umzuwandeln und die umgewandelten Steuerparameter und andere Daten in ein Tongeneratorregister für jeden Tonerzeugungskanal zu speichern, der auf der Grundlage der MIDI-Nachrichten zur Tonerzeugung zugewiesen wurde.
  • Der Tongeneratorabschnitt der Fig. 3 wird zu jeder vorbestimmten Zeitperiode von vorbestimmter Länge (nachfolgende als "Rahmen" bezeichnet) aktiviert, um eine Tonerzeugungsbearbeitung auf der Grundtage der MIDI-Nachrichten auszuführen, die innerhalb des vorangegangenen Rahmens entsprechend der Steuerparameter zugeführt wurden. Wie z. B. in Fig. 4 gezeigt ist, wird die Tonerzeugungsbearbeitung auf der Grundlage von MIDI-Nachrichten, die innerhalb eines Rahmens vom Zeitpunkt T1 bis Zeitpunkt T2 zugeführt werden, innerhalb eines nächsten Rahmens vom Zeitpunkt T2 bis Zeitpunkt T3 ausgeführt. Bei einem bevorzugten Beispiel der Tonerzeugungsbearbeitung auf der Grundlage des Wellenformspeicherverfahrens werden für jeden mit der Tonerzeugung beaufschlagten Tonerzeugungskanal Wellenformdaten aus dem RAM 5 mit einer Rate ausgelesen, die durch die Steuerparameter vorgegeben wurde, welche im Tongeneratorregister für diesen Kanal gespeichert sind, und die ausgelesenen Wellenformdaten werden einer Klangfarbensteuerung (Filteroperation), Lautstärkesteuerung (Multiplikation mit Tonlautstärkehüllkurvendaten) und einer Modulationssteuerung der Tonhöhe, Klangfarbe, der Lautstärke usw. entsprechend der Steuerparameter unterzogen. Auf diese Weise wird eine vorbestimmte Anzahl von Abtastwerten von Tondaten für den Tonerzeugungskanal gebildet. Die gebildeten Tondaten der beaufschlagten Tonerzeugungskanäle werden akkumuliert und in einen Ausgabepuffer des RAM 5 geschrieben. In einigen Fällen können die akkumulierten Tondaten mit Effekten versehen werden, bevor sie in den Ausgabepuffer geschrieben werden. Anschließend wird die Wiedergabe aus dem Ausgabepuffer in der Ausgabevorrichtung reserviert.
  • Für jeden der Rahmen liest die Ausgabevorrichtung die gebildeten Tondaten, Abtastwert für Abtastwert, aus dem im vorangegangenen Rahmen reservierten Ausgabepuffer aus und sendet die ausgelesenen Tondaten an den D/A-Wandler 12. Im Beispiel der Fig. 4 werden Tondaten, die innerhalb eines Rahmens vom Zeitpunkt T2 bis Zeitpunkt T3 gebildet wurden, aus dem reservierten Ausgabepuffer in einem Rahmen vom Zeitpunkt T3 bis zum Zeitpunkt T4 ausgelesen.
  • Bei der oben erwähnten Software werden die Aktivierung des Sequenzerprogramms und die Aktivierung des MIDI-Ausgabe-Treiberabschnitts auf der Grundlage der zugeführten MIDI-Nachricht in Echtzeit bewirkt. Die Ausgabevorrichtung wird zwangsweise durch ein internes Unterbrechungssignal von der DMA-Steuereinheit 11 aktiviert, so dass sich daraus keine Zeitverzögerung ergeben würde. Im Gegensatz dazu wird der Tongeneratorabschnitt durch ein Unterbrechungssignal von der CPU 3 selbst aktiviert; wenn die Software auf einem Betriebssystem ohne volle Multitaskfunktion läuft, würde somit die Aktivierung des Tongeneratorabschnitts durch einen Einfluss einer anderen Bearbeitung verzögert, so dass die gewünschte Tonerzeugung deutlich behindert werden könnte. Das Computermusiksystem der vorliegenden Erfindung ist konstruiert, um eine solche Behinderung der Tonerzeugung effektiv zu verhindern, und zwar durch einige Maßnahmen, die unten dargelegt werden.
  • Maßnahme 1
  • Nach dieser Maßnahme tritt die Erzeugung des internen Unterbrechungssignals, das den Tongeneratorabschnitt aktiviert, mehrere Male (d. h. zu mehreren Aktivierungszeiten) innerhalb jeden Rahmens auf. Durch Bilden einiger Abtastwerte der vorbestimmten Anzahl von Abtastwerten von Tondaten (die in einen Ausgabepuffer geschrieben werden sollen) jedesmal dann, wenn der Tongeneratorabschnitt durch das Signal aktiviert wird, wird eine geeignete Anpassung derart durchgeführt, dass die vorbestimmte Anzahl von Tondaten, die in einen Ausgabepuffer geschrieben werden sollen, innerhalb des Rahmens in einer verteilten Art und Weise verspätet gebildet werden können.
  • Falls der Tongeneratorabschnitt nicht an einem der Punkte aktiviert wird und daher keine Tondaten gebildet werden, da kein Unterbrechungssignal erzeugt wird, wird eine geeignete Anpassung durchgeführt, und zwar derart, dass die arithmetischen Bildungsoperationen für die Tondaten, die in einen Ausgabepuffer geschrieben werden sollen, durch Ausbilden der nichtgebildet verbliebenen Tondaten (d. h. der Tondaten, die nicht zum Aktivierungszeitpunkt ausgebildet wurden) festgestellt werden können, wenn ein weiteres internes Unterbrechungssignal zu einem anderen Aktivierungszeitpunkt in dem Rahmen erzeugt wird.
  • Nach Maßnahme 1 kann die oben erwähnte Behinderung der Tonerzeugung effektiv vermieden werden, da die Erzeugung des internen Unterbrechungssignals, welches den Tongeneratorabschnitt aktiviert, mehrere Male innerhalb eines jeden Rahmens auftritt, und die vorbestimmte Anzahl von Tondaten kann vollständig nur durch Tondatenbildungsoperationen gebildet werden, die nur ausgeführt werden, wenn die Tonerzeugungsbearbeitung tatsächlich interne Unterbrechungssignale erzeugt.
  • Die Fig. 5 und 6 sind erklärende Beispiele für die Maßnahme 1, nach der die internen Unterbrechungssignale, die den Tongeneratorabschnitt aktivieren, in einem Rahmen von 100 Millisekunden in Intervallen von 10 Millisekunden (daher werden 10 interne Unterbrechungssignale pro Rahmen erzeugt) erzeugt werden, und 1/10 der vorgegebenen Anzahl von Tondaten wird jedesmal dann gebildet, wenn der Tongeneratorabschnitt durch das Unterbrechungssignal aktiviert wird.
  • In dem Beispiel der Fig. 5 werden alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals nicht gebildet wurden, im Ansprechen auf die Erzeugung eines nächsten internen Unterbrechungssignals verspätet gebildet. Im gezeigten Beispiel werden nämlich alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals bei dem zweiten Unterbrechungs- oder Aktivierungszeitpunkt (entsprechend dem 10. Millisekundenpunkt in der Figur) nicht gebildet wurden, im Ansprechen auf das zum dritten Aktivierungszeitpunkt (entsprechend dem 20. Millisekundenpunkt) erzeugte interne Unterbrechungssignal zusammen mit Tondaten gebildet, die ursprünglich diesem Punkt (bezeichnet mit "2" und "3" in der Figur) zugeordnet wurden. Außerdem werden alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals bei dem sechsten und siebten Aktivierungszeitpunkt (entsprechend dem 50. und 60. Millisekundenpunkt) nicht gebildet wurden, im Ansprechen auf das zum achten Aktivierungszeitpunkt (entsprechend dem 70. Millisekundenpunkt) erzeugte interne Unterbrechungssignal zusammen mit Tondaten gebildet, die ursprünglich diesem Punkt (bezeichnet mit "6" bis "8" in der Figur) zugeordnet wurden.
  • Im Beispiel von Fig. 6 werden andererseits alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals nicht gebildet wurden, verspätet in einer verteilten Weise zu mehreren nachfolgenden Aktivierungszeitpunkten gebildet, wenn interne Unterbrechungssignale tatsächlich erzeugt werden. Es werden nämlich alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals bei dem zweiten und dritten Aktivierungszeitpunkt (entsprechend dem 10. und 20. Millisekundenpunkt) nicht gebildet wurden, im Ansprechen auf die tatsächlich zum vierten und fünften Aktivierungszeitpunkt (entsprechend dem 30. und 40. Millisekundenpunkt) erzeugten internen Unterbrechungssignale zusammen mit Tondaten später gebildet, die ursprünglich diesem Punkt (bezeichnet mit "2", "3" sowie "4", "5" in der Figur) zugeordnet wurden. Jedoch werden am letzten oder 10. Aktivierungszeitpunkt (entsprechend dem 90. Millisekundenpunkt) alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals zum 7., 8. und 9. Aktivierungszeitpunkt (entsprechend dem 60., 70. und 80. Millisekundenpunkten) nicht gebildet wurden, zusammen gebildet, um die Bildung der vorbestimmten Anzahl von Tondaten (die in einen Ausgabepuffer geschrieben werden sollen) innerhalb des Rahmes sicherzustellen.
  • Während im Beispiel der Fig. 6 alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals nicht gebildet wurden, d. h. die nichtgebildet verbliebenen Tondaten, in einer verteilten Weise an einem oder mehreren nachfolgenden Aktivierungszeitpunkten in einer vorbestimmten Menge gebildet werden, können diese nichtgebildet verbliebenen Tondaten später in wahlweise unterschiedlichen Mengen gebildet werden (z. B. in der vorbestimmten Anzahl dem 1,5-fachen der vorbestimmten Anzahl und der Hälfte der vorbestimmten Anzahl).
  • Als weiteres Beispiel können alle nichtgebildet verbliebenen Tondaten, die sich aus dem Nichterzeugen des internen Unterbrechungssignals ergeben, fortlaufend durch das Ende der letzten oder 10. Aktivierungszeit innerhalb desselben Rahmens gebildet werden.
  • Wenn die nichtgebildet verbliebenen Tondaten zu mehreren Aktivierungszeitpunkten auftreten, könnten arithmetische Bildungsoperationen der Tondaten für jeden zugewiesenen Tonerzeugungskanal zu einer oder mehreren nachfolgenden Aktivierungszeiten nicht beendet werden, bei denen das Unterbrechungssignal tatsächlich erzeugt wird. Daher ist es in Maßnahme 1 wünschenswert, dass eine Erzeugung aller Tondaten durch Reduzieren der Anzahl der Tonerzeugungskanäle erreicht wird, die für die Tondatenbildung verwendet werden sollen. Die Anzahl solcher zu reduzierenden Tonerzeugungskanäle ist im Beispiel von Fig. 5 am größten; im Fall von Fig. 6 und anderen Fällen, in denen die nichtgebildet verbliebenen Tondaten fortlaufend durch das Ende der letzten Aktivierungszeit gebildet werden, ist die Zahl der zu reduzierenden Tonerzeugungskanäle kleiner als die des Beispiels von Fig. 5 (das Beispiel von Fig. 5 ist äußerst wünschenswert, wenn die nichtgebildet verbliebenen Tondaten sofort gebildet werden sollen).
  • Maßnahme 2
  • Nach dieser Maßnahme sind als Tongeneratorregister für jeden Tonerzeugungskanal ein erstes Register (Primärtongeneratorregister) zum Speichern von Parametern zur Steuerung der augenblicklichen Tonerzeugungsbearbeitung, die zugewiesen wird, wenn der Kanal nicht in Verwendung oder verfügbar ist, und ein zweites Register (Sekundärtongeneratorregister) zum Speichern von Parametern zum Steuern einer neuen Tonerzeugungsbearbeitung vorgesehen, die zugewiesen wird, wenn der Kanal immer noch für die augenblickliche Tonerzeugungsbearbeitung verwendet wird und somit für eine neue Tonerzeugungsbearbeitung nicht zur Verfügung steht. Als für den Tonerzeugungskanal zu verwendendes Tongeneratorregister wird das Primärtongeneratorregister ausgewählt, bevor die neue Tonerzeugungsbearbeitung startet, und das Sekundärtongeneratorregister wird ausgewählt, nachdem die neue Tonerzeugungsbearbeitung begonnen hat.
  • Mit einer solchen Maßnahme 2 kann die neue Tonerzeugungsbearbeitung, wenn die neue Tonerzeugungsbearbeitung einem der Tonerzeugungskanäle zugewiesen wird, der für die augenblickliche Tonerzeugungsbearbeitung verwendet wird, sofort in dem Sekundärtongeneratorregister eingerichtet oder vorbereitet werden, während eine fortgesetzte Ausführung der augenblicklichen Tonerzeugungsbearbeitung sichergestellt wird. Auf diese Weise ist es möglich, jegliche Zeitverzögerung bei der Tondatenbildung zu verhindern, die sich aus einer Zeitverzögerung beim Vorbereiten der neuen Tonerzeugungsbearbeitung ergibt.
  • Maßnahme 3
  • Nach dieser Maßnahme sind mehrere Ausgabepuffer im RAM 5 vorgesehen, und die Wiedergabe von einigen der Ausgabepuffer wird in der Ausgabevorrichtung vor der Aktivierung des Tongeneratorabschnitts reserviert. Sogar wenn verhindert wird, dass der Tongeneratorabschnitt ordnungsgemäß zu einem vorbestimmten Aktivierungszeitpunkt aufgrund eines Einflusses der anderen Bearbeitung erzeugt wird, können Töne ohne Unterbrechung in einem Strom aus erzeugten Tönen wiedergegeben werden, solange der Tongeneratorabschnitt aktiviert wird und die Wiedergabe von einem anderen Ausgabepuffer reserviert wird, bevor die zuvor reservierte Wiedergabe aus den Ausgabepuffern abgeschlossen ist. Somit erweitert diese Maßnahme einen solchen tolerierbaren Bereich einer Zeitverzögerung bei der Aktivierung des Tongeneratorabschnitts, was eine Unterbrechung in einem Strom von erzeugten Tönen verhindern kann.
  • Fig. 7 ist ein Diagramm, das beispielhafte Details der Maßnahme 3 erklärt, nach welcher die Wiedergabe von vier Ausgabepuffern in der Ausgabevorrichtung vor der Aktivierung des Tongeneratorabschnitts reserviert wird. Die Zahl der reservierten Ausgabepuffer zum Beginn des Rahmens F1 ist "3", jetzt wo die Wiedergabe von einem Ausgabepuffer im vorangegangenen Rahmen abgeschlossen ist, aber während des Rahmens F1 wird die Zahl der reservierten Ausgabepuffer auf "4" erhöht, da die Bildung der vorbestimmten Anzahl von Tondaten, die in einen Ausgabepuffer zu schreiben sind, abgeschlossen und die Wiedergabe vom Ausgabepuffer reserviert worden ist. Dann wird die Anzahl der reservierten Ausgabepuffer auf "3" nach dem Rahmen F1 verringert, wenn die Wiedergabe von einem weiteren Ausgabepuffer abgeschlossen ist, aber während des Rahmens F2 wird die Anzahl der reservierten Ausgabepuffer wieder auf "4" erhöht, da die Bildung der vorbestimmten Anzahl von Tondaten, die in den nächsten Ausgabepuffer zu schreiben sind, abgeschlossen und die Wiedergabe vom Ausgabepuffer reserviert worden ist.
  • Anschließend wird die Anzahl der reservierten Ausgabepuffer nach Rahmen F4 auf "1" abgesenkt, da keine Tondaten aufgrund einer Zeitverzögerung bei der Aktivierung des Tongeneratorabschnitts gebildet werden. Dann werden in Rahmen F5 Tondaten von wenigstens einem der reservierten Ausgabepuffer (d. h. dem während Rahmen 2 reservierten Ausgabepuffer) wiedergegeben; das Auftreten der Wiedergabereservierung in Rahmen 2 ist mit einem weißen Pfeil gekennzeichnet, während die Wiedergabe im Rahmen F5 durch ein Halbtonpunktmuster gekennzeichnet ist. Während des Rahmens F5 wird die Anzahl der reservierten Ausgabepuffer auf "2" erhöht, da die Bildung der vorbestimmten Anzahl von Tondaten, die in einen Ausgabepuffer zu schreiben sind, abgeschlossen und die Wiedergabe vom Ausgabepuffer reserviert worden ist. Ähnlich wird nach Rahmen 5 die Anzahl der reservierten Ausgabepuffer im Ansprechen auf den Abschluss der Wiedergabe und das Auftreten der Wiedergabereservierung erhöht oder abgesenkt.
  • In der oben erwähnten Weise können Töne, sogar wenn der Tongeneratorabschnitt aufgrund eines Einflusses einer anderen Bearbeitung nicht ordnungsgemäß zu einem vorbestimmten Aktivierungszeitpunkt erzeugt wird, in geeigneter Weise ohne Unterbrechung wiedergegeben werden, solange der Tongeneratorabschnitt aktiviert und die Wiedergabe von einem anderen Ausgabepuffer ordnungsgemäß reserviert wird, bevor die zuvor reservierte Wiedergabe von den vier Ausgabepuffern abgeschlossen ist. Wenn die Bildung der in die nächsten Ausgabepuffer zu schreibenden Tondaten während eines bestimmten Rahmens abgeschlossen wird, wobei die Anzahl der reservierten Ausgabepuffer "4" beträgt, so erfolgt die Wiedergabereservierung des Ausgabepuffers erst nach Abschluss der Wiedergabe in dem Rahmen, so dass die Anzahl der reservierten Ausgabepuffer "4" nicht überschreitet.
  • Die Ausgabepuffer, die im RAM 5 vorgesehen sein sollten, um Maßnahme 3 auszuführen, enthalten diejenigen zum Bewirken der Wiedergabereservierung vor der Aktivierung des Tongeneratorabschnitts, einen zum Schreiben von Tondaten, die vollständig durch den Tongeneratorabschnitt gebildet wurden, und einen oder mehrere freie Ausgabepuffer, die in dem Falle verwendet werden können, in dem die Menge der tatsächlich durch den Tongeneratorabschnitt gebildeten Tondaten die in einen Ausgabepuffer zu schreibende vorbestimmte Anzahl von Tondaten übersteigt. Im Beispiel von Fig. 7 beträgt die Gesamtzahl der Ausgabepuffer "6". Jedoch können die freien Ausgabepuffer fortgelassen werden, falls die Tondatenbildung zwangsweise gestoppt wird, wenn die Menge der tatsächlich gebildeten Töne eine vorbestimmte Anzahl von Tondaten übersteigt, die in den Ausgabepuffer geschrieben werden sollen. Somit werden im Beispiel von Fig. 7 fünf Ausgabepuffer ausreichen.
  • Maßnahme 4
  • Falls kein Ausgabepuffer in der Ausgabevorrichtung innerhalb einer vorbestimmten Zeitperiode reserviert wird, werden Tondatenoperationen unterbrochen, die zu diesem Zeitpunkt beendet sein sollen, und es wird veranlasst, dass neue arithmetische Bildungsoperationen mit den Tondaten beginnen, die ursprünglich für diesen Zeitpunkt geplant waren. Nach dieser Maßnahme kann sogar wenn die Wiedergabereservierung nicht rechtzeitig ausgeführt werden kann und somit eine vorübergehende Unordnung im erzeugten Ton verursacht wird, eine stabile Tonausbildung rasch wieder hergestellt werden, so dass ein Begleitrauschen minimiert wird.
  • In dem Beispiel der Maßnahme 3 von Fig. 7 wird die Wiedergabereservierung des Ausgabepuffers mit darin gespeicherten Tondaten, die durch den Tongenerator gebildet wurden, so gezeigt, dass sie zu dem Zeitpunkt erfolgt, zu dem die Wiedergabe für jeden Ausgabepuffer abgeschlossen ist, welcher zuvor in der Ausgabevorrichtung reserviert wurde. Falls jedoch die Aktivierung des Tongeneratorabschnitts durch einen Einfluss der anderen Bearbeitung stark verzögert wird, ist es möglich, dass die Wiedergabereservierung des Ausgabepuffers mit darin gespeicherten Tondaten, die durch den Tongenerator gebildet wurden, nicht rechtzeitig erfolgt, sogar in einem Rahmen, in dem die Wiedergabe von jedem zuvor reservierten Ausgabepuffer abgeschlossen ist (d. h. die Anzahl der reservierten Ausgabepuffer wird auf "0" verringert). In solch einem Fall werden durch Ausführen der Maßnahme 3 und Maßnahme 4 in Kombination arithmetische Bildungsoperationen der Tondaten, die beendet sein sollten, bevor die Anzahl der reservierten Ausgabepuffer "0" wird, zwangsweise unterbrochen, eine weitere Ausgabepufferreservierung wird in der Ausgabevorrichtung durchgeführt, und anschließend wird veranlasst, dass neue arithmetische Ausbildungsoperationen mit den Tondaten beginnen, die ursprünglich für diesen Zeitpunkt geplant waren.
  • Eine detaillierte Beschreibung wird nun über ein Beispiel für die Arbeitsweise eines Computermusiksystems gegeben, welches ausgestaltet ist, um die oben erwähnten Maßnahmen zu bewirken, wobei auf die Fig. 8 bis 25 Bezug genommen wird.
  • Fig. 8 ist ein Flussdiagramm der Hauptroutine, die durch die CPU 3 der Fig. 1 ausgeführt wird. Als erstes wird in Schritt 1 ein Initialisierungsprozess ausgeführt, der Daten, die in den Tongeneratorregistern für alle Tonerzeugungskanäle gespeichert sind (einschließlich der Primär- und Sekundärtongeneratorregister, wie sie zuvor in Verbindung mit Maßnahme 2 erwähnt wurden) sowie Daten löscht, die im Arbeitsbereich des RAM 5 gespeichert sind (einschließlich der Ausgabepuffer, wie sie zuvor in Verbindung mit Maßnahme 4 erwähnt wurden), wie es in Schritt S 21 der Fig. 9 gezeigt ist. Anschließend werden die in dem Festplattenlaufwerk 10 aufgezeichneten Wellenformdaten in Schritt S 22 der Fig. 9 in den RAM 5 geladen. Darauf folgend wird die Ausgabevorrichtung im Schritt S 23 initialisiert und die Wiedergabe von den gelöschten Ausgabepuffern (hier vier Ausgabepuffer, wie im Beispiel von Fig. 7) wird in Schritt S 24 in der Ausgabevorrichtung reserviert, und zwar vor der Aktivierung des Tongeneratorabschnitts, wie es vorher in Verbindung mit Maßnahme 3 erwähnt wurde. Dann wird in Schritt S 25 die Ausgabevorrichtung durch den D/A-Wandler 12 aktiviert, indem ein Wiedergabeabtasttaktimpuls erzeugt und an die DMA-Steuereinheit 11 weitergegeben wird, und ein Softwarezeitgeber wird aktiviert, um ein internes Unterbrechungssignal zum Aktivieren des Tongeneratorabschnitts zu erzeugen. Der Softwarezeitgeber wird z. B. veranlasst, ein internes Unterbrechungssignal durch die CPU 3 zu erzeugen, wobei auf einen Hardwarezeitgeber zurückgegriffen wird.
  • Wie zuvor in Verbindung mit Maßnahme 1 erwähnt, kann der Softwarezeitgeber interne Unterbrechungssignale in jedem der Rahmen zu mehreren Takten oder Aktivierungszeitpunkten erzeugen (es wird hier angenommen, dass interne Unterbrechungssignale in jeden Rahmen mit einer Länge von 100 Millisekunden 10 mal erzeugt werden können, d. h. in Abständen von 10 Millisekunden). Wie zuvor dargelegt, wird das interne Unterbrechungssignal nicht notwendigerweise zu jedem Aktivierungszeitpunkt (d. h. alle 10 Millisekunden) durch den Softwarezeitgeber erzeugt; wenn nämlich die CPU 3 beim Bearbeiten durch das Betriebssystem oder einer anderen Softwarebearbeitung beschäftigt wird, kann das interne Unterbrechungssignal nicht erzeugt werden, sogar wenn der Aktivierungszeitpunkt naht. Somit wird nach der Ausführungsform ein Zeitgebermarker gesetzt, wenn der Zeitgeber 2 einen Abschnitt einer vorbestimmten Zeitdauer auszählt, die einer Aktivierungszeit (z. B. 10 Millisekunden) entspricht; der augenblickliche Zustand des Zeitgebermarkers wird geprüft, sobald die CPU 3 für die Bearbeitung des Softwaretongenerators verfügbar wird, so dass das Unterbrechungssignal entsprechend dem augenblicklichen Zustand des Markers erzeugt wird. Somit wird ein internes Unterbrechungssignal erzeugt, wenn die CPU 3 als verfügbar für die Verarbeitung des Softwaretongenerators während einer vorbestimmten Zeitdauer festgestellt wird, die einer Aktivierungszeit (z. B. 10 Millisekunden) entspricht. Wenn die CPU 3 jedoch für die Bearbeitung des Softwaretongenerators während der vorbestimmten Zeitdauer als nicht verfügbar festgestellt wird, prüft die CPU 3 den Zeitgebermarker nicht, und daher verstreicht die vorbestimmte Zeit ohne erzeugtes internes Unterbrechungssignal, und anschließend wird ein nächster Marker gesetzt; d. h. es wird kein internes Unterbrechungssignal im Ansprechen auf den vorherigen Marker erzeugt.
  • Auf diese Weise wird das interne Unterbrechungssignal nicht notwendigerweise zu jeder Aktivierungszeit erzeugt, wie es in den Fig. 5 und 6 gezeigt ist. Wie sich aus dem vorher gesagten entnehmen lässt, sind die Intervalle der internen Unterbrechungssignale, die nacheinander zu verschiedenen Aktivierungszeitpunkten erzeugt werden, nicht genau auf die vorbestimmte Zeitdauer (z. B. 10 Millisekunden) festgelegt, sondern können leicht variieren, so dass sie kürzer oder länger als 10 Millisekunden sind. Dies ist der Fall, weil die genaue Erzeugungstaktung des internen Unterbrechungssignals vom Bearbeitungszustand der CPU 3 (d. h. davon, ob die CPU 3 den Zeitgebermarker prüft) abhängt.
  • Bezugnehmend auf Fig. 8 wird nach dem Initialisierungsprozess auf der Anzeige 9 ein Bedienungsschirm (nicht gezeigt) zum Anzeigen verschiedener Informationen entsprechend dem Fortschritt der Bearbeitung und zur Verwendung durch einen Benutzer oder eine Bedienungsperson in Schritt S 2 dargestellt, um verschiedene Steuerdaten mit der Maus 7 einzugeben. Da die Wiedergabe aus mehreren Ausgabepuffern durch die Initialisierung (Fig. 9) im Ausgabepuffer vor der Aktivierung des Tongeneratorabschnitts reserviert wird, führt die Ausgabevorrichtung zuerst die Wiedergabe der zuvor reservierten vier Ausgabepuffer und anschließend die der Ausgabepuffer aus, die nachfolgend durch den Tongeneratorabschnitt reserviert wurden. Somit wird die auf die zugeführten MIDI- Nachrichten ansprechende Tonwiedergabe durch eine Gesamtzeitdauer der Rahmen verzögert, die der Anzahl der zuvor reservierten Ausgabepuffer (vier Rahmen im Beispiel von Fig. 7) entspricht. Wenn Informationen auf der Grundlage einer zugeführten MIDI-Nachricht auf dem Bedienungsschirm der Anzeige 9 dargestellt werden, ist es wünschenswert, die Taktung der Anzeige um die Gesamtzeitdauer der Rahmen zu verschieben, die der Anzahl der zuvor reservierten Ausgabepuffer entspricht.
  • Im auf den Schritt S 2 folgenden Schritt S 3 überprüft die Hauptroutine die folgenden Auslösefaktoren:
  • Auslösefaktor 1: Zuführung einer MIDI-Nachricht vom Sequenzer-Programm (siehe Fig. 2);
  • Auslösefaktor 2: Erzeugung eines internen Unterbrechungssignals durch den Softwarezeitgeber, welches den Tongeneratorabschnitt aktiviert;
  • Auslösefaktor 3: Detektion einer Bearbeitungsanfrage von der Ausgabevorrichtung;
  • Auslösefaktor 4: Detektion einer anderen Anfrage, wie z. B. einem Eingabeereignis auf dem Bearbeitungsschirm der Anzeige 9 oder einem Befehlseingabeereignis auf der Tastatur 8 (mit der Ausnahme eines Befehls zur Beendigung der Hauptroutine); und
  • Auslösefaktor 5: Detektion eines Eingabeereignisses eines Befehls zur Beendigung der Hauptroutine auf der Tastatur 8.
  • Nach Schritt S 5 wird in Schritt S 4 festgestellt, ob einer der oben erwähnten Auslösefaktoren aufgetreten ist oder nicht. Wenn die Antwort in Schritt S 4 negativ ist, springt die Hauptroutine zu Schritt S 3 zurück, um die Operationen der Schritte S 3 und S 4 zu wiederholen, bis irgendeiner der oben erwähnten Auslösefaktoren auftritt. Sobald irgendeiner der Auslösefaktoren aufgetreten ist, ergibt sich eine bestätigende Feststellung in Schritt S 4 und die Hauptroutine fährt mit Schritt S 5 fort, wo weiter festgestellt wird, welcher der Auslösefaktoren aufgetreten ist.
  • Falls Auslösefaktor 1 (d. h. Zuführung einer MIDI-Nachricht vom Sequenzerprogramm) aufgetreten ist, wird ein vorbestimmter MIDI-Prozess im Schritt S 6 ausgeführt, und eine vorbestimmte sichtbare Anzeige der empfangenen Nachricht, wie z. B. Daten, die anzeigen, für welchen der MIDI-Kanäle die MIDI-Nachricht zugeführt worden ist, wird sichtbar in Schritt S 7 auf dem Bedienungsschirm dargestellt. Hiernach springt die Hauptroutine zu Schritt S 3 zurück, um die Operationen in und nach Schritt S 3 zu wiederholen.
  • Der MIDI-Prozess in Schritt S 6 enthält Note-EIN-Ereignis- und Note-AUS- Ereignis-Prozesse auf der Grundlage von Note-EIN- und Note-AUS-Ereignisdaten. Fig. 10 ist ein Flussdiagramm, das ein Beispiel für den Note-EIN-Ereignisprozess zeigt. Als erstes werden in Schritt S 31 Daten, die die Notennummer und -geschwindigkeit des Note-EIN-Ereignisses, die Teilnummer eines zum Note-EIN- MIDI-Kanal gehörenden Spielteils und den Auftrittszeitpunkt des Note-EIN- Ereignisses anzeigen, in entsprechende Register NN, VEL, p und TM gespeichert. Im nächsten Schritt S 32 wird einer der Tonerzeugungskanäle auf der Grundlage des Note- EIN-Ereignisses für die Tonerzeugung zugewiesen, und die Nummer des zugewiesenen Kanals wird in das Register i gespeichert. Dann werden in Schritt S 33 Stimmendaten der Klangfarbe, die für die in Register p gespeicherte Partnummer ausgewählt wurden, aus dem RAM 5 ausgelesen und anschließend im Steuerparameter (einschließlich einer die Tonhöhe bestimmenden Frequenzzahl FN) zum Steuern des Tongeneratorabschnitts entsprechend der Notennummer und der Geschwindigkeit umgewandelt, die in den Registern NN, VEL (Fig. 2) gespeichert sind.
  • Dann werden in Schritt S 34 die Steuerparameter zusammen mit den Note-EIN- Ereignisdaten und dem Ereignisauftrittszeitpunkt im Register TM in das Tongeneratorregister für den Tonerzeugungskanal mit der Kanalnummer gespeichert, die durch das Register i angezeigt wird, um Note-Ein-Operationen für eine Taktung zu reservieren, die der Auftrittszeit entspricht.
  • Die Gründe für das Laden der Ereignisauftrittszeit aus dem Register TM in das Tongeneratorregister sind wie folgt. Wie zuvor erwähnt, gibt es einen Zeitunterschied von etwa vier Rahmen zwischen dem Auftrittszeitpunkt des Note-EIN-Ereignisses und dem Zeitpunkt, zu dem die Tonwiedergabe tatsächlich auf der Grundlage des Note-EIN Ereignisses initiiert wird; d. h. der Beginn der Tonwiedergabe wird um eine Zeit verzögert, die etwa vier Rahmen entspricht. Es genügt, dass die Tonerzeugungsbearbeitung (die der später beschriebenen "Tonerzeugungsbearbeitung 1" entsprechen) entsprechende Tondaten innerhalb eines Bereiches des Zeitunterschiedes zu jeder optionalen Taktung erzeugt; d. h., es wird eine Bearbeitungszeitverzögerung innerhalb dieses Bereiches toleriert. Ohne Kenntnis der Auftrittszeit des Note-EIN- Ereignisses ist somit die Tonerzeugungsbearbeitung, die zu irgendeiner optionalen Taktung ausgeführt wird, welche sich vom Auftrittszeitpunkt unterscheidet, nicht in der Lage, die entsprechenden Tondaten zu erzeugen.
  • Falls der fragliche Tonerzeugungskanal verwendet wird, speichert Schritt S 34 die Steuerparameter in das Sekundärtongeneratorregister anstatt in das Primärtongeneratorregister. Auf diese Weise kann die neue Tonerzeugungsbearbeitung unmittelbar im Sekundärtongeneratorregister vorbereitet werden, während die fortgesetzte Ausführung der augenblicklichen Tonerzeugungsbearbeitung in dem Tonerzeugungskanal sichergestellt wird, der das Primärtongeneratorregister verwendet. Falls die Steuerparameter in das Sekundärtongeneratorregister gespeichert werden, erfolgt eine Reservierung in einem vorbestimmten Reservierungsbereich des Primärtongeneratorregisters, um eine Dämpfung (rasche Abschwächung einer Tonlautstärkekurve) mit einer Taktung durchzuführen, die der in dem Register TM gespeicherten Auftrittszeit entspricht.
  • In dem auf Schritt S 34 folgenden Schritt S 35 wird eine Berechnungsreihenfolge über alle Tonerzeugungskanäle, die mit der Tonerzeugung beaufschlagt sind, derart eingestellt, das die Tonerzeugungsberechung von dem Kanal, der mit dem Erzeugen eines Tones der letzten Note-EIN-Auftrittszeit beaufschlagt ist, bis zu dem Kanal durchgeführt wird, der mit der Erzeugung eines Tones mit der frühesten Note-EIN- Auftrittszeit beaufschlagt ist, d. h. dass der Kanal, der mit der Erzeugung eines Tones mit der letzten Note-EIN-Auftrittszeit beaufschlagt ist, bei der Tonerzeugungsberechnung Priorität gegenüber den anderen Kanälen genießt. Nach Schritt S 35 kehrt die CPU 3 zur Hauptroutine zurück.
  • Fig. 11 ist ein Flussdiagramm, das ein Beispiel des Note-AUS-Prozesses zeigt. Zuerst werden in Schritt S 41 Daten, die die Notennummer des Note-AUS-Ereignisses anzeigen, die Klangfarbe, die für den zum Note-AUS-MIDI-Kanal gehörenden Spielpart ausgewählt wurde, und die Auftrittszeit des Note-AUS-Ereignisses in entsprechenden Registern NN, t und TM gespeichert. Dann wird in Schritt S 42 eine Suche nach einem der Tonerzeugungskanäle durchgeführt, der mit der Erzeugung eines Tones mit der im Register t gespeicherten Klangfarbe beaufschlagt ist, und seine Nummer (Kanalnummer) wird in das Register i gespeichert. Hiernach wird in einem vorbestimmten Reservierungsbereich des Primär- oder Sekundärtongeneratorregisters (T. G.-Registers) für den Tonerzeugungskanal mit der in Register i (CHi) gespeicherten Nummer eine Reservierung für Note-AUS-Operationen mit einer Taktung durchgeführt, die dem Auftrittszeitpunkt entspricht, die in Schritt S 43 in das Register TM gespeichert wurde.
  • Wenn in Schritt S 5 der Fig. 8 der Auslösefaktor 2 (d. h. die Erzeugung eines internen Unterbrechungssignals durch den Softwarezeitgeber, welches den Tongeneratorabschnitt aktiviert) aufgetreten ist, führt die CPU 3 in Schritt S 8 die "Tongeneratorbearbeitung I" aus und springt zu Schritt S 9, um vorbestimmte Bedingungen, wie z. B. die Rechenfähigkeit der CPU 3 und den Lautstärkepegel jedes erzeugten Tones auf dem Schirm der Anzeige sichtbar darzustellen. Anschließend springt die CPU 3 zu Schritt S 3 zurück, um die Operationen in und nach Schritt 3 zu wiederholen.
  • Die Tongeneratorbearbeitung I bildet einen Teil des Tongeneratorabschnitts. Wie in Fig. 12 gezeigt, subtrahiert die CPU 3 von einer augenblicklichen Zeit GT eine Eingabezeit ST einer MIDI-Nachricht, für die die Tonerzeugung zuletzt abgeschlossen wurde, und setzt anschließend den Wert des Subtraktionsergebnisses als eine zu bildende Menge SR fest (diese Menge SR deutet eine Menge von zu bildenden Tondaten an und wird als eine Zeitdauer ausgedrückt, die einer Zielnummer der durch die augenblickliche Aktivierung des Tongeneratorabschnitts zu bildenden Tondaten entspricht).
  • Genauer gesagt, werden in Schritt S 51 alle Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals nicht durch den Tongeneratorabschnitt gebildet wurden (d. h. alle nichtgebildet verbliebenen Tondaten) im Ansprechen auf ein nächstes internes Unterbrechungssignal verspätet gebildet, wie im in Fig. 5 gezeigten Beispiel der Maßnahme 1. Somit kann, sogar wenn das interne Unterbrechungssignal nicht zu einigen der vorbestimmten Aktivierungszeiten in einem Rahmen erzeugt wird, die vorbestimmte Anzahl von Tondaten, die in einem Ausgabepuffer geschrieben werden sollen, innerhalb desselben Rahmens gebildet werden, was hierdurch eine unerwünschte Behinderung der Tonerzeugung vermeidet. In dem Beispiel von Fig. 5 beträgt die zu bildenden Menge SR zum ersten Aktivierungszeitpunkt 10 Millisekunden, jedoch zum dritten Aktivierungszeitpunkt beträgt sie 20 Millisekunden, da kein internes Unterbrechungssignal zum zweiten Aktivierungszeitpunkt erzeugt wird. Alternativ können, wie zuvor in Verbindung mit Maßnahme 1 erwähnt, die Tondaten, die aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals durch den Tongeneratorabschnitt nicht gebildet wurden (nichtgebildet verbliebene Tondaten) in einer verteilten Art und Weise zu mehreren nachfolgenden Aktivierungszeitpunkten gebildet werden, zu denen wie im Beispiel von Fig. 6 die internen Unterbrechungssignale tatsächlich erzeugt werden, oder sie können fortlaufend durch das Ende der letzten Aktivierungszeit in dem Rahmen gebildet werden.
  • Im auf Schritt S 51 folgenden Schritt S 52 wird ein Tonbildungsbereich für die zu bildende Menge SR beginnend zur Zeit ST in einem anderen der Ausgabepuffer eingestellt als die, die im Initialisierungsprozess der Fig. 9 reserviert wurden. Als nächstes setzt Schritt S 53 eine spezifische Zahl der zum Bilden der Tondaten zu verwendenden Tonerzeugungskanäle in folgender Weise fest. Zuerst versichert sich die CPU 3 auf der Grundlage einer Berechnungszeitdauer, die für das arithmetische Bilden der Menge SR von Tondaten in einem Tonerzeugungskanal erforderlich ist, und auf der Grundlage einer momentan verfügbaren Rechnungszeitdauer EJ (d. h. einer Zeitperiode von einer Berechnungsstartzeit KJ zu der ein momentanes internes Unterbrechungssignal tatsächlich generiert worden ist, bis zur Berechnungsendzeit SJ, zu der erwartet wird, dass ein nächstes internes Unterbrechungssignal erzeugt wird), wie viele Tonerzeugungskanäle zum Bilden der Menge SR von Tondaten innerhalb der Zeitperiode EJ verfügbar sind. Wenn die Anzahl der verfügbaren Tonerzeugungskanäle, die die CPU 3 festgestellt hat, größer oder gleich der Anzahl der Tonerzeugungskanäle ist, die mit der Tonerzeugung im Note-EIN-Ereignisprozess der Fig. 10 beaufschlagt wurden, dann wird die Anzahl der beaufschlagten Kanäle als die Zahl der für das Ausbilden von Tondaten zu verwendenden Tonerzeugungskanäle eingestellt. Wenn andererseits die Anzahl der zur Verfügung stehenden Tonerzeugungskanäle, die die CPU 3 festgestellt hat, kleiner als die Anzahl der beaufschlagten Tonerzeugungskanäle ist, dann wird die Anzahl der verfügbaren Kanäle als die Zahl der zur Bildung von Tondaten zu verwendenden Tonerzeugungskanäle eingestellt; wie zuvor in Verbindung mit Maßnahme 1 bemerkt, wird nämlich die Anzahl der zum Bilden von Tondaten zu verwendenden Tonerzeugungskanäle reduziert, um in einem Rahmen die Bildung einer vorbestimmten Zahl von in einen Ausgabepuffer zu schreibenden Tondaten sicherzustellen.
  • Im nächsten Schritt S 54 wird die Kanalnummer des Tonerzeugungskanals, dem in der Berechnungsreihenfolge, die in Schritt S 35 des Note-EIN-Ereignisprozesses eingestellt wurde, der erste Platz eingeräumt wurde, in das Register i gespeichert, und es wird veranlasst, dass ein Startzeiger sp auf den letzten Eingabezeitpunkt ST zeigt. Dem folgend wird eine erste Reservierung (wie z. B. eine Reservierung für Tonhöhenbeugung, Note-AUS oder Dämpfung) innerhalb einer Periode vom Startzeiger sp zum augenblicklichen Zeitpunkt GT in Schritt S 55 durch Bezugnahme auf den Reservierungsbereich im Primärtongeneratorregister für den durch Register i bestimmten Tonerzeugungskanal detektiert. Anschließend wird weiter eine Bestimmung in S 56 durchgeführt, ob irgendeine Reservierung gefunden worden ist oder nicht.
  • Wenn die Antwort in Schritt S56 ja ist, wird der Startzeiger sp weiterbewegt, so dass er auf die Zeit der detektierten Reservierung in Schritt S 57 zeigt. Wie oben dargelegt, liest die Tonerzeugungsbearbeitung Wellenformdaten aus dem RAM 5 aus, und zwar mit einer Rate, entsprechend den im Tongeneratorregister gespeicherten Steuerparametern. Die ausgelesenen Wellenformdaten werden dann der Klangfarbensteuerung (Filteroperation), Lautstärkensteuerung (Multiplikation mit Tonlautstärkenhüllkurvendaten), Modulationssteuerung von Tonhöhe, Klangfarbe, Lautstärke und einer Effektbeigabe entsprechend den Steuerparameter unterzogen, um Tondaten zu erzeugen.
  • Im nächsten Schritt S 58 wird der Inhalt der detektierten Reservierung in das Tongeneratorregister geschrieben, um den reservierten Inhalt auszuführen. Wenn z. B. die detektierte Reservierung für Note-AUS-Operationen vorgesehen ist, werden die Note-AUS-Ereignisdaten in das Primärtongeneratorregister geschrieben, um ein Abfallen der Tonlautstärkehüllkurve zu starten. Wenn die detektierte Reservierung zur Dämpfung vorgesehen ist, wird das für den Tonerzeugungskanal zu verwendende Tongeneratorregister vom primären zum sekundären geändert, wie vorher in Verbindung mit Maßnahme 2 bemerkt, nachdem die Dämpfung abgeschlossen ist, d. h. nachdem der Tonlautstärkenhüllkurvenpegel unter einen vorbestimmten Pegel abgesunken ist. Dagegen kann die Dämpfung mit dem Primärtongeneratorregister durchgeführt werden, nachdem das für den Tonerzeugungskanal zu verwendende Tongeneratorregister vom primären zum sekundären geändert wird. Wie zuvor in Verbindung mit Schritt S 34 der Fig. 10 beschrieben, wird, falls die Steuerparameter, Note-EIN-Ereignisdaten und die Auftrittszeit für das Note-EIN-Ereignis in das Sekundärtongeneratorregister gespeichert werden, eine Reservierung im Reservierungsbereich des Primärtongeneratorregisters durchgeführt, um eine Dämpfung mit einer speziellen Taktung durchzuführen, die der im Register TM gespeicherten Auftrittszeit entspricht. Wenn die Taktung, die der im Register TM gespeicherten Auftrittszeit entspricht, näherrückt, wird die Tonerzeugungsbearbeitung unter Verwendung des Sekundärtongeneratorregisters nach dem Ausführen der Dämpfung begonnen.
  • Nach Schritt S 58 springt die CPU 3 zu Schritt S 55 zurück, um die Operationen in und nach Schritt S 55 zu wiederholen.
  • Falls die Antwort in Schritt S 56 negativ ausfällt, d. h. es wurde keine Reservierung detektiert, oder wenn die Feststellung aufgrund der Operationen der Schritte S 57 und S 58 negativ geworden ist, wird in Schritt S 59 die Tonerzeugungsbearbeitung für den durch das Register i bezeichneten Kanal für die Periode vom Startzeiger sp zum augenblicklichen Zeitpunkt GT ausgeführt. In dieser Weise werden in dem Tonbildungsbereich Tondaten bis zur zu bildenden Menge SR in dem Tonerzeugungskanal erzeugt.
  • Dann wird in Schritt S 60 eine Feststellung getroffen, ob die Tonerzeugungsbearbeitung für alle Tonerzeugungskanäle, die in Schritt S 53 eingestellt wurden, abgeschlossen ist. Wenn die Antwort in Schritt S 60 negativ ist, wird die Kanalnummer des Tonerzeugungskanals, dem der nächste Platz in der Berechnungsreihenfolge gegeben wurde, in das Register i gespeichert, und der Startzeiger sp wird in Schritt S 61 eingestellt, so dass er auf die Eingabezeit ST zeigt. Dann springt die CPU zu Schritt S 55 zurück, um die Operationen in und nach Schritt S 55 zu wiederholen. Wenn die Antwort in Schritt S 60 JA ist, oder wenn die Feststellung aufgrund der Ausführung der Operationen in und nach Schritt S 55 positiv geworden ist, beendet die CPU 3 die Tonerzeugungsbearbeitung und fährt mit Schritt S 62 fort. Wenn die Anzahl der verfügbaren Tonerzeugungskanäle, die durch die CPU 3 festgestellt wurden, kleiner als die Zahl der beaufschlagten Tonerzeugungskanäle ist, so wird die Zahl der Tonerzeugungskanäle, die für das gleichzeitige Erzeugen von Tönen verwendet werden sollen, durch Auslassen der Tonerzeugungsbearbeitung für einen oder mehrere Tonerzeugungskanäle reduziert, denen in der Berechnungsreihenfolge hintere Platzierungen gegeben wurden.
  • In Schritt S 62 werden die akkumulierten Tondaten der beaufschlagten Kanäle mit oder ohne beigemischte Effekte in den Tonbildungsbereich des in Schritt S 52 eingestellten Ausgabepuffers geschrieben. Im nächsten Schritt S 63 wird die mit der zu bildenden Menge SR addierte Startzeit st als neue Startzeit st eingestellt. Diese neue Startzeit st wird als Berechnungsstartpunkt für die nächste Ausführung der "Tonerzeugungsbearbeitung I" verwendet. Hiernach wird in Schritt S 64 eine weitere Feststellung getroffen, ob die Bildung einer vorbestimmten Anzahl von Tondaten, die in einen Ausgabepuffer geschrieben werden sollen, abgeschlossen ist oder nicht. Wenn dies in Schritt S 64 negativ beantwortet wird, kehrt die CPU 3 zur Hauptroutine zurück. Wenn die Feststellung in Schritt S 64 positiv wird, wird der Ausgabepuffer von den anderen Puffern, die mit diesem in der "Tonerzeugungsbearbeitung II" gekoppelt werden, wie später beschrieben werden wird, entkoppelt, und seine Wiedergabe wird in Schritt S 65 in der Ausgabevorrichtung reserviert. Hiernach kehrt die CPU 3 zur Hauptroutine zurück.
  • Wenn in Schritt S 5 der Fig. 8 ein Auslösefaktor 3 (d. h. Detektion einer Bearbeitungsanfrage von der Ausgabevorrichtung) aufgetreten ist, führt die CPU 3 in Schritt S 10 eine "Tonerzeugungsbearbeitung II" aus und springt zu Schritt S 11, um die vorbestimmten Bedingungen auf dem Bedienungsschirm sichtbar darzustellen. Dann springt die CPU 3 zu Schritt S 3 zurück, um die Operationen in und nach Schritt S 3 zu wiederholen.
  • Die Tonerzeugungsbearbeitung II bildet auch einen Teil des Tongeneratorabschnitts und wird im Ansprechen auf eine Anfrage ausgeführt, die durch Aktivieren der Ausgabevorrichtung (d. h. eines externen Unterbrechungsprozesses durch die DMA- Steuereinheit 11) ausgeführt wird.
  • Fig. 13 ist ein Flussdiagramm des externen Unterbrechungsprozesses, der durch die DMA-Steuereinheit 11 jedesmal dann ausgeführt wird, wenn ein Abtastwert von Tondaten an den D/A-Wandler 12 gesendet wird, d. h. mit einer Wiedergabeabtastfrequenz des D/A-Wandlers 12. Dank dieses externen Unterbrechungsprozesses werden Tondaten für einen Rahmen, die in dem Ausgabepuffer gespeichert sind, mit einem Abtastwert pro Wiedergabeabtastzyklus aus dem Ausgabepuffer ausgelesen und dem D/A-Wandler 12 zugeführt. Der erste Schritt S 71 führt dem D/A-Wandler 12 einen Abtastwert von Tondaten zu, auf die der Zeiger pp zeigt, und die aus einem der reservierten Ausgabepuffer ausgelesen wurden, auf die der Pufferzeiger PB zeigt. Anschließend wird der Zeiger pp in Schritt S 72 um 1 inkrementiert, und es wird in Schritt S 73 festgestellt, ob alle Tondaten im Ausgabepuffer dem D/A-Wandler 12 zugeführt wurden oder nicht, d. h. ob der nötige Wiedergabeprozess für den Ausgabepuffer abgeschlossen ist. Wenn der Wiedergabeprozess für den Ausgabepuffer nicht abgeschlossen ist, kehrt die CPU zur Hauptroutine zurück.
  • Wenn andererseits der Wiedergabeprozess für den Ausgabepuffer, wie in Schritt S 73 festgestellt, abgeschlossen ist, wird in Schritt S 74 eine weitere Feststellung getroffen, ob im Augenblick irgendein anderer Ausgabepuffer für die Wiedergabe reserviert ist. Sogar wenn kein anderer Ausgabepuffer reserviert ist, der durch den Tongenerator gebildete Tondaten gespeichert hat, weil die Aktivierung des Tongeneratorabschnitts durch den Einfluss einer anderen Bearbeitung verzögert wird, ergibt sich in Schritt S 74 eine positive Feststellung bis die Wiedergabe von allen schon reservierten Ausgabepuffern (solche, die bei der Initialisierung der Fig. 9 oder bei der "Tonerzeugungsbearbeitung I" reserviert wurden) abgeschlossen ist. Mit einer solchen positiven Feststellung in Schritt S 74 fährt die DMA-Steuereinheit 11 mit Schritt S 75 fort, um den Pufferzeiger PB so einzustellen, dass er auf den anderen Ausgabepuffer zeigt. Wie früher in Verbindung mit Maßnahme 3 erläutert, kann diese Anordnung den tolerierbaren Bereich einer Zeitverzögerung bei der Aktivierung der Tonerzeugungsbearbeitung ausdehnen, was eine unerwünschte Unterbrechung in einem Strom von erzeugten Tönen vermeiden kann. In dem auf S 75 folgenden Schritt S 76 wird eine Anfrage herausgegeben, um zur "Tonerzeugungsbearbeitung II" den Ausgabepuffer zurückzugeben, für welchen die Wiedergabe der Tondaten abgeschlossen ist (Ausgabepuffer mit abgeschlossener Wiedergabe). Anschließend kehrt der Prozess zur Hauptroutine zurück.
  • Wenn die Aktivierung des Tongeneratorabschnitts stark verzögert wird, kann eine Situation auftreten, bei der kein Ausgabepuffer reserviert wird, der dort eingeschriebene, durch den Tongenerator gebildete Tondaten aufweist, sogar in einem speziellen Rahmen, in dem die Wiedergabe von allen reservierten Ausgabepuffern abgeschlossen ist. In einem solchen Fall ergibt sich eine negative Feststellung in Schritt S 74, so dass die DMA-Steuereinheit 11 zu Schritt S 77 abzweigt, um die Ausgabesignale des D/A-Wandlers 12 stumm zu schalten, um das Erklingen eines Geräusches zu verhindern. Im nächsten Schritt S 78 wird eine Zurücksetzungsanforderung an die "Tonerzeugungsbearbeitung II" ausgegeben, um die Tonerzeugung zurückzusetzen. Anschließend kehrt der Prozess zurück.
  • Fig. 14 ist ein Flussdiagramm für ein Beispiel einer "Tonerzeugungsbearbeitung II", die durch die CPU 3 auf der Grundlage des Rückgabebefehls ausgeführt wird, die von der Ausgabevorrichtung (Schritt S 76 von Fig. 13) ausgegeben wurde. Die CPU 3 empfängt den Ausgabepuffer, der in Schritt S 81 von der Ausgabevorrichtung zurückgegeben wurde, und koppelt anschließend in Schritt S 82 den zurückgegebenen Ausgabepuffer mit dem Ende der anderen Ausgabepuffer, die nach dem Leeren der zurückgegebenen Ausgabepuffer schon durch den Tongeneratorabschnitt in Besitz genommen wurden. Diese Kopplung resultiert in dem virtuellen Verbinden der Ausgabepuffer in Reihe, so dass sie sich als einzelner größerer Puffer behandeln lassen. Dies beseitigt die Notwendigkeit, diese Ausgabepuffer in physikalisch benachbarten Bereichen des RAM 5 vorzugeben. Im nächsten Schritt S 83 werden Daten erzeugt, die die Zeit anzeigen, zu der der Rückgabebefehl ausgegeben worden ist, um die Operation des Tongeneratorabschnitts durch Feststellungen des Vorhandenseins oder Nichtvorhandenseins einer Differenz bei der Operationstaktung zwischen dem Tongenerator und der Ausgabevorrichtung einzustellen. Nach Schritt S 83 kehrt die CPU 3 zur Hauptroutine zurück.
  • Fig. 15 ist ein Flussdiagramm eines Beispiels einer "Tonerzeugungsbearbeitung II", die durch die CPU 3 auf der Grundlage der Zurücksetzungsanfrage ausgeführt wird, die von der Ausgabevorrichtung (Schritt S 78 in Fig. 13) ausgegeben wurde. Zuerst leert die CPU 3 in Schritt S 91 alle Daten vom Tongeneratorregister für jeden der Tonerzeugungskanäle und von den Ausgabepuffern in RAM 5. Dann wird in Schritt S 92, ähnlich zu den Schritten S 23 bis S 25 des Initialisierungsprozesses von Fig. 9, die Ausgabevorrichtung initialisiert, die vier Ausgabepuffer, die in Schritt S 91 geleert wurden, werden in Schritt S 93 wieder für die Wiedergabe reserviert und die Ausgabevorrichtung wird aktiviert, und der Softwarezeitgeber wird in Schritt S 94 starten. Anschließend kehrt die CPU 3 zur Hauptroutine zurück.
  • Bei der "Tonerzeugungsbearbeitung II", die auf der Rücksetzungsanfrage basiert, wird die Tonerzeugung, die bisher im Tongeneratorabschnitt durchgeführt wurde, zwingend unterbrochen, wenn in der Ausgabevorrichtung kein Ausgabepuffer reserviert ist, und die Wiedergabe vom entleerten Ausgabepuffer wird wieder in der Ausgabevorrichtung reserviert, wie es zuvor in Verbindung mit Maßnahme 4 erklärt wurde. Anschließend wird eine neue Tonerzeugung durch Aktivieren des Tongeneratorabschnitts auf der Grundlage einer anschließend zugeführten MIDI-Nachricht begonnen. Sogar wenn die Wiedergabereservierung nicht rechtzeitig erfolgt und eine zeitweilige Unordnung bei der Tonerzeugung verursacht wird, kann so eine stabile Tonerzeugungsoperation sofort wieder hergestellt werden, und daher kann unerwünschtes Rauschen minimiert werden.
  • Wenn im Schritt S 5 von Fig. 8 festgestellt wird, dass der Auslösefaktor 4 aufgetreten ist, führt die CPU 3 in Schritt S 12 einen Prozess aus, der auf die detektierte Anfrage anspricht, wie z. B. einen Prozess, der auf ein Eingabeereignis auf dem Bedienungsschirm der Anzeige 9 oder ein Befehlseingabeereignis auf der Tastatur 8 anspricht. Anschließend werden andere dem Prozess entsprechende Informationen auf dem Bedienungsschirm in Schritt S 13 sichtbar dargestellt. Danach springt die CPU 3 zu Schritt S 3 zurück, um die Operationen in und nach Schritt 3 zu wiederholen.
  • Wenn schließlich der Auslösefaktor 5 (d. h. die Detektierung eines Befehls zur Beendung der Hauptroutine auf der Tastatur 8) aufgetreten ist, führt die CPU 3 in Schritt S 14 einen vorbestimmten Prozess zur Beendigung der Hauptroutine aus, veranlasst in Schritt S 15, dass der Bedienungsschirm von der Anzeige 9 verschwindet, und kehrt anschließend zur Hauptroutine zurück.
  • Falls zwei oder mehrere der oben erwähnten Auslösefaktoren aufgetreten sind, wie es in Schritt S 5 festgestellt wurde, werden die Operationen in und nach Schritt S 5 ausgeführt, z. B. in aufsteigender Reihenfolge der Faktorzahlen (d. h. von Auslösefaktor 1 bis hin zu Auslösefaktor 5). Die Schritte S 3 bis S 5 stellen virtuell die Aufgabenverteilung in einer Pseudo-Multitaskbearbeitung dar; während jedoch bei der Ausführung ein bestimmter Prozess auf der Grundlage des Auftretens eines der Auslösefaktoren ausgeführt wird, kann der Prozess durch das Auftreten eines anderen Auslösefaktors mit höherer Priorität unterbrochen werden, um einen anderen Prozess auszuführen. Während z. B. die "Tonererzeugungsbearbeitung I" im Ansprechen auf das Auftreten des Auslösefaktors 2 ausgeführt wird, kann der MIDI-Prozess durch Unterbrechung aufgrund des Auftretens des Auslösefaktors 1 ausgeführt werden.
  • Die nachfolgenden Paragraphen beschreiben verschiedene Modifikationen der vorher beschriebenen Ausführungsformen.
  • Bei der oben beschriebenen Ausführungsform subtrahiert die CPU 3 jedes Mal, wenn der Softwarezeitgeber ein internes Unterbrechungssignal erzeugt, eine Eingabezeit ST von einer der MIDI-Nachrichten, für die die Tonerzeugung zuletzt abgeschlossen wurde, von der momentanen Zeit GT und setzt den Wert des Subtraktionsergebnisses als zu bildende Menge SR fest. Die oben beschriebene Ausführungsform basiert nämlich auf dem Schema, bei dem alle aufgrund eines Ausbleibens der Erzeugung eines internen Unterbrechungssignals nicht durch den Tongeneratorabschnitt gebildeten Tondaten im Ansprechen auf die Erzeugung eines nächsten internen Unterbrechungssignals gebildet werden. Solch ein Schema ist dahingehend vorteilhaft, dass es die anhängige Bildung all dieser nichtgebildet verbliebenen Tondaten zum frühest möglichen Zeitpunkt bewirkt, sie ist jedoch nachteilig dahingehend, dass die Menge SR von zu bildenden Tondaten im Ansprechen auf ein nächstes internes Unterbrechungssignal zu groß wird, falls das Unterbrechungssignal nicht zu vielen aufeinanderfolgenden Aktivierungszeitpunkten erzeugt wird. Die größere zu bildende Menge SR macht es für die CPU 3 nötig, mehr Zeit mit dem Ausführen der "Tonerzeugungsbearbeitung I" zu verbringen. Als Ergebnis wird die CPU 3 für lange Zeit ausschließlich beim Ausführen der "Tonerzeugungsbearbeitung I" verwendet, und so kann eine unerwünschte Situation auftreten, bei der, wenn während der Ausführung der "Tonerzeugungsbearbeitung I" eine oder mehrere Auslösefaktoren für die "Tonerzeugungsbearbeitung II" oder dergleichen mit niedrigerer Priorität auftreten, die CPU 3 nicht sofort mit der Ausführung einer solchen Bearbeitung mit niedrigerer Priorität fortfahren kann. Weiter ergibt sich aus der größeren zu bildenden Menge SR eine deutlichere Abnahme in der Anzahl der Tonerzeugungskanäle, die gleichzeitig Tondaten bilden können, wenn die zu Verfügung stehende Berechnungszeitperiode EJ zu kurz wird.
  • In Anbetracht der obigen Unannehmlichkeiten werden verschiedene Modifikationen der vorliegenden Erfindung beschrieben, bei denen die anhängige Tondatenbildung in fortschreitender Weise bewirkt wird.
  • Modifikation 1
  • Nach dieser Modifikation wird jedesmal, wenn ein internes Unterbrechungssignal durch den Softwarezeitgeber erzeugt wird, ein "Unterprogrammaufruf"-Prozess anstelle der oben erwähnten "Tonerzeugungsbearbeitung I" ausgeführt. In dem Unterprogrammaufrufprozess werden Signale, die jeweils darüber informieren, dass ein internes Unterbrechungssignal erzeugt wurde (und dass daher jetzt eine Tonwellenform erzeugt werden sollte), in Mengen erzeugt, die der seit der Erzeugung des internen Unterbrechungssignals verstrichenen Zeit entsprechen, und anschließend werden die erzeugten Signale in einen Unterprogrammaufrufpuffer geschrieben, der im RAM 5 vorgesehen ist. Jedes dieser Signale wird nachfolgend "Unterprogrammaufruf zur Wellenformerzeugung" genannt. Wenn ein oder mehrere Unterprogrammaufrufe zur Wellenformerzeugung in den Unterprogrammaufrufpuffer geschrieben werden, wird eine "modifizierte Tonerzeugungsbearbeitung I" ausgeführt, bei der eine Menge von zu bildende Tondaten so festgelegt wird, dass sie innerhalb einer vorbestimmten Grenze liegt, die verhindert, dass die Tonerzeugungsbearbeitung zu lange dauert, und anschließend werden Tondaten bis zu dieser Menge gebildet, wonach eine bestimmte Anzahl von Unterprogrammaufrufen zur Wellenformerzeugung, die der gebildeten Menge entspricht, aus dem Unterprogrammausrufpuffer geleert oder eins nach dem anderen gelöscht wird. Durch Ausführen der "modifizierten Tonerzeugungsbearbeitung I" im Ansprechen auf die Detektion von einem oder mehreren in dem Unterprogrammaufrufspeicher geschriebenen Unterprogrammaufrufen zur Wellenformerzeugung wird es der anhängigen Tondatenbildung erlaubt, in einer fortlaufenden Weise ausgeführt zu werden. In dem Fall, in dem das Unterbrechungssignal zu mehreren aufeinanderfolgenden Aktivierungszeitpunkten nicht erzeugt wird, steigt die Anzahl der Unterprogrammaufrufe zur Wellenformerzeugung, die in dem Unterprogrammaufrufpuffer geschrieben wurden, aber diese Modifikation kann effektiv die Menge der gebildeten Tondaten auf einen vorbestimmten Bereich beschränken, um dadurch eine langzeitige ausschließliche Benutzung der CPU 3 bei der "modifizierten Tonerzeugungsbearbeitung I" zu verhindern. Als Ergebnis kann die CPU zuverlässiger die Ausführung einer Bearbeitung mit niedrigerer Priorität feststellen und eine signifikante Abnahme in der Anzahl der Tonererzeugungskanäle vermeiden, die gleichzeitig Tondaten bilden können.
  • Modifikation 1 wird nachfolgend genauer mit Bezug auf die Fig. 16-20 beschrieben.
  • Fig. 16 ist ein Flussdiagramm einer Hauptroutine, die bei der Modifikation durch die CPU 3 ausgeführt wird. In einem Initialisierungsprozess S 101 führt die CPU 3 dieselben Operationen wie im Initialisierungsprozess von Schritt S 1 der Fig. 8 und 9 aus und löscht alle Daten aus dem Unterprogrammaufrufpuffer des RAM 5. Im nächsten Schritt S 102 werden von der CPU 3 dieselben Operationen wie in Schritt S 2 der Fig. 8 ausgeführt.
  • In dem auf Schritt S 102 folgenden Schritt S 103 prüft die Hauptroutine das Auftreten der folgenden Auslösefaktoren.
  • Auslösefaktor 1: Zuführung einer MIDI-Nachricht vom Sequenzerprogramm (siehe Fig. 2);
  • Auslösefaktor 2: Erzeugung eines internen Unterbrechungssignals durch den Softwarezeitgeber, welches den Tongeneratorabschnitt aktiviert;
  • Auslösefaktor 3: Detektion eines in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufs zur Wellenformerzeugung;
  • Auslösefaktor 4: Detektion einer Bearbeitungsanforderung von der Ausgabevorrichtung;
  • Auslösefaktor 5: Detektion einer anderen Anforderung, wie z. B. eines Eingabeereignisses auf dem Bedienungsschirm der Anzeige 9 oder eines Befehlseingabeereignisses auf der Tastatur 8 (mit Ausnahme eines Befehls zur Beendigung der Hauptroutine); und
  • Auslösefaktor 6: Detektion eines Eingabeereignisses eines Befehls zur Beendigung der Hauptroutine auf der Tastatur 8.
  • Die oben aufgelisteten Auslösefaktoren sind allgemein dieselben wie die, die in Schritt 3 der Fig. 8 geprüft wurden, mit der Ausnahme, dass die Nummerierung von jedem der Auslösefaktoren 3 bis 5 hier aufgrund der Hinzunahme der Detektion eines Unterprogrammaufrufs zur Wellenformerzeugung als Auslösefaktor 3 um "eins" nach unten verschoben wird.
  • Nach Schritt S 103 wird in Schritt S 104 eine Feststellung getroffen, ob einer der oben erwähnten Auslösefaktoren aufgetreten ist oder nicht, ähnlich wie in Schritt S 4 der Fig. 8. Wenn irgendeiner der Auslösefaktoren aufgetreten ist, folgt eine positive Feststellung in Schritt S 104, und die CPU 3 fährt mit Schritt S 105 fort, wo eine weitere Feststellung getroffen wird, welcher der sechs Auslösefaktoren aufgetreten ist. Falls zwei oder mehr der oben erwähnten Auslösefaktoren, die in Schritt S 105 bestimmt wurden, aufgetreten sind, werden Operationen in und nach Schritt S 105 ausgeführt, z. B. in aufsteigender Reihenfolge der Faktornummern (d. h. in Reihenfolge von Auslösefaktor 1 hin zu Auslösefaktor 6).
  • Wenn der Auslösefaktor 1, festgestellt in Schritt S 105, aufgetreten ist, springt die CPU 3 zu den Schritten S 106 und S 107, wo derselbe MIDI-Prozess und der Prozess zur Anzeige der empfangenen Nachricht wie in den Schritten 56 und 57 der Fig. 8 ausgeführt werden.
  • Wenn der Auslösefaktoren 2, festgestellt in Schritt S 105, aufgetreten ist, springt die CPU 3 zu einem Unterprogrammaufrufprozess des Schritts S 108. Es wird darauf hingewiesen, dass die Verzögerung oder das Ausbleiben des internen Unterbrechungssignals bei dieser Modifikation ebenfalls angetroffen werden kann, und daher neigt das Zeitintervall zwischen den tatsächlich erzeugten internen Unterbrechungssignalen dazu, 10 Millisekunden zu übersteigen, anstatt immer fest bei 10 Millisekunden zu liegen.
  • In dem in Fig. 17 gezeigten Unterprogrammaufrufprozess wird festgestellt, welches Vielfache von 10 Millisekunden das Zeitintervall zwischen dem letzten und dem momentanen tatsächlich erzeugten internen Unterbrechungssignal ist, und anschließend wird ein Unterprogrammaufruf für die Wellenform in solchen Mengen erzeugt, die einem Wert des festgestellten Vielfachen entsprechen. Z. B. wird ein Unterprogrammaufruf für eine Wellenform erzeugt, wenn das Zeitintervall zwischen dem lenzten und dem momentanen tatsächlich erzeugten internen Unterbrechungssignal gleich oder größer als 10 Millisekunden aber kleiner als 20 Millisekunden ist, und zwei Unterprogrammaufrufe für eine Wellenform werden erzeugt, wenn das Zeitintervall gleich oder größer als 20 Millisekunden, aber kleiner als 30 Millisekunden ist. Jeder der erzeugten Unterprogrammaufrufe für die Wellenformerzeugung wird in Schritt S 120 in den Unterprogrammaufrufpuffer geschrieben, und anschließend kehrt die CPU 3 zur Hauptroutine zurück. Nach Abschluss des Unterprogrammaufrufprozesses springt die CPU zu Schritt S 109, um die vorbestimmten Bedingungen auf dem Bedienungsschirm anzuzeigen, und springt anschließend zu Schritt S 103 zurück.
  • Wenn der Unterprogrammaufrufprozess einen Unterprogrammaufruf zur Wellenformerzeugung in den Unterprogrammaufrufpuffer geschrieben hat, bedeutet dies, dass der Auslösefaktor 3 aufgetreten ist. Im Ansprechen auf die Detektion eines solchen Auslösefaktors 3 in Schritt S 105 fährt die CPU 3 mit der "modifizierten Tonerzeugungsbearbeitung I" von Schritt S 110 fort.
  • Fig. 18 ist ein Flussdiagramm, welches ein Beispiel der "modifizierten Tonerzeugungsbearbeitung I" zeigt. Zuerst wird in Schritt S 121 die zu bildende Menge SR auf 10 Millisekunden gesetzt, was einem Zehntel der vorbestimmten Anzahl der in einem Ausgabepuffer zu schreibenden Tondaten entspricht.
  • Im nächsten Schritt S 122 wird ein Tonbifdungsbereich für die zu bildende Menge SR beginnend bei einer Zeit ST (Eingabezeit einer MIDI-Nachricht, für die die Tonerzeugung zuletzt abgeschlossen wurde) in einem der Ausgabepuffer gesetzt, der von denen im Initialisierungsprozess, wie im Schritt S 52 der Fig. 12, reservierten verschieden ist.
  • Dann wird in Schritt S 123 die Anzahl der Tonerzeugungskanäle, die zum Bilden der Menge SR von Tondaten verwendet werden soll, abhängig von der Anzahl der in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufe zur Wellenformerzeugung eingestellt. Genauer gesagt, wenn die Anzahl der in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufe zur Wellenformerzeugung kleiner ist als ein vorbestimmter Wert (d. h. wenn die Anzahl des Vorkommens, dass das interne Unterbrechungssignal nacheinander nicht erzeugt wurde, sich unterhalb eines vorbestimmten Wertes befindet), dann wird die Anzahl der Kanäle, die im Note-EIN-Ereignisprozess der Fig. 10 beaufschlagt werden, als Zahl der zum Bilden von Tondaten zu verwendenden Tonerzeugungskanäle festgelegt.
  • Wenn andererseits die Anzahl der in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufe zur Wellenformerzeugung nicht kleiner ist als ein vorbestimmter Wert (d. h. wenn die Anzahl des Vorkommens, dass das interne Unterbrechungssignal nacheinander nicht erzeugt wurde, nicht kleiner als der vorbestimmte Wert ist), dann wird die Anzahl der Tonerzeugungskanäle, die zum Bilden der Tondaten verwendet werden sollen, so eingestellt, dass sie kleiner als die Zahl der Kanäle ist, die im Note-EIN-Ereignisprozess beaufschlagt wurden.
  • Der Grund, warum die Zahl der Tonerzeugungskanäle, die zum Bilden von Tondaten verwendet werden sollen, kleiner eingestellt wird als die Anzahl der beaufschlagten Kanäle, ist, dass die nötige Zeit für eine Ausführung der "modifizierten Tonerzeugungsbearbeitung I" reduziert wird, und dadurch die anhängige Bildung von Tondaten beschleunigt wird. Es ist zu beachten, dass es anders als in Schritt S 53 der Fig. 12 nicht nötig ist, die Zahl der Tonerzeugungskanäle im Verhältnis zur verfügbaren Berechnungszeitperiode EJ zu reduzieren. Da diese modifizierte Tonerzeugungsbearbeitung durch Schreiben des Unterprogrammaufrufs zur Wellenformerzeugung in den Unterprogrammaufrufpuffer aktiviert wird, statt durch die Erzeugung eines internen Unterbrechungssignals und hier die verfügbare Berechnungszeitperiode EJ nicht berücksichtigt zu werden braucht, wird keine Situation auftreten, bei der die Anzahl der Tonerzeugungskanäle in einem exzessiven Ausmaß reduziert wird.
  • In den folgenden Schritt S 124 bis S 135 werden dieselben Operationen ausgeführt, wie in den Schritten S 54 bis S 65 der Fig. 12. Die CPU 3 kehrt zur Hauptroutine nach Löschen nur eines Unterprogrammaufrufs zur Wellenformerzeugung aus dem Unterprogrammaufrufpuffer zurück.
  • Wie beschrieben, wird die zu bildende Menge SR bei einer Ausführung der "modifizierten Tonerzeugungsbearbeitung I" im Beispiel von Fig. 18 immer auf 10 Millisekunden festgelegt (was einem Zehntel der vorbestimmten Anzahl von Tondaten entspricht, die in einen Ausgabepuffer geschrieben werden sollen). Somit ist es möglich, zu verhindern, dass die CPU 3 für eine lange Zeit ausschließlich bei der "modifizierten Tonerzeugungsbearbeitung I" verwendet wird, mit dem Ergebnis, dass die CPU 3 besser die Ausführung einer Bearbeitung mit niedrigerer Priorität sicherstellen und eine signifikante Abnahme in der Anzahl der Tonerzeugungskanäle vermeiden kann, die gleichzeitig Tondaten bilden können.
  • Fig. 19 ist ein Flussdiagramm, welches ein weiteres Beispiel der "modifizierten Tonerzeugungsbearbeitung I" zeigt. Zuerst werden in Schritt S 141 die zu bildende Menge SR und die Anzahl der zum Bilden von Tondaten zu verwendenden Tonerzeugungskanäle festgesetzt, und zwar abhängig von der Anzahl der in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufe zur Wellenformerzeugung. Die Anzahl der zu verwendenden Tonerzeugungskanäle, die zum Bilden von Tondaten verwendet werden sollen, wird in ähnlicher Weise wie in Schritt S 123 eingestellt.
  • Im folgenden wird genauer die Art und Weise beschrieben, auf die die zu bildende Menge SR in diesem Beispiel eingestellt wird. Wenn die Anzahl der in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufe zur Wellenformerzeugung kleiner als ein vorbestimmter Wert ist (d. h. wenn die Anzahl des Vorkommens, dass das interne Unterbrechungssignal nacheinander nicht erzeugt wurde unterhalb des vorbestimmten Wertes liegt), dann wird die zu bildende Menge SR auf 10 Millisekunden eingestellt. Wenn andererseits die Anzahl der in den Unterprogrammaufrufpuffer geschriebenen Unterprogrammaufrufe zur Wellenformerzeugung nicht kleiner als der vorbestimmte Wert ist (d. h. wenn die Anzahl des Vorkommens, dass das interne Unterbrechungssignal nacheinander nicht erzeugt, nicht kleiner als der vorbestimmte Wert ist), dann wird die zu bildende Menge SR auf 20 Millisekunden eingestellt, was zwei Zehnteln der vorbestimmten Anzahl von Tondaten entspricht, die in einen Ausgabepuffer geschrieben werden sollen. Wenn z. B. die Erzeugung des internen Unterbrechungssignals nacheinander über 19 mal nicht gelungen ist, so dass veranlasst wird, dass die Anzahl der Unterprogrammaufrufe zur Wellenformerzeugung im Unterprogrammaufrufpuffer die 19 übersteigt, kann die zu bildende Menge SR auf 20 Millisekunden eingestellt werden, da jetzt die Anzahl der reservierten Ausgabepuffer von 4 auf 2 abgenommen hat. Wenn die Zahl der Unterprogrammaufrufe zur Wellenformerzeugung im Unterprogrammaufrufpuffer den vorbestimmten Wert um ein gewisses Maß überschritten hat, kann die zu bildende Menge SR alternativ auf einen sogar größeren Wert innerhalb einer solchen vorbestimmten Grenze eingestellt werden, die verhindert, dass eine Ausführung dieses Beispiels der "modifizierten Tonerzeugungsbearbeitung I" zu viel Zeit beansprucht.
  • Im nächsten Schritt S 142 wird ein Tonbildungsbereich für die zu bildende Menge SR beginnend zur Zeit ST (Eingabezeit einer der MIDI-Nachrichten, für die die Tonerzeugung als letztes abgeschlossen wurde) in einem anderen Ausgabepuffer eingestellt als diejenigen, die im Initialisierungsprozess, wie z. B. im Schritt S 52 der Fig. 12, reserviert wurden.
  • In den folgenden Schritten S 143 bis S 154 werden dieselben Operationen wie in den Schritten S 54 bis S 65 der Fig. 12 ausgeführt. Es wird in Schritt S 155 festgestellt, welches Vielfache von 10 Millisekunden die eingestellte zu bildende Menge SR ist, und anschießend wird der Unterprogrammaufruf für die Wellenform aus dem Unterprogrammaufrufpuffer in den Mengen gelöscht, die dem festgestellten Vielfachen entsprechen. Z. B. wird ein Unterprogrammaufruf für eine Wellenform gelöscht, wenn die zu bildende Menge SR 10 Millisekunden beträgt, und zwei Unterprogrammaufrufe für eine Wellenform werden gelöscht, wenn die zu bildende Menge SR 20 Millisekunden beträgt. Die CPU 3 kehrt hiernach zur Hauptroutine zurück.
  • Wie oben beim Beispiel der "modifizierten Tonerzeugungsbearbeitung I" der Fig. 19 erklärt, wird die zu bildende Menge SR für eine Ausführung der "modifizierten Tonerzeugungsbearbeitung I" so eingestellt, dass sie länger als 10 Millisekunden innerhalb eines solchen vorbestimmten Bereiches ist, der sicherstellt, dass nicht zuviel Zeit durch eine Ausführung der "modifizierten Tonerzeugungsbearbeitung I" verbraucht wird, wenn die Erzeugung des internen Unterbrechungssignals mehrere Male nacheinander fehlgeschlagen ist. Solch eine Anordnung erzielt nicht nur vorteilhafte Ergebnisse, wie sie in Verbindung mit dem Beispiel von Fig. 18 dargelegt wurden, sondern kann auch die anhängige Tondatenbildung voranbringen, wenn relativ viele Tondaten gebildet werden sollen.
  • Nach Abschluss der "modifizierten Tonerzeugungsbearbeitung I" in Schritt S 110 von Fig. 16 springt die CPU 3 zu Schritt S 111, um vorbestimmte Bedingungen auf dem Bedienungsschirm anzuzeigen, und springt anschließend zu Schritt S 103 zurück.
  • Wenn der Auslösefaktor 4, der in Schritt S 105 festgestellt wird, aufgetreten ist, springt die CPU 3 zu den Schritten S 112 und S 113, um die "Tonerzeugungsbearbeitung II" und eine sichtbare Darstellung der vorbestimmten Bedingungen auszuführen, die zu den Gegenstücken der Schritte S 10 und S 11 der Fig. 8 ähnlich sind, mit der Ausnahme der "Tonerzeugungsbearbeitung II", die auf einer Zurücksetzungsanforderung von der Ausgabevorrichtung basiert (Schritt S 78 von Fig. 13).
  • Fig. 20 ist ein Flussdiagramm, das ein Beispiel der "Tonerzeugungsbearbeitung II" zeigt, die auf der Grundlage einer Zurücksetzungsanforderung von der Ausgabevorrichtung ausgeführt wird. In Schritt S 161 löscht die CPU 3 alle Daten aus dem Unterprogrammaufrufpuffer, den Tongeneratorregistern und den Ausgabepuffern. In den nächsten Schritten S 162 und S 164 werden dieselben Operationen wie in den Schritten S 92 bis S 94 von Fig. 15 ausgeführt. Anschließend kehrt die CPU 3 zur Hauptroutine zurück.
  • Wenn, bezugnehmend auf Fig. 16, der Auslösefaktor 5 oder der Auslösefaktor 6, der in Schritt S 105 bestimmt wurde, aufgetreten ist, springt die CPU zu den Schritten S 114 und S 115 oder S 116 und S 117. Die Schritte S 114 und S 115 führen Operationen aus, die denen der Schritte S 12 und S 13 von Fig. 8 ähnlich sind, die ausgeführt werden, wenn bestimmt wird, dass der Auslösefaktor 4 aufgetreten ist, und die Schritte S 116 und S 117 führen Operationen aus, die denen der Schritte S 14 und S 15 der Fig. 8 ähnlich sind, die ausgeführt werden, wenn bestimmt wird, dass der Auslösefaktor 5 aufgetreten ist.
  • Modifikation 2
  • Nach dieser Modifikation wird jedesmal, wenn ein internes Unterbrechungssignal durch den Softwarezeitgeber erzeugt wird, eine Menge von zu bildenden Tondaten als Funktion einer Menge von Tondaten, die zu diesem Zeitpunkt nichtgebildet verblieben sind, und zwar innerhalb eines solchen vorbestimmten Bereiches eingestellt, der sicherstellt, dass die Tonerzeugungsbearbeitung nicht zuviel Zeit beansprucht, und die Bearbeitung wird zum Bilden von Tondaten ausgeführt, um die eingestellte Menge zu erreichen (diese Bearbeitung wird nachfolgend "weiter modifizierte Tonerzeugungsbearbeitung I" genannt). Durch Ausführen einer solchen "weiter modifizierte Tonerzeugungsbearbeitung I" im Ansprechen auf die Erzeugung eines internen Unterbrechungssignals wird die anhängige Tondatenbildung in fortlaufender Weise bewirkt. Dieses Schema ist ähnlich zur Hauptroutine der Fig. 8 dahingehend, dass die Tonerzeugungsbearbeitung durch ein internes Unterbrechungssignal aktiviert oder ausgelöst wird, sie unterscheidet sich jedoch von der "Tonerzeugungsbearbeitung I" der Fig. 12 darin, dass die Tondaten fortlaufend zu mehreren Zeiten gebildet werden, statt alle Tondaten zu einer Zeit zu bilden; dieses Schema ist jedoch ähnlich zur "modifizierten Tonerzeugungsbearbeitung I", die in der oben beschriebenen Modifikation 1 ausgeführt wird. Daher verhindert die Modifikation 2, dass die CPU 3 ausschließlich für die "weiter modifizierte Tonerzeugungsbearbeitung I" verwendet wird, so dass dieselben vorteilhaften Ergebnisse wie bei Modifikation 1 erzielt werden. Modifikation 1 muss die Priorität des Faktors, der die "modifizierte Tonerzeugungsbearbeitung I" (d. h. den Unterprogrammaufruf zur Wellenformerzeugung im Unterprogrammaufrufpuffer) auslöst, niedriger setzten als die des Faktors, der den Unterprogrammaufrufprozess auslöst (d. h. die Erzeugung eines internen Unterbrechungssignals); jedoch ist bei der Modifikation 2 die Erzeugung des internen Unterbrechungssignals selbst der Auslösefaktor für die "weiter modifizierte Tonerzeugungsbearbeitung I", und daher ist die Tonerzeugungsbearbeitung einfacher mit höherer Priorität ausführbar.
  • Modifikation 2 wird nun genauer mit Bezug auf die Fig. 21 bis 25 beschrieben.
  • Bei dieser Modifikation führt die CPU 3 eine Hauptroutine aus, die dieselbe ist wie die Hauptroutine von Fig. 8 mit der Ausnahme, dass anstelle der Tonerzeugungsbearbeitung I von Fig. 8 die "weiter modifizierte Tonerzeugungsbearbeitung I" ausgeführt wird.
  • Fig. 21 ist ein Flussdiagramm, welches ein Beispiel der "weiter modifizierten Tonerzeugungsbearbeitung I" zeigt. Im ersten Schritt S 201 subtrahiert die CPU 3 von einer momentanen Zeit GT eine Eingabezeit ST einer der MIDI-Nachrichten, für die die Tonerzeugung als letztes abgeschlossen wurde, und setzt den Wert des Subtraktionsergebnisses als Verzögerungsstärke OR fest (diese Stärke OR wird durch eine Zeitdauer dargestellt, die der Länge der Menge der nichtgebildeten Tondaten entspricht). Im nächsten Schritt S 202 wird eine zu bildenden Menge SR als Funktion der Verzögerungsstärke OR eingestellt.
  • Fig. 22 ist eine graphische Darstellung, die ein Beispiel einer charakteristischen Kurve zeigt. In diesem Beispiel beträgt die zu bildende Menge SR 10 Millisekunden (was einem Zehntel der vorbestimmten Zahl von in einem Ausgabepuffer zu schreibenden Tondaten entspricht), wenn die Verzögerungsstärke OR kleiner ist als ein vorbestimmter Wert, aber nachdem die Verzögerungsstärke OR einen gegebenen Wert übersteigt, nimmt sie nach und nach zu, da der Wert für die Stärke OR zunimmt. Anschließend wird, nachdem die zu bildende Menge SR einen vorbestimmten oberen Grenzwert SRmax innerhalb eines solchen Bereiches erreicht, der sicherstellt, dass die Tonerzeugungsbearbeitung nicht zuviel Zeit benötigt, die Menge SR am oberen Grenzwert SRmax gehalten, und zwar ungeachtet eines weiteren Ansteigens der Verzögerungsstärke OR. Der obere Grenzwert SRmax kann z. B. 20 Millisekunden betragen oder kann jeden anderen geeigneten Wert haben.
  • Fig. 23 ist eine graphische Abbildung, die ein weiteres Beispiel der charakteristischen Funktion der Kurve zeigt. In diesem Beispiel beträgt die zu bildende Menge SR 10 Millisekunden, wenn die Verzögerungsstärke kleiner ist als ein vorbestimmter Wert, aber nachdem die Verzögerungsstärke OR einen gegebenen Wert übersteigt, steigt sie schrittweise an, da der Wert der Stärke OR ansteigt. Anschließend wird, nachdem die zu bildende Menge SR einen vorbestimmten oberen Grenzwert SRmax innerhalb eines solchen Bereiches erreicht, der sicherstellt, dass die Tonerzeugungsbearbeitung nicht zuviel Zeit benötigt, die Menge SR am oberen Grenzwert SRmax gehalten, und zwar ungeachtet eines weiteren Ansteigens der Verzögerungsstärke OR.
  • Es ist zu beachten, dass die zu bildende Menge SR, die in der oben erwähnten Weise eingestellt wurde, nicht immer einen Wert eines ganzzahligen Vielfachen von 10 Millisekunden annimmt, sondern sie kann einen Wert eines Vielfachen von 10 Millisekunden mit einem Bruchteil annehmen. Als Ergebnis ist die Menge der Tondaten, die durch eine Ausführung der "weiter modifizierten Tonerzeugungsbearbeitung I" gebildet werden, nicht notwendigerweise ein ganzzahliges Vielfaches von einem Zehntel der vorbestimmten Zahl, die, wie in den Fig. 5 oder 6 gezeigt, in einen Ausgabepuffer geschrieben werden sollen, sondern es kann eine Menge sein, die einem Vielfachen von 10 Millisekunden mit einem Bruchteil entspricht.
  • Fig. 24 ist ein Diagramm, welches ein Beispiel einer Menge von Tondaten zeigt, die in Modifikation 2 in Verbindung mit der Erzeugung von internen Unterbrechungssignalen gebildet wurden. In dem Beispiel wird eine Menge von Tondaten, die einem Zehntel der vorbestimmten Zahl entspricht, die in einen Ausgabepuffer geschrieben werden soll, in einem Rahmen zu einer ersten Aktivierungszeit (die dem nullten Millisekundenpunkt im gezeigten Beispiel entspricht) gebildet, zu welcher in dem Rahmen ein internes Unterbrechungssignal erzeugt wird. Keine Tondaten werden zu den zweiten und dritten Aktivierungszeitpunkten (die dem zehnten und zwanzigsten Millisekundenpunkt in der Figur entsprechen) aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals gebildet, und anschließend wird eine spezifische Menge von Tondaten, die 1,6/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, zu einem vierten Aktivierungszeitpunkt (der dem 30ten Millisekundenpunkt entspricht) gebildet, zu dem ein weiteres internes Unterbrechungssignal erzeugt wird. Somit sind am Ende der vierten Aktivierungszeit Tondaten bis zu einer Menge gebildet, die 2,6/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, was in der Figur mit "2,6" bezeichnet ist.
  • Anschließend wird eine spezifische Menge von Tondaten, die 1,5/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, zu einem fünften Aktivierungszeitpunkt (der dem 40ten Millisekundenpunkt entspricht) gebildet, zu dem ein weiteres internes Unterbrechungssignal erzeugt wird. Somit sind am Ende der fünften Aktivierungszeit Tondaten bis zu einer Menge gebildet, die 4,1/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, was in der Figur mit "4,1" bezeichnet ist. Hiernach wird noch eine weitere spezifische Menge von Tondaten, die 1,4/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, zu einem sechsten Aktivierungszeitpunkt (der dem 50ten Millisekundenpunkt entspricht) gebildet, zu dem ein weiteres internes Unterbrechungssignal erzeugt wird. Somit sind am Ende der sechsten Aktivierungszeit Tondaten bis zu einer Menge gebildet, die 5,5/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, was in der Figur mit "5, 5" bezeichnet ist.
  • Keine Tondaten werden zu den siebten und achten Aktivierungszeitpunkten (die dem sechzigsten und siebzigsten Millisekundenpunkt in der Figur entsprechen) aufgrund eines Ausbleibens der Erzeugung des internen Unterbrechungssignals gebildet, und anschließend wird noch eine weitere spezifische Menge von Tondaten, die 1,7/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, zu einem neunten Aktivierungszeitpunkt (der dem 80. Millisekundenpunkt entspricht) gebildet, zu dem ein weiteres internes Unterbrechungssignal erzeugt wird. Somit sind am Ende der neunten Aktivierungszeit Tondaten bis zu einer Menge verspätet gebildet, die 7,2/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, was in der Figur mit "7,2" bezeichnet ist. Hiernach wird noch eine weitere spezifische Menge von Tondaten, die 1,6/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, zu einem zehnten Aktivierungszeitpunkt (90. Millisekundenpunkt) gebildet, zu dem noch ein weiteres internes Unterbrechungssignal erzeugt wird. Somit sind am Ende der zehnten Aktivierungszeit Tondaten bis zu einer Menge für den Rahmen insgesamt gebildet, die 8, 8/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, was in der Figur mit "8,8" bezeichnet ist.
  • Zu einem ersten Aktivierungszeitpunkt (hundertster Millisekundenpunkt in der Figur) eines nächsten Rahmens, zu dem ein anderes internes Unterbrechungssignal erzeugt wird, wird eine weitere Menge von Tondaten, die in dem vorangegangenen Rahmen nichtgebildet belassen wurden, die 1,2/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, zusammen mit einer spezifischen Menge von Tondaten gebildet, die im momentanen Rahmen gebildet werden sollen, welche 0,3/10 der in einen Ausgabepuffer zu schreibenden vorbestimmten Zahl entspricht, wie es in der Figur durch "10,3" bezeichnet ist. Hiernach wird noch eine weitere spezifische Menge von Tondaten, die 1,4/10 der in einen Ausgabepuffer für den momentanen Rahmen zu schreibenden vorbestimmten Zahl entspricht, zu einem zweiten Aktivierungszeitpunkt (110ter Millisekundenpunkt) des momentanen Rahmens gebildet, zu dem noch ein weiteres internes Unterbrechungssignal erzeugt wird. Somit sind am Ende der zweiten Aktivierungszeit Tondaten bis zu einer Menge gebildet, die 1,7/10 der in einen Ausgabepuffer für den momentanen Rahmen zu schreibenden vorbestimmten Zahl entspricht, was in der Figur mit "1,7" bezeichnet ist. Hiernach werden Tondaten im Ansprechen auf jedes interne Unterbrechungssignal erzeugt, bis die Gesamtmenge den oben erwähnten oberen Grenzwert SRmax erreicht.
  • In Schritt S 203, der dem Schritt S 202 folgt, wird ein Tonbildungsbereich für die zu bildende Menge SR, beginnend zur Zeit ST, in einem Ausgabepuffer eingestellt, der von dem im Initialisierungsprozess reservierten verschieden ist.
  • Der nächste Schritt S 204 setzt die Zahl der Tonerzeugungskanäle fest, die zum Bilden von Tondaten verwendet werden sollen. Die Anzahl dieser Tonerzeugungskanäle kann als Funktion der Verzögerungsstärke OR eingestellt werden. Fig. 25 ist eine graphische Darstellung, die ein Beispiel für eine charakteristische Kurve dieser Funktion zeigt. Wenn nach diesem Beispiel die Verzögerungsstärke OR unterhalb eines vorbestimmten Wertes liegt, dann wird die Zahl der Kanäle CHmax, die im Note-EIN-Prozess der Fig. 10 beaufschlagt wurden, als Zahl der Tonerzeugungskanäle eingestellt, die zum Bilden von Tondaten verwendet werden sollen. Wenn die Verzögerungsstärke OR nicht unterhalb eines vorbestimmten Wertes liegt, dann wird die Zahl der zum Bilden von Tondaten zu verwendenden Tonerzeugungskanäle so eingestellt, dass sie kleiner als die Zahl der beaufschlagten Kanäle CHmax ist, so dass es möglich ist, die für eine Ausführung der Tonerzeugungsbearbeitung nötige Zeit zu reduzieren.
  • Alternativ kann die Zahl der zur Bildung von Tondaten zu verwendenden Tonererzeugungskanäle in ähnlicher Weise wie in Schritt S 53 der Fig. 12 bestimmt werden.
  • Bezugnehmend auf Fig. 21, werden in den Schritten S 205 bis S 214, die auf Schritt S 204 folgen, dieselben Operationen ausgeführt, wie in den Schritten S 53 bis S 63 in Fig. 12. Im nächsten Schritt S 215 wird der Pegel einer Tonlautstärkehüllkurve, die für den mit dem momentanen Note-EIN-Ereignis beaufschlagten Tonerzeugungskanal verwendet wird, auf Null abgesenkt. Dieselben Operationen wie in den Schritten S 64 und S 65 der Fig. 12 werden in den Schritten S 216 und S 217 ausgeführt, und anschließend kehrt die CPU 3 zur Hauptroutine zurück.
  • Wie oben beschrieben, kann das erfindungsgemäße Computermusiksystem, sogar wenn die Bearbeitung mit einem Betriebssystem ohne volle Multitaskfunktion ausgeführt wird, auf verlässliche Weise eine Situation vermeiden, bei der die Tonerzeugung durch eine Verzögerung bei der Aktivierung des Tongeneratorabschnitts aufgrund des Einflusses einer anderen Bearbeitung behindert wird.
  • Nach Maßnahme 1, die in den oben beschriebenen Ausführungsformen eingesetzt wird, wird eine vorbestimmte Anzahl von Abtastwerten von Tondaten für jeden Rahmen zu einigen der nachfolgenden Aktivierungszeiten verspätet gebildet. Dies bedeutet doch nicht notwendigerweise, dass die Bildung der vorbestimmten Zahl von Abtastwerten von Tondaten innerhalb desselben Rahmens abgeschlossen werden muss. Insbesondere können diese Ausführungsformen mehrere Ausgabepuffer mit darin eingeschriebenen Tondaten für die Wiedergabe reservieren, wie es in Fig. 7 gezeigt ist, und somit ist es sogar, wenn die arithmetische Bildung der vorbestimmten Zahl von Tondaten nicht innerhalb eines Rahmens abgeschlossen wird, möglich, die arithmetischen Operationen zum Ausbilden der verbleibenden Tondaten in einem nachfolgenden Rahmen durchzuführen. Während z. B. in dem Beispiel von Fig. 6 Tondaten, die in einem Rahmen aufgrund eines Ausbleibens der Erzeugung eines internen Unterbrechungssignals zu einer oder mehreren Aktivierungszeiten nichtgebildet belassen wurden, durch das Ende der letzten Aktivierungszeit im selben Rahmen gebildet werden, kann die arithmetische Bildung dieser nichtgebildet verbliebenen Tondaten in einen nächsten Rahmen übernommen werden. Z. B. brauchen alle Tondaten, die zu vier Aktivierungszeiten eines Rahmens nichtgebildet belassen wurden, nicht unbedingt zum Ende der zehnten Aktivierungszeit desselben Rahmens gebildet werden; stattdessen können nur die Tondaten, die in den siebten und achten Aktivierungszeiten nichtgebildet belassen wurden, zum Ende der zehnten Aktivierungszeit des Rahmens gebildet werden, und die arithmetischen Bildungsoperationen für die anderen Tondaten, die in den neunten und zehnten Aktivierungszeiten nichtgebildet belassen wurden, können in eine oder mehrere Aktivierungszeiten eines nachfolgenden Rahmens übernommen werden, in dem die Erzeugung des internen Unterbrechungssignals auftritt. In den oben beschriebenen Modifikationen 1 und 2 können die arithmetischen Bildungsoperationen für die Tondaten, die in einem Rahmen nichtgebildet belassen wurden, in einen nächsten Rahmen übernommen werden.
  • Weiter werden nach den oben beschriebenen Ausführungsformen die Steuerparameter zum Steuern des Tongeneratorabschnitts und die Daten, die ein Note-EIN-Ereignis anzeigen, und der Auftrittszeitpunkt des Ereignisses in den Tonregistern gespeichert, die separat für den einzelnen, durch den MIDI-Prozess beaufschlagten Tonerzeugungskanal vorgesehen sind. Anstatt in Tonregister für einzelne beaufschlagte Tonerzeugungskanäle gespeichert zu werden, können diese Steuerparameter und Daten nacheinander in einen Speicherbereich zusammen mit den entsprechenden Kanalnummern der beaufschlagten Kanäle geschrieben werden. In einem solchen Fall werden zuerst Sequenzdaten auf der Grundlage der zugeführten MIDI-Nachrichten erzeugt, und die Tondaten werden auf der Grundlage der Sequenzdaten erzeugt.
  • Auch wird nach den oben beschriebenen Ausführungsformen der von der Ausgabevorrichtung zurückgegebene Ausgabepuffer durch die Tonerzeugungsbearbeitung II mit dem Ende der Ausgabepuffer gekoppelt, die schon vom Tongeneratorabschnitt in Besitz genommen wurden, so dass die Tonerzeugungsbearbeitung 1 Tondaten in die zusammengekoppelten Ausgabepuffer in Reihe von einem Ausgabepuffer zu einem anderen bildet und speichert. Alternativ können Tondaten für jeden der Ausgabepuffer separat gebildet und gespeichert werden.
  • Während die Ausführungsformen oben so beschrieben wurden, dass sie eine Reservierung für die Wiedergabe von den vier Ausgabepuffern vor der Aktivierung des Tongeneratorabschnitts ausführen, kann weiterhin natürlich die Zahl der Ausgabepuffer, die für die Wiedergabe reserviert werden sollen, statt "vier" jeden anderen Werte haben. Auch kann die Zahl der im RAM 5 vorgesehenen Ausgabepuffer größer als die oben erwähnte Zahl der für die Wiedergabe zu reservierenden Ausgabepuffer sein.
  • Während die Ausführungsformen oben so beschrieben wurden, dass sie jede der Maßnahmen 1 bis 4 zusammen ausführen, kann zudem verhindert werden, dass die Tonerzeugung durch eine Verzögerung bei der Aktivierung des Tongeneratorabschnitts sogar dann verhindert wird, wenn jede dieser Maßnahmen unabhängig von den anderen Maßnahmen ausgeführt wird. Nur eine diese Maßnahmen oder eine geeignete Kombination von zwei oder drei dieser Maßnahmen kann ausgeführt werden.
  • Während die vorliegende Erfindung in den beschriebenen Ausführungsformen auf dem Softwaretongenerator angewendet wird, bei dem die CPU programmiert wird, um eine Tonerzeugungsbearbeitung auf der Grundlage des Wellenformspeicherverfahrens auszuführen, kann die vorliegende Erfindung zusätzlich auf einen Softwaretongenerator angewendet werden, bei dem die CPU programmiert wird, um die Tonerzeugungsbearbeitung auf der Grundlage eines anderen geeigneten Verfahrens, wie z. B. des FM-Syntheseverfahrens, auszuführen.
  • Während in den beschriebenen Ausführungsformen die vorliegende Erfindung auf einen Softwaretongenerator angewendet wird, bei dem die CPU eines Personalcomputers zur Ausführung der Tonerzeugungsbearbeitung programmiert wird, kann die vorliegende Erfindung zudem auf einen Softwaretongenerator angewendet werden, bei dem die CPU, die in eine bestimmte Tonerzeugungsvorrichtung geladen wird, zur Ausführung der Tonerzeugungsbearbeitung programmiert wird.
  • Die oben beschriebenen Ausführungsformen erzielen sehr große Vorteile, wie unten dargelegt wird.
  • Nach einer Ausführungsform kann, sogar wenn die Tonerzeugungsbearbeitung zu einigen der Aktivierungszeiten nicht aktiviert wird, die vorbestimmte Anzahl von Abtastwerten von Tondaten verspätet innerhalb der vorbestimmten Zeitperiode durch die Tondaten-Bildungsoperationen gebildet werden, die erst zu den anderen Aktivierungszeiten ausgeführt werden, wenn die Tonerzeugungsbearbeitung tatsächlich aktiviert wird. Nach einer weiteren Ausführungsform kann die neue Tonerzeugungsbearbeitung in dem Kanal sofort vorbereitet werden, wenn sie auf der Grundlage neu zugeführter Spielinformationen einem der Kanäle zugewiesen wird, der noch für die momentane Tonerzeugungsbearbeitung verwendet wird und daher für die neue Tonerzeugungsbearbeitung nicht verfügbar ist.
  • Nach noch einer weiteren Ausführungsform kann eine unerwünschte Unterbrechung in einem Strom von erzeugten Tönen verlässlich mit einem ausgedehnten Toleranzbereich für die Zeitverzögerung bei der Aktivierung der Tonerzeugungsbearbeitung vermieden werden. Nach einer noch weiteren Ausführungsform wird die Tonerzeugungsbearbeitung erneuert, wenn die Wiedergabe von irgendeinem Ausgabepuffer nicht innerhalb einer vorbestimmten Zeitperiode reserviert wird, so dass sogar dann, wenn die Wiedergabereservierung nicht rechtzeitig vollzogen werden kann und eine vorübergehende Störung bei der Tonerzeugung verursacht wird, eine stabile Tonerzeugung umgehend wiederhergestellt und damit ein einhergehendes Rauschen minimiert werden kann. Nach noch einer weiteren Ausführungsform kann eine vorbestimmte Anzahl von Abtastwerten von Tondaten innerhalb der vorbestimmten Zeitperiode nur durch die Tondaten-Bildungsoperationen gebildet werden, welche nur ausgeführt werden, wenn die Tonerzeugungsbearbeitung tatsächlich aktiviert wird, während der Toleranzbereich der Zeitverzögerung bei der Aktivierung der Tonerzeugungsbearbeitung beibehalten wird.
  • Mit den Anordnungen, die in soweit beschrieben wurden, kann die vorliegende Erfindung effektiv eine Behinderung der Tonerzeugung bei solchen Anwendungen verhindern, bei denen die Tonerzeugungsbearbeitung mit einem Betriebssystem ausgeführt wird, welches keine volle Multitaskfunktion aufweist.

Claims (24)

1. Tonerzeugungsvorrichtung, die folgendes aufweist:
eine Zuführeinheit (1, 8, 14, 15) zum Zuführen einer Spielinformation;
eine Speichereinheit (4, 5, 10), um eine Vielzahl von Programmen einschließlich eines Tonerzeugungsprogramms dort zu speichern; und
eine arithmetische Universalrechnereinheit (3), die in der Lage ist, die in der Speichereinheit gespeicherten Programme gleichzeitig parallel auszuführen, wobei die arithmetische Rechnereinheit (3) veranlaßt, dass eine Vielzahl von internen Unterbrechungssignalen innerhalb einer vorgegebenen Zeitperiode erzeugt werden und im Ansprechen auf die internen Unterbrechungssignale das Tonerzeugungsprogramm aktiviert wird, um Wellenformdaten auf der Grundlage der durch die Zuführeinheit zugeführten Spielinformation zu erzeugen;
dadurch gekennzeichnet, dass das durch die arithmetische Rechnereinheit (3) aktivierte Tonerzeugungsprogramm einen Einstellmechanismus zum Einstellen eines Umfangs einer zu erzeugenden Wellenform enthält, so dass eine vorgegebene Anzahl von Abtastwerten von Wellenformdaten kumulativ innerhalb der vorgegebenen Zeitperiode durch Wellenformdaten- Bildungsoperationen gebildet werden, die durch das von der arithmetischen Rechnereinheit (3) aktivierte Tonerzeugungsprogramm ausgeführt werden.
2. Tonerzeugungsvorrichtung nach Anspruch 1, bei der, wenn die vorgegebene Anzahl von Abtastwerten von Wellenformdaten nicht alleine durch die durch das aktivierte Tonerzeugungsprogramm ausgeführten Wellenformdaten- Bildungsoperationen gebildet werden können, der Einstellmechanismus für jeden Tonerzeugungskanal, der durch die Spielinformation zur Tonerzeugung bezeichnet wurde, eine bestimmte Anzahl von Tonerzeugungskanälen, die zur Bildung der Welleformdaten zu verwenden sind, so reduziert, dass eine Bildung der vorgegebenen Anzahl von Abtastwerten von Wellenformdaten gesichert ist.
3. Tonerzeugungsvorrichtung nach Anspruch 1, die außerdem folgendes aufweist:
ein erstes Register, um dort, wenn eine Tonerzeugungsbearbeitung auf der Grundlage der Spielinformation einem unbenutzten Tonerzeugungskanal zugewiesen ist, einen Parameter zur Steuerung der Tonerzeugungsbearbeitung zu speichern; und
ein zweites Register, um dort, wenn eine neue Tonerzeugungsbearbeitung auf der Grundlage einer anderen Spielinformation dem Tonerzeugungskanal zugewiesen ist, während der Kanal nicht für die neue Tonerzeugungsbearbeitung verfügbar ist, einen Parameter zur Steuerung der neuen Tonerzeugungsbearbeitung zu speichern, und
wobei das durch die arithmetische Rechnereinheit (3) aktivierte Tonerzeugungsprogramm außerdem einen Auswählmechanismus enthält, zum Auswählen des ersten Registers vor einem vorgegebenen Zeitpunkt, um die neue Tonerzeugungsbearbeitung zu starten, und zum Auswählen des zweiten Registers nach dem vorgegebenen Zeitpunkt, und
wobei eine Erzeugung von Wellenformdaten in dem Tonerzeugungskanal durchgeführt wird, wobei ein ausgewähltes der ersten und zweiten Register verwendet wird.
4. Tonerzeugungsvorrichtung nach Anspruch 1, die außerdem folgendes aufweist:
eine Vielzahl von Ausgabepuffern (5) zum Einschreiben von Wellenformdaten darin; und
eine Wiedergabeeinheit (11) zum sequentiellen Wiedergeben der Wellenformdaten von einem der Ausgabepuffer, der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde, und
wobei das durch die arithmetische Rechnereinheit (3) aktivierte Tonerzeugungsprogramm einen Programmkodemechanismus enthält, um einen Tonerzeugungsprozeß zur Erzeugung von Wellenformdaten auf der Grundlage der Spielinformation vor einer Wiedergabezeit der Wiedergabeeinheit (11), einen Schreibprozeß zum Einschreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer (5), der nicht reserviert ist, und einen Reservierungsprozeß zur Reservierung des anderen Ausgabepuffers zu implementieren, der die Wellenformdaten zur nachfolgenden Wellenformdatenwiedergabe durch die Wiedergabeeinheit (11) dort eingeschrieben hat, und
wobei der Tonerzeugungsprozeß die Spielinformation von der Zuführeinheit zu einem Zeitpunkt empfängt, der dem Wiedergabezeitpunkt um eine Zeit vorangeht, die der Gesamtkapazität der Ausgabepuffer entspricht, und zwei oder mehrere der Ausgabepuffer durch den Reservierungsprozeß simultan reserviert werden können.
5. Tonerzeugungsvorrichtung nach Anspruch 1, die außerdem folgendes aufweist:
eine Vielzahl von Ausgabepuffern (5) zum Einschreiben von Wellenformdaten, und
eine Wiedergabeeinheit (11) zum sequentiellen Wiedergeben der Wellenformdaten, die in einem der Ausgabepuffer gespeichert sind, der zu nachfolgenden Wellenformdatenwiedergabe reserviert wurde, und
wobei das durch die arithmetische Rechnereinheit (3) aktivierte Tonerzeugungsprogramm einen Programmkodemechanismus enthält, um einen Tonerzeugungsprozeß zur Erzeugung von Wellenformdaten auf der Grundlage der Spielinformation, die durch die Zuführeinheit vor einer Wiedergabezeit der Wiedergabeeinheit zugeführt wird, einen Schreibprozeß zum Einschreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht reserviert wurde, und einen Reservierungsprozeß zur Reservierung des anderen Ausgabepuffers zu implementieren, der die Wellenformdaten zur nachfolgenden Wellenformdatenwiedergabe durch die Wiedergabeeinheit dort eingeschrieben hat, und
wobei der Tonerzeugungsprozeß in der Lage ist, Wellenformdaten zum Einschreiben in zwei oder mehrere Ausgabepuffer früher zu erzeugen, und auf der Grundlage einer bestimmten Anzahl von Abtastwerten von Wellenformdaten, die zum Zeitpunkt einer Aktivierung des Tonerzeugungsprozesses früher erzeugbar waren, eine Gesamtzahl der Abtastwerte der zu erzeugenden Wellenformdaten bestimmt.
6. Tonerzeugungsvorrichtung nach Anspruch 5, bei der auf der Gundlage der bestimmten Anzahl von früher erzeugbaren Abtastwerten von Wellenformdaten der Tonerzeugungsprozeß die gesamte Anzahl von Abtastwerten von Wellenformendaten bestimmt, die in einem Bereich zu erzeugen sind, der eine vorgegebene obere Grenze nicht überschreitet.
7. Tonerzeugungsvorrichtung nach Anspruch 1, bei der die arithmetische Universalrechnereinheit (3) veranlaßt, dass die Vielzahl interner Unterbrechungssignale auf nichtperiodische Art erzeugt werden, und
bei der das durch die arithmetische Rechnereinheit (3) aktivierte Tonerzeugungsprogramm folgendes aufweist:
einen ersten Mechanismus zum variablen Anweisen, dass eine bestimmte Anzahl von Tonwellenformabtastwerten durch Aktivierung des Tonerzeugungsprogramms erzeugt werden; und
einen zweiten Mechanismus zur Erzeugung der bestimmten Anzahl von Tonwellenformabtastwerten, die durch den ersten Mechanismus durch Aktivierung des Tonerzeugunsgprogramms variabel angewiesen wurden.
8. Tonerzeugungsvorrichtung nach Anspruch 1, die außerdem folgendes aufweist:
eine Puffereinheit (5) zum temporären Speichern von Daten von Tonwellenformen; und
eine Wiedergabeeinheit (11) zur Wiedergabe von Tonwellenformen durch sequentielles Auslesen der gespeicherten Daten aus der Puffereinheit, und
wobei die arithmetische Universalrechnereinheit (3) veranlaßt, dass die Vielzahl von internen Unterbrechungssignalen auf eine nichtperiodische Weise erzeugt werden,
wobei die Spielinformation durch die Zuführeinheit vor einem Wiedergabezeitpunkt der Wiedergabeeinheit zugeführt wird, und
wobei das durch die arithmetische Rechnereinheit (3) aktivierte Tonerzeugungsprogramm folgendes aufweist:
einen ersten Mechnismus zum Bestimmen einer Zielanzahl von Tonwellenformabtastwerten, die zu einem Zeitpunkt einer aktuellen Aktivierung des Tonerzeugungsprogramms erzeugbar sind; und
einen zweiten Mechanismus zum Erzeugen einer bestimmten Anzahl von Tonwellenformabtastwerten im Ansprechen auf die aktuelle Aktivierung des Tonerzeugungsprogramms, wobei die bestimmte Anzahl derart bestimmt wird, dass die bestimmte Anzahl der Zielanzahl folgt und die durch den zweiten Schritt erzeugten Tonwellenformabtastwerte in der Puffereinheit temporär gespeichert werden.
9. Tonerzeugungsverfahren, das eine arithmetische Universalrechnereinheit (3) zum Erzeugen eines Tons auf der Grundlage einer Spielinformation mittels Durchführen eines Programms aus einer Vielzahl von gleichzeitig ausführbaren Programmen veranlaßt, wobei das Verfahren folgendes aufweist:
einen ersten Schritt des Erzeugens interner Unterbrechungssignale, um eine Tonerzeugungsbearbeitung mehrfach in einer vorgegebenen Zeitperiode zu aktivieren; und
einen zweiten Schritt des Aktivierens der Tonerzeugungsbearbeitung, im Ansprechen auf die internen Unterbrechungssignale, um Wellenformdaten auf der Grundlage der Spielinformation zu erzeugen;
dadurch gekennzeichnet, dass das Verfahren außerden folgendes aufweist:
einen dritten Schritt des Bestimmens eines Umfangs einer durch die Tonerzeugungsbearbeitung zu erzeugenden Tonwellenform in einer solchen Weise, dass eine vorgegebene Anzahl von Abtastwerten von Wellenformdaten kumulativ in einer vorgegebenen Zeitperiode durch Wellenformdaten- Bildungsoperationen gebildet werden kann, die durch die im Ansprechen auf die internen Unterbrechungssignale aktivierte Tonerzeugungsbearbeitung ausgeführt werden, und
wobei Wellenformdaten, die dem durch den dritten Schritt bestimmten Umfang einer Tonwellenform entsprechen, erzeugt werden, wenn der zweite Schritt die Tonerzeugungsbearbeitung im Ansprechen auf die internen Unterbrechungssignale aktiviert.
10. Tonerzeugungsverfahren nach Anspruch 9, bei dem, wenn die vorgegebene Anzahl von Abtastwerten von Wellenformdaten nicht alleine durch die durch die aktivierte Tonerzeugungsbearbeitung ausgeführten Wellenformdaten- Bildungsoperationen gebildet werden können, der dritte Schritt für jeden der Tonerzeugungsbearbeitung zugewiesenen Tonerzeugungskanal eine bestimmte Anzahl der Tonerzeugungskanäle, die für die Bildung der Wellenformdaten zu verwenden sind, so reduziert, dass eine Bildung der vorgegebenen Anzahl von Abtastwerten von Wellenformdaten sichergestellt ist.
11. Tonerzeugungsverfahren nach Anspruch 9, das außerdem die folgende Schritte aufweist:
Zuweisen einer Tonerzeugungsbearbeitung zu einem unbenutzten Tonerzeugungskanal und Speichern eines Parameters zur Steuerung der Tonerzeugungsbearbeitung in ein erstes Register;
Zuweisen einer neuen Tonerzeugungsbearbeitung zu einem Tonerzeugungskanal, während der Kanal für die neue Tonerzeugungsbearbeitung nicht verfügbar ist, Speichern eines Parameters zur Steuerung der neuen Tonerzeugungsbearbeitung in ein zweites Register; und
Auswählen des ersten Registers vor einem vorgegebenen Zeitpunkt, um die neue Tonerzeugungsbearbeitung zu starten, und Auswählen des zweiten Registers nach dem vorgegebenen Zeitpunkt, und
wobei eine Erzeugung von Wellenformdaten in dem Tonerzeugungskanal unter Verwendung eines ausgewählten der ersten und zweiten Register durchgeführt wird.
12. Tonerzeugungsverfahren nach Anspruch 9, das zudem folgendes aufweist:
einen Wiedergabeschritt zum sequentiellen Wiedergeben von Wellenformdaten aus einem bestimmten von einer Vielzahl von Ausgabepuffern (5), der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde, und
wobei die durch den zweiten Schritt aktivierte Tonerzeugungsbearbeitung die folgenden Schritte aufweist:
im Ansprechen auf die internen Unterbrechungssignale, Erzeugen von Wellenformdaten auf der Grundlage der Spielinformation, die vor dem Wiedergabezeitpunkt des Wiedergabeschritts zugeführt wurde;
Schreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht der bestimmte Ausgabepuffer ist; und
Reservieren dieses anderen Ausgabepuffers (5) für die nachfolgende Wellenformdatenwiedergabe durch den Wiedergabeschritt, und
wobei der Erzeugungsschritt die Spielinformation zu einem Zeitpunkt empfängt, der dem Wiedergabezeitpunkt um eine Zeit vorangeht, die einer Gesamtkapazität der Ausgabepuffer entspricht, und zwei oder mehrere der Ausgabepuffer simultan reserviert werden können.
13. Tonerzeugungsverfahren nach Anspruch 9, das zudem folgendes aufweist:
einen Wiedergabeschritt zum sequentiellen Wiedergeben von Wellenformdaten aus einem bestimmten von einer Vielzahl von Ausgabepuffern (5), der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde, und
wobei die durch den zweiten Schritt aktivierte Tonerzeugungsbearbeitung die folgenden Schritte aufweist:
im Ansprechen auf die internen Unterbrechungssignale, Erzeugen von Wellenformdaten auf der Grundlage der Spielinformation, die vor dem Wiedergabezeitpunkt des Wiedergabeschritts zugeführt wurde;
Schreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht der bestimmte Ausgabepuffer ist; und
Reservieren dieses anderen Ausgabepuffers für die nachfolgende Wellenformdatenwiedergabe durch den Wiedergabeschritt, und
wobei der Erzeugungsschritt in der Lage ist, Wellenformdaten zum Einschreiben in zwei oder mehrere der Ausgabepuffer früher zu erzeugen, und auf der Grundlage einer bestimmten Anzahl von Abtastwerten von Wellenformdaten, die zum Zeitpunkt einer Aktivierung der Tonerzeugungsbearbeitung früher erzeugbar sind, eine Gesamtzahl von Abtastwerten von zu erzeugenden Wellenformdaten ermittelt.
14. Tonerzeugungsverfahren nach Anspruch 13, bei dem auf der Grundlage der bestimmten Anzahl von früher erzeugbaren Abtastwerten von Wellenformdaten der Erzeugungsschritt die gesamte Anzahl von Abtastwerten von Wellenformdaten bestimmt, die in einem Bereich zu erzeugen sind, der eine vorgegebene obere Grenze nicht überschreitet.
15. Tonerzeugungsverfahren nach Anspruch 9, bei dem der erste Schritt die Tonerzeugungsbearbeitung auf nichtperiodische Art aktiviert,
wobei der dritte Schritt einen Schritt zum variablen Anweisen aufweist, eine bestimmte Anzahl von Tonwellenformabtastwerten durch die durch den ersten Schritt aktivierte Tonerzeugungsbearbeitung zu erzeugen, und
wobei der zweite Schritt einen Schritt aufweist, die arithmetische Universalrechnereinheit (3) zur Durchführung der in dem ersten Schritt aktivierten Tonerzeugungsbearbeitung zu veranlassen, um die bestimmte Anzahl von Tonwellenformabtastwerte zu erzeugen, die durch den Anweisungsschritt angewiesen wurden.
16. Tonerzeugungsverfahren nach Anspruch 9, bei dem der erste Schritt die Tonerzeugungsbearbeitung auf nichtperiodische Art aktiviert,
wobei der dritte Schritt, wenn der erste Schritt die Tonerzeugungsbearbeitung aktiviert, einen Schritt zur Bestimmung einer Zielanzahl von Tonwellenformabtastwerten, die zu einem Zeitpunkt einer aktuellen Aktivierung durch den ersten Schritt erzeugbar sind, und einen Schritt zur Bestimmung einer bestimmten Anzahl von Tonwellenformabtastwerten aufweist, die im Ansprechen auf die aktuelle Aktivierung so zu erzeugen sind, dass die bestimmte Anzahl der Zielanzahl folgt, und
wobei der zweite Schritt einen Schritt aufweist, die arithmetische Universalrechnereinheit (3) zur Durchführung der Tonerzeugungsbearbeitung zu veranlassen, die in dem ersten Schritt aktiviert wurde, um die bestimmte Anzahl von Tonwellenformabtastwerten im Ansprechen auf die aktuelle Aktivierung zu erzeugen.
17. Maschinenlesbares Speichermedium, das eine Gruppe von Instruktionen enthält, um zu bewirken, dass diese Maschine ein Verfahren implementiert, das eine arithmetische Universalrechnereinheit (3) zum Erzeugen eines Tons auf der Grundlage einer Spielinformation mittels Durchführen eines Programms aus einer Vielzahl von gleichzeitig ausführbaren Programmen veranlaßt, wobei das Verfahren folgendes aufweist:
einen ersten Schritt des Erzeugens interner Unterbrechungssignale, um eine Tonerzeugungsbearbeitung mehrfach in einer vorgegebenen Zeitperiode zu aktivieren; und
einen zweiten Schritt des Aktivierens der Tonerzeugungsbearbeitung, im Ansprechen auf die internen Unterbrechungssignale, um Wellenformdaten auf der Grundlage der Spielinformation zu erzeugen;
dadurch gekennzeichnet, dass das Verfahren außerden folgendes aufweist:
einen dritten Schritt des Bestimmens eines Umfangs einer durch die Tonerzeugungsbearbeitung zu erzeugenden Tonwellenform in einer solchen Weise, dass eine vorgegebene Anzahl von Abtastwerten von Wellenformdaten kumulativ in einer vorgegebenen Zeitperiode durch Wellenformdaten- Bildungsoperationen gebildet werden kann, die durch die im Ansprechen auf die internen Unterbrechungssignale aktivierte Tonerzeugungsbearbeitung ausgeführt werden, und
wobei Wellenformdaten, die dem durch den dritten Schritt bestimmten Umfang einer Tonwellenform entsprechen, erzeugt werden, wenn der zweite Schritt die Tonerzeugungsbearbeitung im Ansprechen auf die internen Unterbrechungssignale aktiviert.
18. Maschinenlesbares Speichermedium nach Anspruch 17, bei dem, wenn die vorgegebene Anzahl von Abtastwerten von Wellenformdaten nicht alleine durch die durch die aktivierte Tonerzeugungsbearbeitung ausgeführten Wellenformdaten-Bildungsoperationen gebildet werden können, der dritte Schritt für jeden der Tonerzeugungsbearbeitung zugewiesenen Tonerzeugungskanal eine bestimmte Anzahl der Tonerzeugungskanäle, die für die Bildung der Wellenformdaten zu verwenden sind, so reduziert, dass eine Bildung der vorgegebenen Anzahl von Abtastwerten von Wellenformdaten sichergestellt ist.
19. Maschinenlesbares Speichermedium nach Anspruch 17, das außerdem die folgende Schritte aufweist:
Zuweisen einer Tonerzeugungsbearbeitung zu einem unbenutzten Tonerzeugungskanal und Speichern eines Parameters zur Steuerung der Tonerzeugungsbearbeitung in ein erstes Register;
Zuweisen einer neuen Tonerzeugungsbearbeitung zu einem Tonerzeugungskanal, während der Kanal für die neue Tonerzeugungsbearbeitung nicht verfügbar ist, Speichern eines Parameters zur Steuerung der neuen Tonerzeugungsbearbeitung in ein zweites Register; und
Auswählen des ersten Registers vor einem vorgegebenen Zeitpunkt, um die neue Tonerzeugungsbearbeitung zu starten, und Auswählen des zweiten Registers nach dem vorgegebenen Zeitpunkt, und
wobei eine Erzeugung von Wellenformdaten in dem Tonerzeugungskanal unter Verwendung eines ausgewählten der ersten und zweiten Register durchgeführt wird.
20. Maschinenlesbares Speichermedium nach Anspruch 17, das zudem folgendes aufweist:
einen Wiedergabeschritt zum sequentiellen Wiedergeben von Wellenformdaten aus einem bestimmten von einer Vielzahl von Ausgabepuffern (5), der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde, und
wobei die durch den zweiten Schritt aktivierte Tonerzeugungsbearbeitung die folgenden Schritte aufweist:
im Ansprechen auf die internen Unterbrechungssignale, Erzeugen von Wellenformdaten auf der Grundlage der Spielinformation, die vor dem Wiedergabezeitpunkt des Wiedergabeschritts zugeführt wurde;
Schreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht der bestimmte Ausgabepuffer ist; und
Reservieren dieses anderen Ausgabepuffers (5) für die nachfolgende Wellenformdatenwiedergabe durch den Wiedergabeschritt, und
wobei der Erzeugungsschritt die Spielinformation zu einem Zeitpunkt empfängt, der dem Wiedergabezeitpunkt um eine Zeit vorangeht, die einer Gesamtkapazität der Ausgabepuffer entspricht, und zwei oder mehrere der Ausgabepuffer simultan reserviert werden können.
21. Maschinenlesbares Speichermedium nach Anspruch 17, das zudem folgendes aufweist:
einen Wiedergabeschritt zum sequentiellen Wiedergeben von Wellenformdaten aus einem bestimmten von einer Vielzahl von Ausgabepuffern (5), der zur nachfolgenden Wellenformdatenwiedergabe reserviert wurde, und
wobei die durch den zweiten Schritt aktivierte Tonerzeugungsbearbeitung die folgenden Schritte aufweist:
im Ansprechen auf die internen Unterbrechungssignale, Erzeugen von Wellenformdaten auf der Grundlage der Spielinformation, die vor dem Wiedergabezeitpunkt des Wiedergabeschritts zugeführt wurde;
Schreiben der erzeugten Wellenformdaten in einen anderen der Ausgabepuffer, der nicht der bestimmte Ausgabepuffer ist; und
Reservieren dieses anderen Ausgabepuffers für die nachfolgende Wellenformdatenwiedergabe durch den Wiedergabeschritt, und
wobei der Erzeugungsschritt in der Lage ist, Wellenformdaten zum Einschreiben in zwei oder mehrere der Ausgabepuffer früher zu erzeugen, und auf der Grundlage einer bestimmten Anzahl von Abtastwerten von Wellenformdaten, die zum Zeitpunkt einer Aktivierung der Tonerzeugungsbearbeitung früher erzeugbar sind, eine Gesamtzahl von Abtastwerten von zu erzeugenden Wellenformdaten ermittelt.
22. Maschinenlesbares Speichermedium nach Anspruch 21, bei dem auf der Grundlage der bestimmten Anzahl von früher erzeugbaren Abtastwerten von Wellenformdaten der Erzeugungsschritt die gesamte Anzahl von Abtastwerten von Wellenformdaten bestimmt, die in einem Bereich zu erzeugen sind, der eine vorgegebene obere Grenze nicht überschreitet.
23. Maschinenlesbares Speichermedium nach Anspruch 17, bei dem der erste Schritt die Tonerzeugungsbearbeitung auf nichtperiodische Art aktiviert,
wobei der dritte Schritt einen Schritt zum variablen Anweisen aufweist, eine bestimmte Anzahl von Tonwellenformabtastwerten durch die durch den ersten Schritt aktivierte Tonerzeugungsbearbeitung zu erzeugen, und
wobei der zweite Schritt einen Schritt aufweist, die arithmetische Universalrechnereinheit (3) zur Durchführung der in dem ersten Schritt aktivierten Tonerzeugungsbearbeitung zu veranlassen, um die bestimmte Anzahl von Tonwellenformabtastwerte zu erzeugen, die durch den Anweisungsschritt angewiesen wurden.
24. Maschinenlesbares Speichermedium nach Anspruch 17, bei dem der erste Schritt die Tonerzeugungsbearbeitung auf nichtperiodische Art aktiviert,
wobei der dritte Schritt, wenn der erste Schritt die Tonerzeugungsbearbeitung aktiviert, einen Schritt zur Bestimmung einer Zielanzahl von Tonwellenformabtastwerten, die zu einem Zeitpunkt einer aktuellen Aktivierung durch den ersten Schritt erzeugbar sind, und einen Schritt zur Bestimmung einer bestimmten Anzahl von Tonwellenformabtastwerten aufweist, die im Ansprechen auf die aktuelle Aktivierung so zu erzeugen sind, dass die bestimmte Anzahl der Zielanzahl folgt, und
wobei der zweite Schritt einen Schritt aufweist, die arithmetische Universalrechnereinheit (3) zur Durchführung der Tonerzeugungsbearbeitung zu veranlassen, die in dem ersten Schritt aktiviert wurde, um die bestimmte Anzahl von Tonwellenformabtastwerten im Ansprechen auf die aktuelle Aktivierung zu erzeugen.
DE69618907T 1995-11-22 1996-11-18 Verfahren und Vorrichtung zur Tonerzeugung Expired - Lifetime DE69618907T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP32842895 1995-11-22
JP8024747A JP2962217B2 (ja) 1995-11-22 1996-01-17 楽音生成装置及び方法

Publications (2)

Publication Number Publication Date
DE69618907D1 DE69618907D1 (de) 2002-03-14
DE69618907T2 true DE69618907T2 (de) 2003-01-16

Family

ID=26362322

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69618907T Expired - Lifetime DE69618907T2 (de) 1995-11-22 1996-11-18 Verfahren und Vorrichtung zur Tonerzeugung
DE69625942T Expired - Lifetime DE69625942T2 (de) 1995-11-22 1996-11-18 Verfahren und Vorrichtung zur Tonerzeugung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69625942T Expired - Lifetime DE69625942T2 (de) 1995-11-22 1996-11-18 Verfahren und Vorrichtung zur Tonerzeugung

Country Status (6)

Country Link
US (2) US6284963B1 (de)
EP (2) EP0775996B1 (de)
JP (1) JP2962217B2 (de)
KR (1) KR100302626B1 (de)
DE (2) DE69618907T2 (de)
SG (1) SG43444A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3409686B2 (ja) 1998-03-17 2003-05-26 ヤマハ株式会社 複数音源ドライバの制御方法、および、複数音源ドライバの制御用プログラムが記録された記録媒体、ならびに、複数生成プログラムの制御方法
JP3781171B2 (ja) 2000-06-22 2006-05-31 ヤマハ株式会社 楽音発生方法
KR100636906B1 (ko) * 2004-03-22 2006-10-19 엘지전자 주식회사 미디 재생 장치 그 방법
JP2006030517A (ja) * 2004-07-15 2006-02-02 Yamaha Corp 発音割当装置
JP4778872B2 (ja) * 2005-10-20 2011-09-21 パナソニック株式会社 楽音出力装置
US7678986B2 (en) * 2007-03-22 2010-03-16 Qualcomm Incorporated Musical instrument digital interface hardware instructions
US7663051B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Audio processing hardware elements
US8383924B2 (en) * 2010-03-10 2013-02-26 Yamaha Corporation Musical tone signal generating apparatus

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3778401D1 (de) * 1986-01-31 1992-05-27 Casio Computer Co Ltd Wellenformerzeuger fuer ein elektronisches musikinstrument.
US5007323A (en) * 1987-08-07 1991-04-16 Casio Computer Co., Ltd. Polyphonic electronic musical instrument
US5319151A (en) 1988-12-29 1994-06-07 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data in a certain interval
JPH02254496A (ja) 1989-03-29 1990-10-15 Yamaha Corp 楽音発生装置
JP2576647B2 (ja) * 1989-11-30 1997-01-29 ヤマハ株式会社 波形発生装置
JP2545297B2 (ja) 1990-07-18 1996-10-16 株式会社河合楽器製作所 電子楽器のパラメータ設定装置
US5522010A (en) * 1991-03-26 1996-05-28 Pioneer Electronic Corporation Pitch control apparatus for setting coefficients for cross-fading operation in accordance with intervals between write address and a number of read addresses in a sampling cycle
US5283386A (en) * 1991-08-30 1994-02-01 Casio Computer Co., Ltd. Musical-tone signal generating apparatus and musical-tone controlling apparatus including delay means and automatic reset means
JP2722907B2 (ja) * 1991-12-13 1998-03-09 ヤマハ株式会社 波形発生装置
US5345035A (en) 1992-07-10 1994-09-06 Yamaha Corporation Musical tone generating apparatus
JP2755051B2 (ja) 1992-07-10 1998-05-20 ヤマハ株式会社 楽音発生装置
JPH06195075A (ja) 1992-12-24 1994-07-15 Kawai Musical Instr Mfg Co Ltd 楽音発生装置
US5376752A (en) * 1993-02-10 1994-12-27 Korg, Inc. Open architecture music synthesizer with dynamic voice allocation
US5596159A (en) * 1995-11-22 1997-01-21 Invision Interactive, Inc. Software sound synthesis system

Also Published As

Publication number Publication date
US6284963B1 (en) 2001-09-04
KR970029320A (ko) 1997-06-26
US20010023634A1 (en) 2001-09-27
EP1069550A1 (de) 2001-01-17
DE69625942D1 (de) 2003-02-27
KR100302626B1 (ko) 2001-11-22
DE69618907D1 (de) 2002-03-14
US6353171B2 (en) 2002-03-05
EP0775996B1 (de) 2002-01-30
EP0775996A1 (de) 1997-05-28
EP1069550B1 (de) 2003-01-22
JPH09204177A (ja) 1997-08-05
DE69625942T2 (de) 2003-11-27
SG43444A1 (en) 1997-10-17
JP2962217B2 (ja) 1999-10-12

Similar Documents

Publication Publication Date Title
DE69711518T2 (de) Auf Software basierendes Tonquellensystem und Verfahren zur Erzeugung von akustischen Wellenformdaten
DE69619587T2 (de) Verfahren und Vorrichtung zur Tonerzeugung
DE69804518T2 (de) Vorrichtung und Verfahren zur Erzeugung von Tönen durch Zeitstrecken- und Kompressionstechnik
DE2362050C3 (de) Elektronisches Musikinstrument
DE3856103T2 (de) Vorrichtung zur Erzeugung von Tonsignalen
DE3936693C2 (de) Vorrichtung zum Erzeugen digitaler Audiosignale
DE3177313T2 (de) Elektronisches Musikinstrument
DE3786654T2 (de) Tonsignal-Erzeugungsvorrichtung mit einer digitalen Ton-Speicher-Funktion.
DE3689928T2 (de) Effektvorrichtung für elektronisches Musikinstrument.
DE69618535T2 (de) Verfahren zur Tonerzeugung durch Hardware- und Softwarequellen
DE102007049662A1 (de) Musikklanggenerator
EP0042555B1 (de) Verfahren zur digitalen Hüllkurvensteuerung eines polyphonen Musiksyntheseinstruments und Schaltungsanordnung zur Durchführung des Verfahrens
DE69613950T2 (de) Verfahren und Vorrichtung zur Tonerzeugung
EP0126962A2 (de) Elektronisches Tastenmusikinstrument und Verfahren zu dessen Betrieb
DE69623866T2 (de) Verfahren und Vorrichtung zur Bildung einer Tonwellenform durch kombinierte Verwendung von verschiedenen Auflösungen der Abtastwerte der Wellenformen
DE3003385A1 (de) Elektronisches musikinstrument
DE2920298A1 (de) Binaere interpolatorschaltung fuer ein elektronisches musikinstrument
DE69517896T2 (de) Elektronisches Musikinstrument und Vorrichtung zum Hinzufügen von Klangeffekten zum Tonsignal
DE69618907T2 (de) Verfahren und Vorrichtung zur Tonerzeugung
DE69611874T2 (de) Verfahren und Vorrichtung zur Musiktonerzeugung
DE2828919C2 (de) Schaltungsanordnung für ein polyphones elektronisches Musikinstrument
DE69705434T2 (de) Tonerzeugungssystem unter Verwendung eines Computerprogrammes
DE69625625T2 (de) Verfahren und Vorrichtung zur auf Software basierten Tonwellenformerzeugung
DE60033098T2 (de) Verfahren und Vorrichtung zur Aufnahme/Wiedergabe oder Erzeugung von Wellenformen mittels Zeitlageinformation
DE69921048T2 (de) Vorrichtung zum automatischen Vortrag mit veränderlichen Arpeggiothema

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: KEHL & ETTMAYR, PATENTANWAELTE, 81679 MUENCHEN