DE69705434T2 - Tonerzeugungssystem unter Verwendung eines Computerprogrammes - Google Patents
Tonerzeugungssystem unter Verwendung eines ComputerprogrammesInfo
- Publication number
- DE69705434T2 DE69705434T2 DE69705434T DE69705434T DE69705434T2 DE 69705434 T2 DE69705434 T2 DE 69705434T2 DE 69705434 T DE69705434 T DE 69705434T DE 69705434 T DE69705434 T DE 69705434T DE 69705434 T2 DE69705434 T2 DE 69705434T2
- Authority
- DE
- Germany
- Prior art keywords
- waveform data
- interface
- generated
- tone generator
- operating system
- 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
Links
- 238000004590 computer program Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims description 211
- 238000000034 method Methods 0.000 claims description 104
- 230000004913 activation Effects 0.000 claims description 99
- 230000008569 process Effects 0.000 claims description 60
- 230000004044 response Effects 0.000 claims description 42
- 238000002156 mixing Methods 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 239000000872 buffer Substances 0.000 description 167
- 101710154918 Trigger factor Proteins 0.000 description 28
- 238000010586 diagram Methods 0.000 description 18
- RRLHMJHRFMHVNM-BQVXCWBNSA-N [(2s,3r,6r)-6-[5-[5-hydroxy-3-(4-hydroxyphenyl)-4-oxochromen-7-yl]oxypentoxy]-2-methyl-3,6-dihydro-2h-pyran-3-yl] acetate Chemical compound C1=C[C@@H](OC(C)=O)[C@H](C)O[C@H]1OCCCCCOC1=CC(O)=C2C(=O)C(C=3C=CC(O)=CC=3)=COC2=C1 RRLHMJHRFMHVNM-BQVXCWBNSA-N 0.000 description 15
- 101710085807 Trigger factor 1 Proteins 0.000 description 12
- 230000003111 delayed effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 101710085808 Trigger factor 2 Proteins 0.000 description 10
- 230000003213 activating effect Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000005070 sampling Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 102100021277 Beta-secretase 2 Human genes 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000001308 synthesis method Methods 0.000 description 2
- 102100021257 Beta-secretase 1 Human genes 0.000 description 1
- 101710150192 Beta-secretase 1 Proteins 0.000 description 1
- 102100022404 E3 ubiquitin-protein ligase Midline-1 Human genes 0.000 description 1
- 101000680670 Homo sapiens E3 ubiquitin-protein ligase Midline-1 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/16—Sound input; Sound output
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H1/00—Details of electrophonic musical instruments
- G10H1/0033—Recording/reproducing or transmission of music for electrophonic musical instruments
- G10H1/0041—Recording/reproducing or transmission of music for electrophonic musical instruments in coded form
- G10H1/0058—Transmission between separate instruments or between individual components of a musical system
- G10H1/0066—Transmission between separate instruments or between individual components of a musical system using a MIDI interface
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/002—Instruments 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
- G10H7/006—Instruments 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 using two or more algorithms of different types to generate tones, e.g. according to tone color or to processor workload
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- General Physics & Mathematics (AREA)
- Electrophonic Musical Instruments (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf ein Tongeneratorsystem, das Ton- oder Klangwellenformdaten durch Ausführen eines Klangwellenformdatenerzeugungsprogramms unter Verwendung eines Allzweck-Arithmetik-Prozessors wie zum Beispiel einer CPU oder eines Computers erzeugt.
- In vielen elektronischen Musikinstrumenten werden heutzutage Mikroprozessoren zum Durchführen von Tonerzeugungsverarbeitung verwendet. In manchen Fällen führt der Mikroprozessor sogar eine solche Verarbeitung durch, um den durch die Tonerzeugungsverarbeitung erzeugten Tonwellenformabtastungsdaten Effekte aufzuerlegen. Es ist schon seit langem üblich, solche Mikroprozessoren in dedizierter Hardware (zum Beispiel LSI- oder DSP-Tongeneratoren) mit einer Schaltungsstruktur zu implementieren, die auf einem bestimmten verwendeten Tonerzeugungsverfahren basiert (zum Beispiel Wellenformspeicher oder FM-Syntheseverfahren).
- Dank der neuren Entwicklung der Rechenleistung von CPUs gibt es jedoch inzwischen elektronische Musikinstrumente, bei denen die in einem Allzweckcomputer oder in einem dedizierten Tongeneratorgerät integrierte CPU so konstruiert ist, dass sie ein Programm ausführt, das vorbestimmte Schritte der Tonerzeugungsverarbeitung beschreibt. Das Tonerzeugungsgerät oder das auf einem Tonverarbeitungsprogramm basierende Verfahren wird hier als "Software-Tongenerator" bezeichnet, während das herkömmliche Tonerzeugungsgerät oder ein Verfahren, bei dem dedizierte Hardware eingesetzt wird, als "Hardware-Tongenerator" bezeichnet wird.
- Die herkömmlichen Software-Tongeneratoren sind als Anwendungssoftware ausgelegt. Fig. 22 zeigt eine Beispielkonfiguration von zum Implementieren eines solchen Anwendungssoftware-Tongenerators verwendeter Software. Zum Minimieren der Komplexität des Programms ist diese Software hierarchisch so organisiert, dass sie aus mehreren Minimaleinheiten (Modulen) zusammen gesetzt ist, die unabhängig voneinander programmiert werden können. Insbesondere sind Programme auf der höchsten Ebene der Hierarchie Module zum Erzeugen von MIDI-Nachrichten, die in der Form von Anwendungssoftware vorliegen, wie zum Beispiel Sequenzer- Software, Spiele-Software oder Karaoke-Software.
- Bei der gezeigten Ausführungsform von Fig. 22 sind zwei Formen der Anwendungssoftware vorgesehen, von denen eine in einem Karaokegerät installierte Karaoke-Software und die andere in einem MIDI-Abspielgerät installierte MIDI- Reproduktionssoftware ist. In dem MIDI-Abspielgerät sind Dateien einer Vielzahl von Karaoke-Musikstücken im MIDI-Format abgespeichert, und das Gerät liest eine der Dateien für ein ausgewähltes Musikstück aus, so dass Spielinformation des ausgewählten Musikstücks im MIDI-Nachrichtenformat ausgegeben wird. Ein Software- Tongeneratormodul ist auf einer der Karaoke-Software folgenden Ebene vorgesehen und weist auf seiner Eingangsseite eine vorbestimmte Anwendungs- Programmierschnittstelle ("API") für einen Software-Tongenerator auf. Beim Beispiel von Fig. 22 ist die Anwendungs-Programmierschnittstelle (API) für den Software- Tongenerator als "SGM MIDI out API" bezeichnet.
- Das Software-Tongeneratormodul umfasst ein Programm zum Bilden von Tonwellenformdaten auf der Grundlage einer MIDI-Nachricht, die über eine dedizierte Software-Tongenerator-API, wie zum Beispiel die Schnittstelle "SGM MIDI out API" geliefert wird. Wie in Fig. 23 gezeigt, weist das Software-Tongeneratormodul einen MIDI-Ausgabetreiberabschnitt sowie einen Tongenerator-(oder Maschinen-) Abschnitt auf. Der MIDI-Ausgabetreiberabschnitt ist ein Modul zum Treiben des Tongeneratorabschnitts, das zum Umwandeln von Stimmdaten in Steuerparameter zum Steuern des Tongeneratorabschnitts auf die MIDI-Nachricht reagiert. Die Steuerparameter werden über vorbestimmte (nicht dargestellte) Zwischenmodulschnittstellen an den Tongeneratorabschnitt gesendet. Beim Initialisieren des MIDI-Ausgabetreiberabschnitts wird eine Gruppe notwendiger Wellenformdaten von einer bestimmten Datei geladen und in einem Wellenformdatenspeicherabschnitt gespeichert. Unter Verwendung der Gruppe von Wellenformdaten und entsprechend den Steuerparametern erzeugt der Tongeneratorabschnitt Tonwellenformabtastdaten (d. h. Tonwellenformdaten an aufeinander folgenden Abtastpunkten) bestimmter musikalischer Merkmale, wie zum Beispiel Tonhöhe und Klangfarbe.
- In einem vorbestimmten in einem Computer verwendeten Betriebssystem (BS), wie zum Beispiel Windows 3.1 oder Windows 95 (Marken der Microsoft Corporation) ist eine Schnittstelle zum Empfangen und Ausgeben erzeugter Wellenformabtastdaten vorgesehen (diese Schnittstelle kann im Fall von Windows 3.1 "WAVE out API" sein). Das Ausgabegerät ist ein im Betriebssystem (BS) installiertes Treibermodul, das über eine vorbestimmte Schnittstelle, wie zum Beispiel "WAVE out API" Wellenformabtastdaten empfängt, die vom Software-Tongeneratormodul erzeugt werden, das als Anwendungssoftware vorgesehen ist, und dann die erzeugten Abtastdaten an eine externe Hardware ausgibt. Zum Beispiel weist das Ausgabegerät eine Software auf, die über eine DMA-Steuerung (DMA Controller/Steuerung zum direkten Speicherzugriff) Wellenformabtastdaten ausliest, die durch Verarbeitung durch das Software-Tonmodul erzeugt wurden und in einem Speichergerät, wie zum Beispiel auf einer Festplatte gespeichert wurden, und gibt dann die ausgelesenen Abtastdaten an eine externe Hardware aus, wie zum Beispiel an einen Digital-Analog- Wandler (DAC).
- Das in Fig. 22 gezeigte MIDI-Abspielgerät ist eines Typs, auf dem MIDI- Abspiel- und Software-Tongenerator-Module vorinstalliert sind. Das MIDI- Abspielmodul liest eine Standard-MIDI-Datei (SMF) zum Reproduzieren von MIDI- Nachrichten aus. Jede der reproduzierten MIDI-Nachrichten wird vom Software- Tongeneratormodul zum Erzeugen von Tonwellenformabtastdaten verarbeitet, die der MIDI-Nachricht in einer ähnlichen Weise wie oben erwähnt entsprechen. Die Tonwellenformabtastdaten, die auf diese Weise vom Software-Tongeneratormodul im MIDI-Abspielgerät erzeugt wurden, werden über eine vorbestimmte Schnittstelle, wie zum Beispiel "WAVE out API" zum Ausgabegerät zur weiteren Verarbeitung gesendet und dann an die externe Hardware, wie zum Beispiel den Digital-Analog- Wandler (DAC) ausgegeben.
- Im Computerbetriebssystem ist auch eine Schnittstelle zum Empfangen und Ausgeben von Spielinformation (typischerweise einer MIDI-Nachricht) vorgesehen, auf deren Grundlage Wellenformabtastdaten erzeugt werden (diese Schnittstelle kann eine "MIDI API"-Schnittstelle sein, wenn Windows 3.1 verwendet wird). Bei einer solchen Schnittstelle kann eine Software, die MIDI-Nachrichten ausgibt, als Anwendungssoftware verwendet werden, wie das beispielsweise in Fig. 24 gezeigt ist. Im Beispiel von Fig. 24 ist Spiele-Software, Spiele-Software, Multimediasoftware usw. vorgesehen, so dass unterschiedliche Spieleffektklänge, Hintergrundmusikklänge, MIDI-Daten oder Spielinformation von Spielklängen eines automatischen Sequenzers von dieser Software in der Form von MIDI-Nachrichten ausgegeben werden können. Jede der MIDI-Nachrichten wird über eine vorbestimmte Schnittstelle, wie zum Beispiel die "MIDI API"-Schnittstelle vom Betriebssystem (BS) empfangen und dann an einen MIDI-Treiber weitergegeben. Der MIDI-Treiber liefert aufgrund der weitergegebenen MIDI-Nachricht Tonerzeugungsdaten an einen externen Hardware- Tongenerator, und der externe Hardware-Tongenerator erzeugt Tonwellenformabtastdaten auf der Grundlage der Tonerzeugungsdaten unter Verwendung eines vorbestimmten Tonerzeugungs-Hardwaregeräts.
- Die oben erwähnten herkömmlichen Anwendungssoftware-Tongeneratoren können jedoch keine Daten von der Schnittstelle (wie zum Beispiel MIDI API) zum Empfangen und Ausgeben von Spielinformation zum Ausführen einer Wellenformabtastdatenerzeugungsverarbeitung auf der Grundlage der empfangenen Daten empfangen, auch wenn sie erzeugte Wellenformabtasidaten an eine vorbestimmte Schnittstelle (wie zum Beispiel WAVE out API) des Betriebssystems ausgeben können.
- Als ein Beispiel eines Software-Tonerzeugungssystems, offenbart die EP 597 381 ein System und ein Verfahren zum Verarbeiten von Audio-Eingabe/Ausgabe- Daten. Das System übersetzt eine Audio-Nachricht in ein erstes Format von einer in einer virtuellen Maschine residenten Audio-Anwendung in eine Audio-Stimme in einem zweiten Format, die vielleicht keine genaue Übereinstimmung für die ursprüngliche Audio-Nachricht hat. Die Audio-Anwendungen schreiben direkt an ein bestimmtes Hardware-Register einer bestimmten Audio-Karte zum Kommunizieren mit einer Audio-Karte, die nach vollkommen anderen Prinzipien arbeitet. Ein Übersetzungsprogramm fängt die im ersten Format geschriebene Audio-Nachricht zusammen mit einer ersten Anzahl von Audio-Parametern auf, vergleicht die Audio-Parameter mit denjenigen, die einer Tabelle von Audio-Stimmen entsprechen, und wählt die Audio- Stimme, die einer Übereinstimmung der Audio-Parameter in der Audio-Nachricht entspricht. Wenn in der Tabelle keine exakte Übereinstimmung vorhanden ist, sind unterschiedliche Mittel zum Berechnen der am nächsten kommenden Audio-Stimme für die ursprüngliche Audio-Nachricht vorgesehen.
- In der Vergangenheit war es daher unmöglich, einfach die Spielinformation (MIDI-Nachricht)-Erzeugungssoftware, wie zum Beispiel die Spiele-Software, Sequenzer-Software oder Multimediasoftware über das Computerbetriebssystem mit dem Anwendungssoftware-Tongenerator zum kombinieren. Damit daher eine solche Spielinformation (MIDI-Nachricht)-Erzeugungssoftware auf das Computerbetriebssystem angewendet und einfach mit diesem verwendet werden kann, war ein teuerer Hardware-Tongenerator unbedingt nötig.
- In Fällen, wo die Tonerzeugungsverarbeitung auf der Grundlage von Spielinformation, wie zum Beispiel einer MIDI-Nachricht, ausgeführt wird, ist es sehr selten, dass der Computer die Tonerzeugungsverarbeitung alleine durchführt. Meistens lässt der Computer eines oder mehrere Softwareprogramme gleichzeitig oder parallel mit der Tonerzeugungsverarbeitung unter der Steuerung des gleichen Betriebssystems laufen. Wenn zum Beispiel eine Spiele-Software läuft, kann es nötig sein, dass der Computer parallel zur Klangerzeugungsverarbeitung eine weitere Verarbeitung durchführt, wie zum Beispiel zum Erzeugen animierter Bilder, oder wenn Karaokesoftware läuft, kann es nötig sein, dass der Computer eine Verarbeitung zum Erzeugen einer Einblendung des Texts eines Lieds oder Hintergrundbilder ausführt. Wenn ein Software-Tongenerator verwendet wird, führt der Computer das Software- Tongeneratorprogramm und andere notwendige Softwareprogramme parallel unter der Steuerung des gleichen BS aus. Wenn in einem solchen Fall sichergestellt sein soll, dass die Tonwellenformabtastdatenerzeugungsverarbeitung vom Software- Tongenerator ohne Beeinflussung durch andere Verarbeitung ausgeführt werden kann, ist es wünschenswert, die Tonerzeugungsverarbeitung in einem Betriebssystem mit voller Multitasking-Fähigkeit (wie zum Beispiel Windows 95) auszuführen.
- Es sind aber bisher auch oft Betriebssysteme ohne vollständige Multitasking- Fähigkeit (wie zum Beispiel Windows 3.1) im Einsatz, und es besteht ein immer größerer Bedarf zur Ausführung der Tonerzeugungsverarbeitung unter solchen Betriebssystemen, die keine vollständige Multitasking-Fähigkeit haben. Bei Betriebssystemen ohne vollständige Multitasking-Fähigkeit kann eine Erzeugung von Tönen dadurch gestört werden, dass die Ausführung der Tonerzeugungsverarbeitung aufgrund der anderen Verarbeitung verzögert wird, oder die Ausführung der anderen Verarbeitung kann dadurch verzögert werden, dass die Tonerzeugungsverarbeitung zu lange dauert. Insbesondere, wenn ein Software-Tongenerator auf Anwendungssoftware angewendet wird, der mit einem Hardware-Tongenerator allein verwendet wurde und daher die oben erörterten Probleme bei der parallelen Verarbeitung nicht stellte, ist es wünschenswert, vorher entsprechende Mittel oder Maßnahmen zu überlegen, um den Problemen zu begegnen, die durch eine parallel Verarbeitung beim Computer auftreten könnten.
- Es ist daher eine Aufgabe der vorliegenden Erfindung, ein eine Computersoftware verwendendes Tongeneratorsystem vorzusehen, das Spielinformation, wie zum Beispiel eine MIDI-Nachricht, über ein Betriebssystem zum Treiben eines Anwendungssoftware-Tongenerators empfangen kann und dadurch einen Einsatzbereich des Software-Tongenerators erweitert.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein eine Computersoftware verwendendes Tongeneratorsystem vorzusehen, das eine entsprechende Ausführung einer Tonerzeugungsverarbeitung und eine andere Verarbeitung erlaubt, ohne dass sich dies stört, auch wenn die beiden Verarbeitungen auf einem Betriebssystem laufen, das keine vollständige Multimedia-Fähigkeit hat.
- Die oben genannte Aufgabe wird durch ein in den Ansprüchen 1, 4 und 7 definiertes Tongeneratorsystem gelöst. Vorteilhafte Ausführungsformen sind in den davon abhängigen Ansprüchen definiert.
- Die Aufgabe wird außerdem durch Vorsehen eines Verfahrens zum Erzeugen von Klangwellenformdaten gelöst, das in den Ansprüchen 9, 10 und 11 definiert ist.
- Außerdem wird die Aufgabe durch Vorsehen eines maschinenlesbaren Aufzeichnungsmediums gelöst, das in den Ansprüchen 12, 13 und 14 definiert ist.
- Zum besseren Verständnis der obigen und anderer Merkmale der vorliegenden Erfindung, werden die bevorzugten Ausführungsformen der Erfindung im Folgenden anhand der Zeichnungen eingehend beschrieben. Es zeigt:
- Fig. 1 ein konzeptuelles Blockdiagramm, das eine allgemeine Struktur eines Softwaresystems nach einer erfindungsgemäßen Ausführungsform veranschaulicht,
- Fig. 2 ein konzeptuelles Blockdiagramm, das eine allgemeine Struktur eines Softwaresystems nach einer weiteren erfindungsgemäßen Ausführungsform veranschaulicht,
- Fig. 3 ein Blockdiagramm, das eine allgemeine Hardwarestruktur eines eine Computersoftware verwendenden Tongeneratorsystems nach einer erfindungsgemäßen Ausführungsform veranschaulicht,
- Fig. 4 ein Diagramm, das eine Tonerzeugungsverarbeitung darstellt, die auf der Grundlage der in der vorliegenden Erfindung verwendeten Software durchgeführt wird,
- Fig. 5 ein Diagramm, das ein Beispiel von Maßnahme 1 erklärt, die in der vorliegenden Erfindung verwendet werden kann,
- Fig. 6 ein Diagramm, das ein weiteres Beispiel von Maßnahme 1 erklärt, die in der vorliegenden Erfindung verwendet werden kann,
- Fig. 7 ein Diagramm, das ein Beispiel von Maßnahme 3 erklärt, die in der vorliegenden Erfindung verwendet werden kann,
- Fig. 8 ein Flussdiagramm einer von der CPU von Fig. 3 ausgeführten Hauptroutine,
- Fig. 9 ein Flussdiagramm eines von der CPU ausgeführten Initialisierungsvorgangs von Fig. 8,
- Fig. 10 ein Flussdiagramm, das ein Beispiel eines Noten-Einschalt-Ereignis- Vorgangs veranschaulicht, der im MIDI-Vorgang von Fig. 8 von der CPU ausgeführt wird,
- Fig. 11 ein Flussdiagramm, das ein Beispiel eines Noten-Ausschalt-Ereignis- Vorgangs veranschaulicht, der im MIDI-Vorgang von Fig. 8 von der CPU ausgeführt wird,
- Fig. 12 ein Flussdiagramm, das ein Beispiel einer Tongeneratorverarbeitung I veranschaulicht, die im MIDI-Vorgang von Fig. 8 von der CPU ausgeführt wird,
- Fig. 13 ein Flussdiagramm, das ein Beispiel eines externen Unterbrechungsvorgangs veranschaulicht, der von einer DMA-Steuerung von Fig. 3 ausgeführt wird,
- Fig. 14 ein Flussdiagramm eines Beispiels einer Tongeneratorverarbeitung II von Fig. 2, die von der CPU aufgrund einer von der DMA-Steuerung ausgegebenen Rückgabeanforderung ausgeführt wird,
- Fig. 15 ein Flussdiagramm eines Beispiels einer Tongeneratorverarbeitung II von Fig. 2, die von der CPU aufgrund einer von der DMA-Steuerung ausgegebenen Rücksetzanforderung ausgeführt wird,
- Fig. 16 ein Diagramm eines weiteren Beispiels von Maßnahme 1, das ein Beispiel eines Verhältnisses zwischen der Erzeugung interner Unterbrechungssignale und Mengen zu erzeugender Tondaten zeigt,
- Fig. 17 ein Flussdiagramm eines beispielhaften Programms eines unechten MIDI- Treibers FMD, der in Fig. 1 gezeigt ist,
- Fig. 18 ein Flussdiagramm eines Beispiels eines MIDI-Ereignis-Vorgangs- Programms, das in für den Software-Tongenerator von Fig. 1 dedizierter Software enthalten ist,
- Fig. 19 eine Kurvendarstellung einer beispielhaften charakteristischen Kurve einer Funktion beim Bestimmen einer zu erzeugenden Menge SR in Abhängigkeit vom Verzögerungsmaß OR,
- Fig. 20 eine Kurvendarstellung einer charakteristischen Kurve einer Funktion beim Bestimmen einer zu erzeugenden Menge SR in Abhängigkeit vom Verzögerungsmaß OR,
- Fig. 21 eine Kurvendarstellung einer charakteristischen Kurve einer Funktion beim Bestimmen der Anzahl von Tonerzeugungskanälen in Abhängigkeit vom Verzögerungsmaß OR,
- Fig. 22 ein Blockdiagramm, das eine bekannte herkömmliche Softwaresystemkonfiguration veranschaulicht, die einen Anwendungssoftware-Tongenerator implementiert,
- Fig. 23 ein konzeptuelles Blockdiagramm, das eine Beispielkonfiguration eines bekannten herkömmlichen Software-Tongenerators veranschaulicht,
- Fig. 24 ein Blockdiagramm, das ein Beispiel einer bekannten herkömmlichen Systemkonfiguration veranschaulicht, die eine Anwendungssoftware zum Erzeugen von MIDI-Nachrichten implementiert,
- Fig. 25 ein konzeptuelles Blockdiagramm, das eine allgemeine Konfiguration eines Softwaresystems nach einer weiteren Ausführungsform der vorliegenden Erfindung zeigt,
- Fig. 26 ein Flussdiagramm, das ein Beispiel einer Hauptroutine in einem Klangmodulprogramm veranschaulicht, das von der CPU von Fig. 3 im Softwaresystem von Fig. 26 ausgeführt wird,
- Fig. 27 ein Flussdiagramm, das ein Beispiel einer Verarbeitung veranschaulicht, die im Softwaresystem von Fig. 25 durch Anwendungssoftware APS1 bei einer Ereigniszeitabstimmung von zu reproduzierenden Daten ausgeführt wird,
- Fig. 28 ein Flussdiagramm, das ein Beispiel eines WAVE-Vorgangs von Fig. 26 veranschaulicht,
- Fig. 29 ein Flussdiagramm eines Beispiels einer Tongeneratorverarbeitung 11 von Fig. 26, die aufgrund einer von der DMA-Steuerung von Fig. 3 ausgegebenen Rückgabeanforderung ausgeführt wird, und
- Fig. 30 ein Flussdiagramm eines Beispiels einer Tongeneratorverarbeitung II von Fig. 26, die aufgrund einer von der DMA-Steuerung von Fig. 3 ausgegebenen Rücksetzanforderung ausgeführt wird.
- Fig. 1 ist ein konzeptuelles Blockdiagramm, das eine allgemeine Struktur eines Softwaresystems nach einem Aspekt der vorliegenden Erfindung zeigt.
- Das Softwaresystem verwendet als Betriebssystem (BS) Windows 3.1 oder Windows 95 (beides Marken von Microsoft Corporation). Dieses Betriebssystem (BS) weist als erste Schnittstelle IF1 eine "MIDI API"-Schnittstelle zum Empfangen und Ausgeben einer MIDI-Nachricht (d. h. Spielinformation, auf deren Grundlage Wellenformdaten zu erzeugen sind) und eine "WAVE out API"-Schnittstelle als eine zweite Schnittstelle IF2 zum Empfangen und Ausgeben erzeugter Wellenformdaten auf.
- Zum Beispiel wird "Direktor"-Software hier als Anwendungssoftware APS1 zum Erzeugen einer MIDI-Nachricht (d. h. Spielinformation, auf deren Grundlage Wellenformdaten zu erzeugen sind) verwendet. Diese "Direktor"-Software weist "Direktor"-Dateien auf und gibt Spielinformation von Hintergrundmusik (BGM) in der Form einer MIDI-Nachricht aus. Es kann natürlich auch eine andere Software als die "Direktor"-Software verwendet werden, solange sie zum Ausgeben von MIDI- Nachrichten ausgelegt ist.
- Ein Software-Tongenerator (T.G.)-Modul SSM ist eine Anwendungssoftware, die eine dedizierte Schnittstelle, wie zum Beispiel eine "SGM MIDI out API"- Schnittstelle, zum Empfangen einer MIDI-Nachricht aufweist, und Ton- oder Klangwellenformdaten auf der Grundlage der empfangenen MIDI-Nachricht zum Ausgeben der dabei entstehenden erzeugten Wellenformdaten über die zweite Schnittstelle IF2 (d. h. "WAVE out API") erzeugt. Dieses Software-Tongeneratormodul SSM kann zum Beispiel in einer Weise, wie zuvor in Fig. 23 gezeigt, in der bekannten Technik aufgebaut sein.
- Beim in Fig. 1 gezeigten Beispiel ist ein unechter MIDI-Treiber FMD als ein falscher Treiber vorgesehen, der zum Empfangen der MIDI-Nachricht, die von der Anwendungssoftware APS1 durch die erste BS-Schnittstelle IF1 geliefert wird, und zum Weiterleiten der empfangenen MIDI-Nachricht an das Software- Tongeneratormodul SSM programmiert ist. Dieser unechte MIDI-Treiber FMD ist als ein Treiber im Betriebssystem installiert. Die von der Anwendungssoftware APS1 über die erste Schnittstelle IF1 ("MIDI API") gelieferte MIDI-Nachricht wird daher vom unechten MIDI-Treiber FMD empfangen und dann an das Software- Tongeneratormodul SSM weitergeleitet.
- Das Software-Tongeneratormodul SSM empfängt die MIDI-Nachricht vom unechten MIDI-Treiber FMD über seine eigene Schnittstelle (z. B. "SGM MIDI out API") und erzeugt Wellenformdaten auf der Grundlage der empfangenen MIDI-Nachricht, um, wie schon zuvor festgestellt, so das BS über die zweite Schnittstelle IF2 (d. h. "WAVE out API") mit den dabei entstehenden erzeugten Wellenformdaten zu versorgen.
- Auf diese Weise wird es dem Software-Tongeneratormodul SSM, das selbst eine Anwendungssoftware ist, ermöglicht, die von einer anderen Anwendungssoftware APS1 über die "MIDI API"-Schnittstelle des BS gesendete MIDI-Nachricht zu empfangen und eine Klangwellenformdatenerzeugungsverarbeitung auf der Grundlage der empfangenen MIDI-Nachricht durchzuführen. Daher kann der Software- Tongenerator SSM, der selbst eine Anwendungssoftware ist, leicht mit einer anderen Anwendungssoftware APS1 auf Betriebssystemebene kombiniert werden.
- Das Software-Tongeneratormodul SSM kann geeignete dedizierte Software zum Erzeugen oder Liefern von MIDI-Nachrichten enthalten, wie das auch beim herkömmlichen Software-Tongeneratormodul der Fall ist. In Fig. 1 gezeigte Anwendungssoftware (z. B. "Karaoke"-Software) APS2, ist ein Beispiel einer solche MIDI- Nachrichten liefernden Software. Das Software-Tongeneratormodul SSM empfängt auch die MIDI-Nachricht von der dedizierten Software APS2 über seine eigene Schnittstelle (z. B. "SGM MIDI out API") und führt eine Klangwellenformdatenerzeugungsverarbeitung auf der Grundlage der empfangene MIDI-Nachricht aus, um so das BS über die zweite Schnittstelle IF2 ("WAVE out API") mit den dabei entstehenden erzeugten Wellenformdaten zu versorgen. Auf diese Weise kann die Software APS2, die zur ausschließlichen Verwendung durch das Modul SSM eingefügt ist, und eine andere Software APS1 in Kombination mit dem Modul über das BS das Software-Tongeneratormodul SSM gemeinsam nutzen.
- Die vom BS über die zweite Schnittstelle IF2 ("WAVE out API") empfangenen erzeugten Wellenformdaten werden über ein Ausgabegerät OUD an ein externes Gerät, wie zum Beispiel eine CODEC-Hardware (d. h. Digital-Analog-Wandler (DA oder DAC)) gesendet.
- Fig. 2 ist ein konzeptuelles Blockdiagramm, das eine allgemeine Struktur eines Softwaresystems nach einer weiteren Ausführungsform der vorliegenden Erfindung veranschaulicht.
- In Fig. 2 ist ein Software-Tongeneratormodul SSM, das selbst eine Anwendungssoftware ist, als ein Treiber in einem Betriebssystem installiert und zum Empfangen einer über eine erste Schnittstelle IF1 ("MIDI API") des Betriebssystems eingespeisten MIDI-Nachricht programmiert. Eine MIDI-Nachricht kann so von der Anwendungssoftware APS1 über die erste Schnittstelle IF1 ("MIDI API") und das Betriebssystem an das Software-Tongeneratormodul SSM gesendet werden. Das Software-Tongeneratormodul SSM erzeugt Wellenformabtastdaten auf der Grundlage der empfangenen MIDI-Nachricht und sendet die dabei entstehenden erzeugten Wellenformabtastdaten über eine zweite Schnittstelle IF2 ("WAVE out API") an das BS. Daher kann auch in diesem Fall das Software-Tongeneratormodul SSM, das selbst Anwendungssoftware ist, die von einer anderen Anwendungssoftware APS1 gesendete MIDI-Nachricht auf Betriebssystemebene empfangen und eine Klangwellenformdatenerzeugungsverarbeitung auf der Grundlage der empfangenen MIDI- Nachricht durchführen, um so die erzeugten Wellenformdaten über die zweite Schnittstelle IF2 ("WAVE out API") auf Betriebssystemebene auszugeben.
- Fig. 25 ist ein konzeptuelles Blockdiagramm, das eine allgemeine Struktur eines Softwaresystems nach einer weiteren Ausführungsform der vorliegenden Erfindung zeigt.
- In Fig. 25 ist "Multimedia"-Software als Anwendungssoftware APS1 vorgesehen, die eine MIDI-Nachricht und Wellenformdaten in synchroner Weise erzeugt. Zusätzlich zu einer Schnittstelle IF2 ("WAVE out API"), wie in Fig. 2 gezeigt, weist ein Betriebssystem BS eine dritte Schnittstelle IF3 ("WAVE out API", links in Fig. 25) auf, die durch ein Klangmodul SGM bereitgestellt wird, das als ein Treiber im Betriebssystem installierte Anwendungssoftware ist. Alle von der Anwendungssoftware APS1 erzeugten Wellenformdaten werden über die vom Klangmodul SGM bereit gestellte dritte Schnittstelle IF3 empfangen.
- Das Klangmodul SGM enthält ein Software-Tonquellenmodul SSM, das in einer ähnlichen Weise zum SSM, dem Gegenstück im in Fig. 2 gezeigten System, zum Empfangen der MIDI-Nachricht von der Anwendungssoftware APS1 über die erste Schnittstelle IF1 ("MIDI API") programmiert ist und Wellenformabtastdaten auf der Grundlage der empfangenen MIDI-Nachricht erzeugt.
- Weiter ist das Klangmodul SGM so programmiert, dass es sowohl die von der Anwendungssoftware APS1 über die Schnittstelle IF3 gelieferten Wellenformdaten als auch die vom Softwaretonquellmodul SSM erzeugten Wellenformabtastdaten empfängt und diese empfangenen Daten so addiert, dass die resultierenden addierten Daten an die zweite Schnittstelle IF2 ausgegeben werden. Auf diese Weise ist auch in diesem Fall das Klangmodul SGM, das selbst eine Anwendungssoftware ist, fähig, die von einer anderen Anwendungssoftware APS1 auf Betriebssystemebene gelieferte MIDI-Nachricht zu empfangen, eine Klangwellenformdatenverarbeitung auf der Grundlage der empfangenen MIDI-Nachricht durchzuführen und die erzeugten Wellenformdaten und die von der Anwendungssoftware APS1 über die Schnittstelle IF3 gelieferten Wellenformdaten zu addieren, um schließlich das addierte Ergebnis auf Betriebssystemebene über die zweite Schnittstelle IF2 auszugeben.
- Fig. 3 ist ein Blockdiagramm, das eine allgemeine Hardwarestruktur veranschaulicht, die zum Implementieren des Tongeneratorsystems unter Verwendung von Computersoftware erfindungsgemäß eingesetzt wird.
- Das Tongeneratorsystem von Fig. 3 verwendet eine CPU (Zentraleinheit) 3 eines PC als einen Hauptsteuerungsabschnitt und führt eine Wellenformabtastdatenerzeugungsverarbeitung auf der Grundlage eines Programms, das ein Software- Tongeneratorprogramm implementiert (d. h. ein Software-Tongeneratorprogramm), und andere Verarbeitung auf der Grundlage eines oder mehrerer Programme in paralleler Weise unter der Steuerung der CPU 3 aus. Der Ausdruck "Tongeneratorverarbeitung", der in der folgenden Beschreibung verwendet wird, kann so verstanden werden, dass er im Wesentlichen die gleiche Bedeutung hat wie der oben verwendete Ausdruck "Wellenformabtastdatenerzeugungsverarbeitung", außer dass der Ausdruck "Tongeneratorverarbeitung" sich auch auf einen Effektgebungsvorgang und noch verschiedene andere Arten von Tonverarbeitungsvorgängen beziehen kann, die keine Wellenformabtastdatenerzeugungsverarbeitung sind.
- An die CPU sind über einen Daten- und Adressbus 6 eine MIDI-Schnittstelle 1, ein Zeitgeber 2, ein ROM (Nur-Lese-Speicher) 4, ein RAM (Speicher mit wahlfreiem Zugriff) 5, eine Maus 7, eine Tastatur 8, eine Anzeige 9, eine Festplattenvorrichtung 10 und eine DMA-Steuerung (Steuerung zum direkten Speicherzugriff) 11 angeschlossen.
- Die DMA-Steuerung 11 führt einen vorbestimmten Reproduktionsvorgang aus, in dem sie das bekannte Verfahren zum direkten Speicherzugriff zum sequentiellen Auslesen aus einem Ausgangspufferbereich des RAM 5 von Tondaten, die von der eine Tonerzeugungsverarbeitung ausführenden CPU 3 erzeugt werden, verwendet, und sendet dann die ausgelesenen Tondaten, Abtastwert für Abtastwert synchron mit den von einem Digital-Analog-Wandler (D/A-Wandler) 12 gelieferten Reproduktionsabtasttaktpulsen an den Wandler 12. Die Tondaten, die über den D/A-Wandler 12 in analoge Repräsentationen umgesetzt werden, werden jeweils über ein aus Verstärkern und Sprechern bestehendes Klangsystem (Sound-System) 13 reproduziert bzw. hörbar gemacht.
- Auf der Festplattenvorrichtung 10 ist verschiedene Software vorgespeichert, wie zum Beispiel ein BS (in dieser Ausführungsform Windows 3.1 (Marke von Microsoft)), Dienstprogrammsoftware und Software zum Implementieren eines Software- Tongenerators (d. h. das Software-Tongeneratormodul SSM von Fig. 1 oder 2), sowie andere Anwendungssoftware (d. h. die Anwendungssoftware ASP1 und ASP2 von Fig. 1 oder 2). Die Festplattenvorrichtung 10 weist einen Wellenformdatenspeicher auf, in dem Gruppen von Wellenformdaten einer Vielzahl von Klangfarben für eine oder mehrere Perioden gespeichert sind. Verschiedene Programme, wie zum Beispiel der unechte MIDI-Treiber, können auf der Festplattenvorrichtung 10 oder im RAM 5 oder im ROM 4 gespeichert sein. In der folgenden Beschreibung werden zum klaren Unterscheiden zwischen den Wellenformdaten, die im Wellenformdatenspeicher der Festplattenvorrichtung 10 vorgespeichert sind, und den Wellenformabtastdaten, die vom Software-Tongeneratormodul SSM in Reaktion auf eine MIDI- Nachricht und unter Verwendung der vorgespeicherten Wellenformdaten erzeugt wurden, die letzteren auch als "Tondaten" bezeichnet.
- Die von der CPU 3 auszuführenden Programme können auch auf dem ROM 4 und nicht auf der Festplatte 10 vorgespeichert sein, und es können auch noch verschiedene andere Daten als die Wellenformdaten gespeichert sein. Durch Laden eines der Programme von der Festplatte 10 oder vom ROM 4 in den RAM 5 kann die CPU 3 das Programm ausführen. Dies erleichtert beträchtlich das Aktualisieren, den Zusatz usw. eines Betriebsprogramms. Eine CD-ROM (Compact Disk) 19 kann als ein entfernbar angebrachtes externes Aufzeichnungsmedium zum Aufzeichnen verschiedener Daten und eines optionalen Betriebsprogramms verwendet werden. Ein solches Betriebsprogramm und auf der CD-ROM 19 gespeicherte Daten können über ein DC-ROM-Laufwerk 14 ausgelesen und zur Speicherung auf der Festplatte 10 übertragen werden. Dies vereinfacht die Installation und Aktualisierung des Betriebsprogramms. Das entfernbar angebrachte externe Aufzeichnungsmedium kann auch etwas anderes als eine CD-ROM sein, wie zum Beispiel eine Diskette und eine magneto-optische Disk (MO).
- Eine Kommunikationsschnittstelle 15 kann mit dem Bus 6 verbunden werden, so dass das Tongeneratorsystem 18 über die Schnittstelle 15 mit einem Kommunikationsnetz 16, wie zum Beispiel einem LAN (örtliches Netz), dem Internet und dem Telefonnetz, sowie über das Kommunikationsnetz 16 auch mit einem entsprechenden Server 17 verbunden werden kann. Wenn daher das Betriebsprogramm und verschiedene Daten nicht auch der Festplatte 10 gespeichert sind, können das Betriebsprogramm und die Daten vom Server 17 empfangen und auf die Festplatte 10 heruntergeladen werden. In einem solchen Fall sendet das Tongeneratorsystem 18, d. h. das "Client"-System, einen Befehl aus, der vom Server 17 das Herunterladen des Betriebsprogramms und verschiedener Daten über die Kommunikationsschnittstelle 15 und das Kommunikationsnetz 16 anfordert. In Reaktion auf den Befehl vom Tongeneratorsystem 18 liefert der Server 17 das angeforderte Betriebsprogramm und die Daten an das System 18 über das Kommunikationsnetz 16. Das Tongeneratorsystem 18 vollendet das erforderliche Herunterladen durch Empfangen des Betriebsprogramms und der Daten über das Kommunikationsnetz 16 und durch entsprechendes Speichern auf der Festplatte 10.
- Hier versteht es sich, dass das Tongeneratorsystem 18 der vorliegenden Erfindung durch Installieren des Betriebsprogramms und verschiedener Daten, die den Vorgängen der vorliegenden Erfindung entsprechen, in einem im Handel erhältlichen PC implementiert werden können. In einem solchen Fall kann das Betriebsprogramm und verschiedene Daten, die den Vorgängen der vorliegenden Erfindung entsprechen, den Benutzern in aufgezeichneter Form auf einem Aufzeichnungsmedium zur Verfügung gestellt werden, wie zum Beispiel auf einer CD-ROM oder einer Diskette, die vom PC gelesen werden kann. Wo der PC an ein Kommunikationsnetz, wie zum Beispiel an ein LAN, angeschlossen ist, können das Betriebsprogramm und verschiedene Daten über das Kommunikationsnetz in ähnlicher Weise an den PC geliefert werden, wie das oben schon geschildert wurde.
- Das Softwaretongeneratormodul SSM kann allgemein in der in Fig. 23 gezeigten Weise konstruiert sein. Das heißt, das Software-Tongeneratormodul SSM weist, wie in Fig. 23 gezeigt, einen MIDI-Ausgangstreiberabschnitt und einen Tongeneratorabschnitt auf. Der MIDI-Ausgangstreiberabschnitt ist ein Modul zum Treiben des Tongeneratorabschnitts, das auf eine MIDI-Nachricht anspricht und Stimmdaten in Steuerparameter zum Steuern des Tongeneratorabschnitts umwandelt. Die Steuerparameter werden über vorbestimmte Zwischenmodulschnittstellen (z. B. "SGM engine API") zum Tongeneratorabschnitt gesendet. Wenn der MIDI-Ausgangstreiberabschnitt initialisiert wird, wird eine Gruppe erforderlicher Wellenformdaten aus einer bestimmten Datei im Wellenformdatenspeicher geladen und in einem Wellenformdatenspeicherabschnitt abgelegt. Unter Verwendung der Gruppe von Wellenformdaten und entsprechend den Steuerparametern erzeugt der Tongeneratorabschnitt Tonwellenformabtastdaten oder Tondaten bestimmter musikalischer Eigenschaften, wie zum Beispiel Tonhöhe und Klangfarbe.
- Die in Fig. 1 und 2 gezeigten Ausgabegeräte sind Module, die den D/A- Wandler 12 mit den Tondaten versorgen, die vom Software-Tongeneratormodul SSM über die zweite Betriebssystemebenenschnittstelle ("WAVE out API") gesendet werden. Die Tondaten werden mittels der DMA-Steuerung 11 entsprechend des bekannten direkten Speicherzugriffsverfahrens an den D/A-Wandler 12 geliefert. Die Ausgabegeräte werden daher durch Unterbrechungssignale aus der DMA-Steuerung 11 unter der Steuerung der CPU 3 implementiert.
- Es folgt nun anhand von Fig. 4 eine kurze Beschreibung eines Beispiels der Tonerzeugungsverarbeitung, die vom Software-Tongeneratormodul SSM unter der Steuerung durch die CPU 3 durchgeführt wird.
- Nach dem Aktivieren des Programms der Anwendungssoftware APS1 oder APS2 wird mit dem Liefern von MIDI-Nachrichten an das Software- Tongeneratormodul SSM begonnen. Im System von Fig. 1 wird jedes MIDI- Nachricht-Ausgangssignal aus der Anwendungssoftware APS1 über die erste Schnittstelle IF1 ("MIDI API") und den unechten MIDI-Treiber FMD an die Eingabeschnittstelle ("SGM MIDI out API") geliefert, während jedes MIDI-Nachricht- Ausgangssignal von der Anwendungssoftware APS2, wie schon erwähnt, direkt an die Eingabeschnittstelle ("SGM MIDI out API") geleitet wird. Nachdem die MIDI- Nachricht an die Eingabeschnittstelle ("SGM MIDI out API") des Software- Tongeneratormoduls SSM geleitet wurde, wird der MIDI-Ausgabetreiberabschnitt des Moduls SSM (Fig. 23) zum Umsetzen von Stimmdaten in Steuerparameter und zum Speichern der umgesetzten Steuerparameter und anderer Daten in einem Tongeneratorregister für einen Tonerzeugungskanal aus Tonerzeugungskanälen, der der Tonerzeugung auf der Grundlage der MIDI-Nachricht zugewiesen wird, aktiviert. Mit anderen Worten, die Tongeneratorregister für die Tonerzeugungskanäle bilden einen Teil der Eingabeschnittstelle ("SGM MIDI out API") des Software- Tongeneratormoduls SSM.
- Im Grunde ist es so, dass der Tongeneratorabschnitt des Moduls SSM (Fig. 23) zum Ausführen der Tonerzeugungsverarbeitung auf der Grundlage von MIDI- Nachrichten, die in einem vorhergehenden Rahmen in Übereinstimmung mit den Steuerparametern geliefert werden, nach jedem vorbestimmten Zeitraum einer vorbestimmten Länge (der im Folgenden als "Rahmen" ("frame") bezeichnet wird) aktiviert wird. Im Beispiel von Fig. 4 wird die Tonerzeugungsverarbeitung auf der Grundlage von MIDI-Nachrichten, die im Rahmen von Zeit T1 zu Zeit T2 geliefert werden, im nächsten Rahmen zwischen Zeit T2 und Zeit T3 ausgeführt. In einem bevorzugten Ausführungsbeispiel der Tonerzeugungsverarbeitung auf der Grundlage des Wellenformspeichenrerfahrens werden für jeden Tonerzeugungskanal, der einer Tonerzeugung zugewiesen wurde, Wellenformdaten vom RAM 5 mit einer Rate ausgelesen, die von den Steuerparametern diktiert wird, die im Tongeneratorregister dieses Kanals gespeichert sind, und die ausgelesenen Wellenformdaten werden einer Farbsteuerung (arithmetischer Filtervorgang), einer Lautstärkensteuerung (Multiplikation um Tonlautstärkenhülldaten) und einer Modulationssteuerung von Tonhöhe, Farbe, Lautstärke usw. gemäß den Steuerparametern unterzogen. Auf diese Weise wird eine vorbestimmte Anzahl von Tondatenabtastwerten für den Tonerzeugungskanal erzeugt. Die erzeugten Tondaten der zugeordneten Tonerzeugungskanäle werden gesammelt und dann in den Ausgabepuffer des RAM 5 eingelesen. In manchen Fällen können den gesammelten Tondaten Effekte verliehen werden, bevor sie in den Ausgabepuffer geschrieben werden. Dann wird die Reproduktion der Tondaten aus dem Ausgabepuffer in der Ausgabevorrichtung reserviert. Ein solches Reservieren der Reproduktion der Tondaten an die Ausgabevorrichtung entspricht einem Ausgeben der erzeugten Tondaten vom Software-Tongeneratormodul SSM an die zweiten Betriebssystemebenenschnittstelle ("WAVE out API").
- Für jeden der Rahmen liest das Ausgabegerät Abtastwert für Abtastwert die erzeugten Tondaten aus dem Ausgabepuffer, der vom Tongeneratorabschnitt im vorhergehenden Rahmen reserviert wurde, und sendet die ausgelesenen Tondaten an den D/A-Wandler 12. Im Beispiel von Fig. 4 werden die im Rahmen zwischen der Zeit T2 und der Zeit T3 erzeugten Tondaten vom reservierten Ausgabepuffer im Rahmen zwischen der Zeit T3 und der Zeit T4 ausgelesen.
- In der oben erwähnten Software wird die Aktivierung der Anwendungssoftware APS1 und/oder APS2 und eine Aktivierung des MIDI-Ausgabetreiberabschnitts auf der Grundlage der gelieferten MIDI-Nachricht in Echtzeit durchgeführt. Das Ausgabegerät wird zwangsweise durch ein Unterbrechungssignal von der DMA-Steuerung 11 aktiviert, so dass keine Zeitverzögerung entsteht. Im Gegensatz dazu wird ein Tongeneratorabschnitt durch ein internes Unterbrechungssignal von der CPU 3 selbst aktiviert. Wenn die Software auf einem Betriebssystem (BS) betrieben wird, das keine volle Multitasking-Fähigkeit aufweist, würde daher die Aktivierung des Tongeneratorabschnitts durch einen Einfluss einer anderen Verarbeitung verzögert, so dass die gewünschte Tonerzeugung beträchtlich gestört würde. Aus diesem Grund ist das erfindungsgemäße Tongeneratorsystem zum wirksamen Verhindern einer solchen Störung der Tonerzeugung konstruiert, indem die folgenden Maßnahmen getroffen werden.
- Gemäß dieser Maßnahme wird ein Zeitpunkt zum Erzeugen eines internen Unterbrechungssignals, das den Tongeneratorabschnitt aktiviert (d. h. ein Aktivier- bzw. Auslösebefehl) so gesetzt, dass er mehrere Male im jeweiligen Rahmen eintritt, so dass das interne Unterbrechungssignal tatsächlich nur dann erzeugt wird, wenn tatsächlich gestattet ist, die Tongeneratorverarbeitung im Software-Tongenerator durchzuführen. Die Zeitabstimmung kann unter Verwendung des Zeitgebers so gesetzt werden, dass sie periodisch auftritt. Durch Erzeugen von einigen einer "vorbestimmten Anzahl von Abtastwerten von in einen Ausgabepuffer zu schreibenden Tondaten", wird jedes Mal, da der Tongeneratorabschnitt durch das Signal aktiviert wird, eine entsprechende Einstellung vorgenommen, so dass die "vorbestimmte Anzahl von Abtastwerten von in einen Ausgabepuffer zu schreibenden Tondaten" in einer verteilten Weise nachträglich im Rahmen insgesamt erzeugt werden können.
- Falls der Tongeneratorabschnitt aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignal (d. h. des Aktivierbefehls) an einigen der Punkte nicht aktiviert wird, kann eine entsprechende Einstellung in der Weise vorgenommen werden, dass die arithmetische Erzeugung der in einen Ausgabepuffer zu schreibenden Tondaten durchgeführt wird, indem die unerzeugt gebliebenen Tondaten (d. h. Tondaten, die zur vorbestimmten Aktivierungszeit nicht erzeugt wurden) nur dann erzeugt werden, wenn das interne Unterbrechungssignal oder der Aktivierbefehl an einem oder mehreren der folgenden Punkte im Rahmen erzeugt wird.
- Gemäß Maßnahme 1 kann die oben erwähnte Störung bei der Tonerzeugung wirksam vermieden werden, weil die Erzeugung des den Tongeneratorabschnitt aktivierenden internen Unterbrechungssignals zu mehreren Malen in jedem Rahmen erfolgt und die vorbestimmte Anzahl der Tondaten vollständig einfach dadurch erzeugt werden kann, dass Tondatenerzeugungsvorgänge nur dann erfolgen, wenn das interne Unterbrechungssignal tatsächlich erzeugt wird.
- Fig. 5 und 6 veranschaulichen zwei typische Beispiele der Maßnahme 1, wonach den Tongeneratorabschnitt aktivierende interne Unterbrechungssignale in einem Rahmen von 100 Millisekunden zu vorbestimmten Intervallen von 10 Millisekunden erzeugt werden (daher werden pro Rahmen 10 interne Unterbrechungssignale erzeugt), und es wird jedes Mal, da der Tongeneratorabschnitt durch das Unterbrechungssignal aktiviert wird, ein Zehntel der vorbestimmten Zahl von Tondaten erzeugt.
- Nach dem Verfahren von Fig. 5 werden alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals nicht erzeugt wurden, in Reaktion auf die Erzeugung des nächsten internen Unterbrechungssignals nachträglich erzeugt. Beim gezeigten Verfahren werden nämlich alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals bei der zweiten Unterbrechungs-, oder Aktivierungszeit (die dem 10ten Millisekundenpunkt in der Figur entspricht) nicht erzeugt wurden, in Reaktion auf das interne Unterbrechungssignal, das zur dritten Aktivierungszeit (die dem 20ten Millisekundenpunkt entspricht) zusammen mit den Tondaten, die ursprünglich diesem Punkt zugeordnet waren, erzeugt (was in der Figur mit "2" und "3" gekennzeichnet ist). Außerdem werden alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals bei der sechsten und siebten Aktivierungszeit (die dem 50ten bzw. dem 60ten Millisekundenpunkt entspricht) nicht erzeugt wurden, in Reaktion auf das bei der achten Aktivierungszeit (die dem 70ten Millisekundenpunkt entspricht) erzeugte interne Unterbrechungssignal zusammen mit Tondaten erzeugt, die ursprünglich diesem Punkt zugeordnet waren (was in der Figur mit "6-8" gekennzeichnet ist). Das Verfahren von Fig. 5 hat einen Vorteil darin, dass die Tonerzeugung kaum verzögert wird, weil die unerzeugt gebliebenen Tondaten zusammen nachträglich auf ein Mal erzeugt werden.
- Im Verfahren von Fig. 6 werden dagegen alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals nicht erzeugt wurden, auf verteilte Weise an mehreren folgenden Aktivierungszeiten nachträglich erzeugt, wenn interne Unterbrechungssignale tatsächlich erzeugt werden. Es werden nämlich alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals bei der zweiten und dritten Aktivierungszeit (die dem 10ten und 20ten Millisekundenpunkt entspricht) nicht erzeugt wurden, in Reaktion auf die internen Unterbrechungssignale, die tatsächlich der vierten und fünften Aktivierungszeit zugeordnet waren (die dem 30ten und 40tne Millisekundenpunkt entspricht, was in der Figur mit "2", "3" und "4", "5" bezeichnet ist), nachträglich erzeugt. Bei der letzten bzw. 10ten Aktivierungszeit (die dem 90ten Millisekundenpunkt entspricht) werden alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals zur siebten, achten und neunten Aktivierungszeit (die dem 60ten, 70ten und 80ten Millisekundenpunkt entspricht) zusammen erzeugt, um die Erzeugung der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" innerhalb des Rahmens sicherzustellen. Weil das Verfahren von Fig. 6 die unerzeugt gebliebenen Tondaten an mehreren günstig verteilten Punkten erzeugt, kann, wenn die unerzeugt gebliebenen Tondaten eine große Datenmenge bilden, jede Verarbeitungszeit so gesteuert werden, dass sie nicht zu lang ist, so dass die CPU effizient genutzt werden kann.
- Im Verfahren von Fig. 6 werden zwar alle Tondaten, die aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals nicht erzeugt wurden, d. h. unerzeugt gebliebene Tondaten, in einer verteilten Art und Weise zu einer oder mehreren späteren Aktivierungszeiten in einer vorbestimmten Menge erzeugt, doch können diese unerzeugten Tondaten später auch in optionalen unterschiedlichen Mengen (z. B. die vorbestimmte Anzahl, eineinhalb Mal die vorbestimmte Anzahl und die Hälfte der vorbestimmten Anzahl) erzeugt werden.
- Als ein weiteres Beispiel von Maßnahme 1 können alle unerzeugt gebliebenen Tondaten, die von einem Fehler bei der Erzeugung des internen Unterbrechungssignals verursacht wurden, fortschreitend bis zum Ende der letzten bzw. 10ten Aktivierungszeit im gleichen Rahmen erzeugt werden.
- Fig. 16 ist ein Diagramm eines weiteren Beispiels der Maßnahme 1, das einen Fall zeigt, bei dem die Menge in Reaktion auf ein internes Unterbrechungssignal (Aktiverbefehl) zu erzeugender Tondaten nicht immer eine exakte ganzzahlige Vielfache eines Zehntels der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" (ein Zehntel der vorbestimmten Anzahl kann eine verarbeitete Einheit genannt werden) ist, wie in Fig. 5 und 6 gezeigt, sondern manchmal die verarbeitete Einheit plus ein Bruchteil davon sein kann.
- Das Verfahren von Fig. 16 ist dadurch gekennzeichnet, dass an jedem der Punkte, die dem tatsächlich erzeugten internen Unterbrechungssignal entsprechen, eine Menge von in Reaktion auf jedes interne Unterbrechungssignal (Aktivierbefehl) zu erzeugenden Tondaten in Abhängigkeit von einer Menge von bis zu diesem Punkt unerzeugt gebliebenen Tondaten bestimmt wird. Fig. 16 zeigt Beispiele der derart bestimmten Menge von Tondaten bezüglich der Erzeugung des internen Unterbrechungssignals. In Fig. 16 wird ein Zehntel der "vorbestimmten Anzahl in einen Ausgabepuffer zu schreibenden Tondaten" in einem Rahmen zu einer ersten Aktivierungszeit (die dem Oten Millisekundenpunkt im gezeigten Verfahren entspricht) erzeugt, wenn ein internes Unterbrechungssignal im Rahmen erzeugt wird. Aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals werden zur zweiten und dritten Aktivierungszeit (die dem 10ten und 20ten Millisekundenpunkt in der Figur entsprechen) keine Tondaten erzeugt, und dann wird eine spezifische Menge, die 1,6/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, zu einer vierten Aktivierungszeit (die dem 30ten Millisekundenpunkt entspricht) erzeugt, wenn ein weiteres internes Unterbrechungssignal erzeugt wird. Bis zum Ende der vierten Aktivierungszeit wurden also Tondaten bis zu einer Menge erzeugt, die 2,6/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, was in der Figur mit "2,6" angegeben ist.
- Dann wird eine weitere spezifische Menge von Tondaten, die 1,5/10 der "vorbestimmten Anzahl in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, zu einer fünften Aktivierungszeit (die dem 40ten Millisekundenpunkt entspricht) erzeugt, wenn ein weiteres internes Unterbrechungssignal erzeugt wird. Bis zum Ende der fünften Aktivierungszeit wurden also Tondaten von bis zu einer Menge erzeugt, die 4,1/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, was in der Figur mit "4,1" angegeben ist. Hiernach wird noch eine weitere spezifische Menge von Tondaten, die 1,4/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, zu einer sechsten Aktivierungszeit (die dem 50ten Millisekundenpunkt entspricht) erzeugt, wenn noch ein weiteres internes Unterbrechungssignal erzeugt wird. Bis zum Ende der sechsten Aktivierungszeit wurden also Tondaten von bis zu einer Menge erzeugt, die 5,5/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, was in der Figur mit "5,5" angegeben ist.
- Aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals werden bei der siebten und achten Aktivierungszeit (die dem 60ten bzw. 70ten Millisekundenpunkt entspricht) keine Tondaten erzeugt, und dann wird eine weitere spezifische Menge von Tondaten, die 1,7/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" zu einer neunten Aktivierungszeit (die dem 80ten Millisekundenpunkt entspricht) erzeugt, wenn noch ein weiteres internes Unterbrechungssignal erzeugt wird. Bis zum Ende der neunten Aktivierungszeit wurden daher nachträglich Tondaten von bis zu einer Menge erzeugt, die 7,2110 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, was in der Figur mit "7,2" angegeben ist. Hiernach wird noch eine weitere spezifische Menge von Tondaten, die 1,6/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, zu einer zehnten Aktivierungszeit (90ter Millisekundenpunkt) erzeugt, wenn noch ein weiteres internes Unterbrechungssignal erzeugt wird. Bis zum Ende der zehnten Aktivierungszeit wurden also Tondaten als Gesamtmenge bis zu einer Menge für den Rahmen erzeugt, die 8,8/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, was in der Figur mit "8,8" angegeben ist.
- Dann wird bei einer ersten Aktivierungszeit (100ster Millisekundenpunkt in der Figur) eines nächsten Rahmens, wenn ein weiteres internes Unterbrechungssignal erzeugt wird, eine weitere Menge von Tondaten, die im vorhergehenden Rahmen unerzeugt geblieben sind, die 1,2/10 der "vorbestimmten Anzahl von in einen Ausgabespeicher zu schreibenden Tondaten" entspricht, zusammen mit einer spezifischen Menge von Tondaten erzeugt, die im aktuellen Rahmen zu erzeugen sind, die 0,3/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht, was in der Figur mit "10,3" angegeben ist. Da bisher Tondaten erzeugt wurden, welche die "vorbestimmte Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" überschreiten, werden diejenigen (d. h. 10/10) der erzeugten Tondaten, die der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entsprechen, aus der erzeugten Datengruppe herausgenommen und an das Ausgabegerät geliefert, so dass ihre Reproduktion reserviert wird. Die Tondaten, die 0,3/10 der vorbestimmten Anzahl von in einen Ausgangspuffer zu schreibenden Tondaten entsprechen, bleiben also als "in der Erzeugung begriffene Tondaten" übrig.
- Hiernach wird noch eine weitere spezifische Menge von Tondaten, die 1,4/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" für den aktuellen Rahmen entspricht, zu einer zweiten Aktivierungszeit (110ter Millisekundenpunkt) des aktuellen Rahmens erzeugt, wenn noch ein weiteres internes Unterbrechungssignal erzeugt wird. Bis zum Ende der zweiten Aktivierungszeit wurden also Tondaten bis zu einer Gesamtmenge erzeugt, die 1,7/10 der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" für den aktuellen Rahmen entsprechen, was in der Figur mit "1,7" bezeichnet ist. Hiernach werden Tondaten in Reaktion auf jedes interne Unterbrechungssignal in der oben geschilderten Art und Weise erzeugt, bis die Gesamtmenge einen vorbestimmten oberen Grenzwert SRmax erreicht. Wenn die vorbestimmte Menge von zu erzeugenden Tondaten mehr als der obere Grenzwert SRmax ist, greift eine entsprechende Steuerung ein, so dass die Menge auf oder unter den Wert SRmax fällt.
- Nach dem oben beschriebenen Verfahren von Fig. 16 wird jedes Mal, da das interne Unterbrechungssignal bzw. der interne Aktivierungsbefehl durch den Softwarezeitgeber erzeugt wird, in Abhängigkeit von einer Menge von bis zu diesem Zeitpunkt unerzeugt gebliebenen Tondaten innerhalb eines Grenzwerts eine Menge von zu erzeugenden Tondaten bestimmt, so dass nicht zu viel Zeit mit der Tonerzeugungsverarbeitung verbraucht wird, und dann wird die Verarbeitung zum Erzeugen der Tondaten bis zur bestimmten Menge durchgeführt. Da die Verarbeitung in Reaktion auf das jeweilige interne Unterbrechungssignal ausgeführt wird, werden die unerzeugt gebliebenen Tondaten in fortschreitender Weise erzeugt. Das Verfahren von Fig. 16 ist nämlich insofern identisch mit den Verfahren von Fig. 5 und 6, dass die Tonerzeugungsverarbeitung in Reaktion auf das jeweilige interne Unterbrechungssignal aktiviert wird, und es hat allgemein die gleichen Vorteile wie die Verfahren von Fig. 5 und 6. Das Verfahren von Fig. 16 unterscheidet sich jedoch von den Verfahren von Fig. 5 und 6 insofern, als die unerzeugt gebliebenen Tondaten fortschreitend nach vorbestimmten Funktionen erzeugt werden und nicht zusammen auf ein Mal, wodurch sich ganz besondere Vorteile realisieren lassen. Mit anderen Worten, es kann verhindert werden, dass die CPU 3 vom Tongeneratormodul SSM lange Zeit ausschließlich für die Tonerzeugungsverarbeitung eingesetzt wird, so dass die CPU 3 die Tonerzeugungsverarbeitung und andere Verarbeitung parallel durchführt, oder, wenn das Durchführen einer Verarbeitung niederer Priorität außer der Tonerzeugungsverarbeitung durch das Software-Tongeneratormodul SSM nötig ist, erlaubt das Verfahren von Fig. 16 ein promptes Umschalten auf die andere Verarbeitung, wodurch eine effiziente Nutzung der Ressourcen möglich wird.
- Beim Verfahren von Fig. 5 kann zum Beispiel die Erzeugung der unerzeugt gebliebenen Tondaten mit der höchsten Geschwindigkeit durchgeführt werden, doch muss in dem Fall, dass viele interne Unterbrechungssignale nicht aufeinander folgend erzeugt werden, eine ziemlich große Anzahl von Tondaten erzeugt werden, wenn das interne Unterbrechungssignal dann zu einer Zeit unmittelbar nach diesem Fehler tatsächlich erzeugt wird. In einem solchen Fall, würde die CPU 3 lange Zeit dazu brauchen, die Tonerzeugungsverarbeitung durch das Software- Tongeneratormodul SSM durchzuführen, und wird daher normalerweise ausschließlich für die Tonerzeugungsverarbeitung benutzt. Es besteht daher die Möglichkeit, dass beim Auftreten eines Faktors, der eine Verarbeitung auslöst, die eine niedrigere Priorität als die Tonerzeugungsverarbeitung durch das Software-Tongeneratormodul SSM hat, die CPU 3 zu einem prompten Ausführen der Verarbeitung niedrigerer Ordnung nicht fähig ist. Wenn die Anzahl zu erzeugender Tondaten pro Zeiteinheit so groß wird, kann die Anzahl von Tonerzeugungskanälen, die simultan Tondaten erzeugen können, extrem stark abfallen. Diese Probleme können jedoch dadurch umgangen werden, dass das Verfahren von Fig. 16 eingesetzt wird. Aus diesem Grund wird eine Ausführungsform unten im Einzelnen anhand eines Falls beschrieben, bei dem das Verfahren von Fig. 16 angewendet wird.
- Wenn viele interne Unterbrechungssignale nicht erzeugt werden, wodurch eine große Zahl von Tondaten unerzeugt bleibt, kann es übrigens sein, dass die Tondatenerzeugungsverarbeitung zu einer oder mehreren folgenden Aktivierungszeiten, zu denen das Unterbrechungssignal tatsächlich erzeugt wird, nicht in jedem zugeordneten Tonerzeugungskanal abgeschlossen werden kann. Daher ist es in der Maßnahme 1 wünschenswert, die Erzeugung der Tondaten dadurch zu erreichen, dass die Anzahl von für diesen Zweck verwendeten Tonerzeugungskanälen entsprechend verringert wird. Die derart zu verringernde Anzahl von Tonerzeugungskanälen ist im Verfahren von Fig. 5 am höchsten. Im Fall von Fig. 6, in anderen Fällen, wo die unerzeugt gebliebenen Tondaten fortlaufend bis zum Ende der letzten Aktivierungszeit erzeugt werden, und im Fall von Fig. 16 ist die zu verringernde Anzahl von Tonerzeugungskanälen kleiner als im Fall des Beispiels von Fig. 5. Das Beispiel von Fig. 5 ist jedoch dann höchst wünschenswert, wenn die unerzeugt gebliebenen Tondaten sofort zu erzeugen sind.
- Nach dieser Maßnahme ist als das Tongeneratorregister für jeden der Tonerzeugungskanäle vorgesehen: ein erstes Register (Primärtongeneratorregister) zum Speichern von Parametern zum Steuern einer aktuellen Tonerzeugungsverarbeitung, die zugeordnet wird, wenn der Kanal nicht in Verwendung und daher verfügbar ist, und ein zweites Register (Sekundärtongeneratorregister) zum Speichern von Parametern zum Steuern einer neuen Tonerzeugungsverarbeitung, die zugeordnet wird, wenn der Kanal zur aktuellen Tonerzeugungsverarbeitung noch in Verwendung und daher für die neue Tonerzeugungsverarbeitung nicht verfügbar ist. Als das für den Tonerzeugungskanal zu verwendende Tongeneratorregister wird das Primärtongeneratorregister bis zu einer vorbestimmten Zeit ausgewählt, bei der die neue Tonerzeugungsverarbeitung gestartet wird, und das Sekundärtongeneratorregister wird nach der Zeit zum Starten der neuen Tonerzeugungsverarbeitung ausgewählt.
- Durch diese Maßnahme 2 Kann, auch wenn eine neue Tonerzeugungsverarbeitung einem der Tonerzeugungskanäle zugeordnet wurde, der für die aktuelle Tonerzeugungsverarbeitung noch in Verwendung ist, die neue Tonerzeugungsverarbeitung im Sekundärtongeneratorregister sofort zur Verfügung gestellt oder vorbereitet werden, während eine weitere Ausführung der aktuellen Tonerzeugungsverarbeitung im das Primärtongeneratorregister verwendenden Kanal sichergestellt ist. Auf diese Weise ist es möglich, eine Zeitverzögerung bei der Tondatenerzeugung zu verhindern, die sonst aus einer Zeitverzögerung beim Vorbereiten der neuen Tonerzeugungsverarbeitung entstehen würde.
- Nach dieser Maßnahme werden im RAM 5 mehrere Ausgabepuffer vorgesehen, und eine Reproduktion aus einigen der Ausgabepuffer wird im Ausgabegerät vor der Aktivierung des Tongeneratorabschnitts reserviert. Auch wenn der Tongeneratorabschnitt daran gehindert wird, entsprechend zur vorbestimmten Aktivierungszeit erzeugt zu werden, können Töne ohne merkliche Unterbrechung im Strom erzeugter Töne reproduziert werden, solange der Tongeneratorabschnitt aktiviert und die Reproduktion aus einem anderen Ausgabepuffer reserviert wird, bevor die zuvor reservierte Reproduktion aus den Ausgabepuffern abgeschlossen ist. Diese Maßnahme erweitert so einen akzeptablen Bereich einer Zeitverzögerung bei der Aktivierung des Tongeneratorabschnitts, wodurch ein Bruch in einem Strom erzeugter Töne vermieden werden kann.
- Fig. 7 ist ein Diagramm, das beispielhafte Details der Maßnahme 3 veranschaulicht, wonach eine Reproduktion aus vier Ausgabepuffern im Ausgabegerät vor der Aktivierung des Tongeneratorabschnitts reserviert wird. Die Anzahl reservierter Ausgabepuffer am Anfang des Rahmens F1 ist "3", da nun die Reproduktion aus einem der vier Ausgabepuffer im vorhergehenden Rahmen abgeschlossen wurde. Doch wird im Rahmen F1 die Anzahl reservierter Ausgabepuffer auf "4" erhöht, weil die Erzeugung der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" abgeschlossen und die Reproduktion aus dem Ausgabepuffer reserviert wurde. Dann wird die Anzahl reservierter Ausgabepuffer nach dem Rahmen F1 auf "3" verringert, da nun die Reproduktion aus einem anderen der vier Ausgabepuffer abgeschlossen ist, doch wird während des nächsten Rahmens F2 die Anzahl reservierter Ausgabepuffer wieder auf "4" erhöht, da die Erzeugung der vorbestimmten Anzahl von in den nächsten Ausgabepuffer zu schreibenden Tondaten abgeschlossen ist und die Reproduktion aus diesem Ausgabepuffer reserviert wurde.
- Hiernach wird die Anzahl reservierter Ausgabepuffer am Ende des Rahmens F4 auf "1" verringert, da aufgrund einer Zeitverzögerung bei der Aktivierung des Tongeneratorabschnitts keine Tondaten erzeugt werden. Dann werden im Rahmen F5 die Tondaten aus dem letzten der reservierten Ausgabepuffer (d. h. dem während des Rahmens 2 reservierten Ausgabepuffer) reproduziert. Die Reproduktionsreservierung im Rahmen 2 ist mit einem dicken weißen Pfeil gekennzeichnet, während der Rahmen F5 durch eine Halbschraffur gekennzeichnet ist. Während F5 wird die Anzahl reservierter Ausgabepuffer auf "2" erhöht, weil die Bildung der "vorbestimmten Anzahl in einen Ausgabepuffer zu schreibender Tondaten" abgeschlossen und die Reproduktion aus dem Ausgabepuffer reserviert wurde. In ähnlicher Weise wird nach dem Rahmen 5 die Anzahl reservierter Ausgabepuffer in Reaktion auf den Abschluss der Erzeugung und das Erfolgen von Reproduktionsreservierungen erhöht bzw. verringert.
- In der oben beschriebenen Weise können, auch wenn der Tongeneratorabschnitt aufgrund eines Einflusses durch die andere Verarbeitung zu einer vorbestimmten Aktivierungszeit nicht entsprechend erzeugt wird, Töne ohne Verzögerung entsprechend reproduziert werden, solange der Tongeneratorabschnitt aktiviert wird und die Reproduktion aus einem anderen Ausgabepuffer entsprechend reserviert wird, bevor die vorherige reservierte Reproduktion aus den vier Ausgabepuffern abgeschlossen ist. Wenn die Erzeugung von in den nächsten Ausgabepuffer zu schreibenden Tondaten während eines bestimmten Rahmens abgeschlossen wird, wenn die Anzahl reservierter Ausgabepuffer "4" ist, erfolgt die Reproduktionsreservierung des Ausgabepuffers nur nach dem Abschluss der Reproduktion im Rahmen, so dass die Anzahl reservierter Ausgabepuffer "4" nicht übersteigt.
- Die Ausgabepuffer, die im RAM 5 zum Ausführen von Maßnahme 3 vorzusehen sind, sind unter anderem diejenigen zum Ausführen der Reproduktionsreservierung vor der Aktivierung des Tongeneratorabschnitts sowie einer zum Einschreiben von Tondaten, die vollständig vom Tongeneratorabschnitt erzeugt wurden, und ein oder mehrere Ersatzpuffer, die dann zum Einsatz kommen, wenn die Menge tatsächlich vom Tongeneratorabschnitt erzeugter Tondaten die "vorbestimmte Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" übersteigt. Die Gesamtzahl der Ausgabepuffer ist "6" im Beispiel von Fig. 7. Die Ersatzausgabepuffer können jedoch auch weggelassen werden, wenn die Tondatenerzeugung zwangsweise gestoppt wird, wenn die Menge der tatsächlich erzeugten Tondaten die "vorbestimmte Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" übersteigt. Insgesamt fünf Ausgabepuffer sind daher für das Beispiel von Fig. 7 genügend.
- Für den Fall, dass in einem vorbestimmten Zeitraum im Ausgabegerät kein Ausgabepuffer reserviert wird, werden Tondatenerzeugungsvorgänge, die zu diesem Zeitpunkt hätten abgeschlossen sein sollen, zwangsweise beendet, und neue arithmetische Erzeugungsvorgänge werden mit ursprünglich für diese Zeit geplanten Tondaten eingeleitet. Auch wenn die Reproduktionsreservierung nicht rechtzeitig erfolgen kann und daher zeitweise eine Unordnung bei den erzeugten Tönen verursacht wird, kann gemäß dieser Maßnahme eine stabile Tonerzeugung prompt wieder hergestellt werden, so dass das dabei entstehende Rauschen minimiert wird.
- Im Beispiel der Maßnahme 3 von Fig. 7 wird gezeigt, wie eine Reproduktionsreservierung des Ausgangspuffers, in dem vom Tongeneratorabschnitt erzeugte Tondaten gespeichert sind, für jeden Ausgabepuffer, der zuvor im Ausgabegerät reserviert wurde, bis zu der Zeit erfolgt, da eine Reproduktion abgeschlossen wurde. In dem Fall jedoch, dass die Aktivierung des Tongeneratorabschnitts durch einen Einfluss der anderen Verarbeitung beträchtlich verzögert wird, ist es möglich, dass die Reproduktionsreservierung des Ausgabepuffers, in dem vom Tongeneratorabschnitt erzeugte Tondaten gespeichert sind, auch nicht in einem Rahmen rechtzeitig erfolgt, in dem die Reproduktion aus jedem zuvor reservierten Ausgabepuffer abgeschlossen ist (d. h. wenn die Anzahl reservierter Ausgabepuffer auf "0" verringert wurde). In einem solchen Fall werden durch kombiniertes Anwendung von Maßnahme 3 und Maßnahme 4 arithmetische Erzeugungsvorgänge von Tondaten, die hätten abgeschlossen sein sollen, bevor die Anzahl reservierter Ausgabepuffer "0" wurde, zwangsweise beendet, eine weitere Pufferreservierung wird im Ausgabegerät vorgenommen, und die neuen arithmetischen Erzeugungsvorgänge werden mit Tondaten eingeleitet, die ursprünglich für diese Zeit eingeplant waren.
- Anhand von Fig. 8 bis 25 folgt nun eine detaillierte Beschreibung eines Betriebsbeispiels des Tongeneratorsystems unter Verwendung von Computersoftware, die zum Ausführen der oben erwähnten Maßnahmen ausgelegt ist. Zuerst folgt eine Beschreibung einer Ausführungsform, die der Systemkonfiguration von Fig. 1 entspricht (d. h. eine Ausführungsform, die den unechten MIDI-Treiber verwendet).
- Fig. 8 ist ein Flussdiagramm einer Hauptroutine des Software-Tongeneratormoduls SSM, das von der CPU 3 von Fig. 1 ausgeführt wird. Zuerst wird bei Schritt S1 ein Initialisierungsvorgang durchgeführt, der beinhaltet, dass Daten gelöscht werden, die in den Tongeneratorregistern für alle Tonerzeugungskanäle gespeichert wurden (das sind das Primär- und das Sekundärtongeneratorregister, die vorher im Zusammenhang mit Maßnahme 2 erwähnt wurden), sowie bei Schritt S21 von Fig. 9 Daten, die im Arbeitsbereich des RAM 5 (das sind die Ausgabepuffer, die vorher im Zusammenhang mit Maßnahme 3 erwähnt wurden) gespeichert sind. Dann werden bei Schritt S22 von Fig. 9 auf der Festplattenvorrichtung 10 gespeicherte Wellenformdaten in den RAM 5 geladen. Hiernach wird bei Schritt S23 das Ausgabegerät initialisiert und bei Schritt S24 wird, wie schon im Zusammenhang mit Maßnahme 3 erwähnt, vor der Aktivierung des Tongeneratorabschnitts im Ausgabegerät eine Reproduktion aus den gelöschten Ausgabepuffern (hier "vier" Ausgabepuffer, wie im Beispiel von Fig. 7) reserviert. Dann wird bei Schritt S25 das Ausgabegerät vom D/A- Wandler 12 aktiviert, der einen Reproduktionsabtastzeitgeberpuls erzeugt und ihn an die DMA-Steuerung 11 weiterleitet, und der Software-Zeitgeber wird zum Erzeugen eines internen Unterbrechungssignals zum Aktivieren des Tongeneratorabschnitts aktiviert. Zum Beispiel ist der Software-Zeitgeber so ausgelegt, dass ein internes Unterbrechungssignal von der CPU 3 erzeugt wird, das auf einen Hardware-Zeitgeber verweist.
- Wie weiter oben im Zusammenhang mit Maßnahme 1 erwähnt, kann der Software-Zeitgeber interne Unterbrechungssignale (Aktivierbefehle) zu mehreren Zeitabstimmungs- bzw. Aktivierungszeiten in jedem der Rahmen erzeugen (es wird hier angenommen, dass interne Unterbrechungssignale in jedem Rahmen mit einer Länge von 100 Millisekunden zehn Mal erzeugt werden können, d. h. in Abständen von 10 Millisekunden, wie das in den Beispielen von Fig. 5, 6 und 16 gezeigt ist). Wie oben erläutert, wird das interne Unterbrechungssignal vom Software-Zeitgeber nicht notwendigerweise zu jeder Aktivierungszeit (d. h. alle 10 Millisekunden) erzeugt. Wenn die CPU 3 nämlich durch eine Verarbeitung durch das Betriebssystem oder durch eine andere Softwareverarbeitung beansprucht ist, kann das interne Unterbrechungssignal (Aktivierbefehl) auch dann nicht erzeugt werden, wenn die Aktivierungszeit kommt. Gemäß der Ausführungsform wird daher immer dann ein Zeitgeberflag gesetzt, wenn der Zeitgeber 2 das Überschreiten einer vorgegebenen Zeitlänge misst, die einer Aktivierungszeit (z. B. 10 Millisekunden) entspricht. Ein aktueller Zustand des Zeitgeberflags wird überprüft, wenn die CPU 3 für die Verarbeitung des Software-Tongenerators verfügbar ist, so dass das Unterbrechungssignal entsprechend dem aktuellen Zustand des Flags erzeugt wird. Wenn der Flag anzeigt, dass die nötige Tonerzeugungsverarbeitung unausgeführt geblieben ist, wird das interne Unterbrechungssignal (Aktivierbefehl) erzeugt, und der Flag wird neu gesetzt. Es wird daher ein internes Unterbrechungssignal immer dann erzeugt, wenn festgestellt wird, dass die CPU 3 zur Verarbeitung des Software-Tongenerators während des vorbestimmten Zeitraums zur Verfügung steht, der einer Aktivierungszeit (z. B. 10 Millisekunden) entspricht. Immer wenn jedoch festgestellt wird, dass die CPU 3 während des vorbestimmten Zeitraums, der einer Aktivierungszeit (z. B. 10 Millisekunden) entspricht, nicht zum Verarbeitung des Software-Tongenerators zur Verfügung steht, überprüft die CPU 3 nicht den Zeitgeberflag, und daher vergeht die vorbestimmte Zeit, ohne dass ein internes Unterbrechungssignal erzeugt worden wäre, und dann wird ein nächster Flag gesetzt. Das heißt, in Reaktion auf den vorhergehenden Flag wird kein internes Unterbrechungssignal erzeugt.
- Auf diese Weise wird das interne Unterbrechungssignal (Aktivierbefehl) nicht notwendigerweise zu jeder Aktivierungszeit erzeugt, wie das in Fig. 5, 6 und 16 gezeigt ist. Außerdem sind, wie das aus dem Vorhergehenden zu ersehen ist, die Intervalle zwischen den internen Unterbrechungssignalen, die aufeinander folgend zu mehreren Aktivierungszeiten erzeugt werden, nicht immer genau auf die vorbestimmte Zeitlänge (z. B. 10 Millisekunden) festgelegt, sondern können auch etwas kürzer oder länger als 10 Millisekunden sein. Denn die genaue Erzeugungszeitabstimmung des internen Unterbrechungssignals (Aktivierbefehls) hängt von der Verarbeitungsbedingung der CPU 3 ab (d. h. davon, wann die CPU 3 den Zeitgeberflag überprüft).
- Um noch einmal auf Fig. 8 zurückzukommen, nach dem Initialisierungsvorgang wird bei Schritt S2 auf der Anzeige 9 ein (nicht dargestelltes) Dialogfenster angezeigt zum Anzeigen von verschiedener Information, die sich auf das Fortschreiten der Verarbeitung bezieht und die der Benutzer oder die Bedienperson zum Eingeben von verschiedenen Steuerdaten mit der Maus 7 verwenden kann. Da die Reproduktion aus mehreren Ausgabepuffern durch die Initialisierung (Fig. 9) vor der Aktivierung des Tongeneratorabschnitts im Ausgabepuffer reserviert wird, führt das Ausgabegerät zuerst die Reproduktion der zuvor reservierten vier Ausgabepuffer durch und dann die Reproduktion von Ausgabepuffern, die danach vom Tongeneratorabschnitt reserviert wurden. Die auf gelieferte MIDI-Nachrichten ansprechende Tonreproduktion wird daher um eine Gesamtzeitlänge derjenigen Rahmen verzögert, die der Anzahl der zuvor reservierten Ausgabepuffer entspricht (vier Rahmen im Beispiel von Fig. 7). In einem Fall, wo Information, die auf einer gelieferten MIDI-Nachricht beruht, auf dem Dialogfenster der Anzeige 9 präsentiert wird, ist es wünschenswert, die Anzeigezeitabstimmung durch die Gesamtzeitlänge der Rahmen zu verzögern, die der Anzahl der zuvor reservierten Ausgabepuffer entspricht.
- Bei Schritt S3, der auf Schritt S2 folgt, überprüft die Hauptroutine das Auftreten der folgenden Aktivierungs- oder Auslösefaktoren:
- Auslösefaktor 1: Liefern einer MIDI-Nachricht über die API des Software- Tongeneratormoduls (z. B. die "SGM MIDI out API", die im Folgenden als eine "Software-Tongenerator-API" bezeichnet wird); nämlich das Liefern einer MIDI-Nachricht von der Anwendung APS1 oder APS2 (siehe Fig. 1);
- Auslösefaktor 2: Erzeugen durch den Softwarezeitgeber eines internen Unterbrechungssignals, das den Tongeneratorabschnitt aktiviert (auch wenn die Einstellung so ist, dass das interne Unterbrechungssignal in vorbestimmten Intervallen, d. h. 10 Millisekunden, erzeugt wird, wird es nicht notwendigerweise genau zu den vorbestimmten Intervallen erzeugt);
- Auslösefaktor 3: Erfassen einer Verarbeitungsanforderung vom Ausgabegerät;
- Auslösefaktor 4: Erfassen einer weiteren Anforderung, wie zum Beispiel ein Eingabeereignis auf dem Dialogfenster der Anzeige 9 oder ein Befehlseingabeereignis auf der Tastatur 8 (ausschließlich eines Hauptroutinenbeendigungsbefehls); und
- Auslösefaktor 5: Erfassen eines Eingabeereignisses eines Hauptroutinenbeendigungsbefehls auf der Tastatur 8.
- Nach Schritt S3, wird bei Schritt S4 entschieden, ob einer der oben erwähnten Auslösefaktoren aufgetreten ist oder nicht. Wenn die Antwort bei Schritt S4 negativ ist, geht die Hauptroutine zu Schritt S3 zurück, um die Vorgänge der Schritte 53 und 54 so lange zu wiederholen, bis einer der oben genannten Auslösefaktoren auftritt. Nach dem Auftreten eines der Auslösefaktoren erfolgt bei Schritt S4 eine positive Antwort, und die Hauptroutine geht zu Schritt S5 weiter, wo eine weitere Entscheidung dahingehend getroffen wird, welcher der Auslösefaktoren aufgetreten ist. Dann werden unterschiedliche Vorgänge durchgeführt, je nach dem, welcher Auslösefaktor erfasst wurde.
- Die folgenden Absätze beschreiben anhand von Fig. 17 und 18 beispielhafte Programme anderer Software, die den Auslösefaktor 1 hervorrufen können.
- Fig. 17 ist ein Flussdiagramm eines beispielhaften Programms des unechten MIDI-Treibers FMD von Fig. 1. Dieses Programm für den unechten MIDI-Treiber FMD wird ausgelöst, wenn eine MIDI-Nachricht von der Anwendungssoftware APS1 (Fig. 1) an die erste Schnittstelle IF1 (d. h. "MIDI API") des Betriebssystems (BS) geliefert wird. Angenommen, die von der Anwendungssoftware APS1 (Fig. 1) gelieferte MIDI-Nachricht enthält eine MIDI-Kanalnummerinformation, die einen der Kanäle 1- 16 angibt. Bei Schritt S220 wird ein Vorgang zum Umwandeln der MIDI-Kanalnummer in der an die erste Schnittstelle IF1 (d. h. "MiDI APf") gelieferten MIDI- Nachricht in eine Kanalnummer zwischen 17 und 36 durchgeführt. Dies geschieht deshalb, weil der Software-Tongenerator nach der Ausführungsform 36 Kanäle mit den Kanalnummern 1-36 (32 Teile) aufweist, von denen die Nummern 1-16 der Anwendungssoftware APS2 (Fig. 1), die dem Software-Tongenerator zugehörig ist, und die verbleibenden Kanalnummern 17 bis 36 der anderen Anwendungssoftware APS1 zugeteilt sind, welche die Verwendung des unechten MIDI-Treibers FMD beinhaltet. Deshalb kann, wenn der Software-Tongenerator lediglich im Zusammenhang mit der Anwendungssoftware APS1 unter Verwendung des unechten MIDI-Treibers FMD eingesetzt wird, die Durchführung von Schritt S220 ausgelassen werden.
- Beim nächsten Schritt S221 wird ein Vorgang zum Übertragen der MIDI- Nachricht, die über die erste Schnittstelle IF1 (d. h. "MIDI API") empfangen wurde und bei der die Kanalnummernumwandlung bei Schritt S220 durchgeführt wurde, an die Software-Tongenerator-API (API des Software = Tongeneratormoduls SSM) durchgeführt. Durch Erfassen der MIDI-Nachrichtenübertragung bestimmt das Software- Tongeneratormodul SSM, dass der oben genannte Auslösefaktor 1 aufgetreten ist.
- Fig. 18 ist ein Flussdiagramm eines Beispiels eines MIDI-Ereignisvorgangsprogramms in der Anwendungssoftware APS2 (Fig. 1), die dem Software- Tongenerator zugehörig ist. Dieser MIDI-Ereignisvorgang wird in Reaktion auf das Auftreten eines MIDI-Ereignisses während der Ausführung der Anwendungssoftware APS2 ausgelöst. Bei Schritt S230 wird ein Vorgang zum Eingeben einer MIDI- Nachricht, die sich auf das MIDI-Ereignis bezieht, in die Software-Tongenerator-API durchgeführt. Durch Erfassen der MIDI-Nachrichteneingabe stellt das Software- Tongeneratormodul SSM fest, dass der oben genannte Auslösefaktor 1 aufgetreten ist.
- In der oben genannten Weise tritt der Auslösefaktor 1 in Reaktion auf das Liefern einer MIDI-Nachricht von einer der zugeordneten Anwendungssoftwares APS2 und APS1 in Kombination mit dem Software-Tongenerator auf Betriebssystemebene auf. Der Software-Tongenerator führt die Tonerzeugungsverarbeitung auf der Grundlage der zwei Anwendungssoftwares durch entsprechendes Verwenden der 36 Kanäle aus.
- Die MIDI-Kanalnummernumwandlung kann in einer anderen Weise als der oben genannten durchgeführt werden. Zum Beispiel können die Kanäle der Nummern 1 bis 16 der Anwendungssoftware APS1 zugeordnet werden, wobei der unechte MIDI-Treiber FMD verwendet wird, während die verbleibenden Kanäle der Nummern 17 bis 36 der Anwendungssoftware APS2 zugeordnet werden, die wiederum dem Software-Tongenerator zugehörig ist. In einem solchen Fall wird die MIDI-Kanalnummernumwandlung, die bei Schritt S220 von Fig. 17 gezeigt ist, unter Verwendung des Programms von Fig. 18 durchgeführt.
- Um wieder auf Fig. 8 zurückzukommen, wenn bei Schritt S5 festgestellt wird, dass der Auslösefaktor 1 (d. h. das Liefern einer MIDI-Nachricht) stattgefunden hat, wird bei Schritt S6 der MIDI-Vorgang durchgeführt, und eine vorbestimmte Sichtanzeige der empfangenen Nachrichtdaten, wie zum Beispiel von Daten, die anzeigen, für welchen der MIDI-Kanäle die MIDI-Nachricht geliefert wurde, erfolgt bei Schritt S7 auf dem Anzeigedialogfenster. Hiernach geht die Hauptroutine zu Schritt S3 zurück, um die oben genannten Vorgänge bei und nach Schritt S3 zu wiederholen.
- Der MIDI-Vorgang bei Schritt S6 umfasst einen Noten-Einschalt-Ereignis- Vorgang und einen Noten-Ausschalt-Ereignis-Vorgang auf der Grundlage von Noten- Einschalt- und Noten-Ausschalt-Ereignisdaten. Fig. 10 ist ein Flussdiagramm, das ein Beispiel des Noten-Einschalt-Ereignis-Vorgangs zeigt. Zuerst werden bei Schritt S31 Daten, welche die Notennummer und die Geschwindigkeit des Noten-Einschalt- Ereignisses, die Stimmnummer einer auszuführenden Stimme, die mit dem Noten- Einschalt-MIDI-Kanal zusammenhängt, sowie die Geschehenszeit des Noten- Einschalt-Ereignisses in entsprechenden Registern NN, VEL, p und TM gespeichert. Beim nächsten Schritt S32 wird auf der Grundlage des Noten-Einschalt-Ereignisses einer der Tonerzeugungskanäle der Tonerzeugung zugewiesen, und die Nummer des zugewiesenen Kanals wird im Register i gespeichert. Dann werden bei Schritt S33 Stimmdaten mit der Klangfarbe, die für die Stimmennummer ausgewählt wurde, die im Register p gespeichert ist, aus dem RAM 5 ausgelesen und dann in Steuerparameter umgewandelt (einschließlich einer die Tonhöhe angebenden Frequenzzahl FN) zum Steuern des Tongeneratorabschnitts in Übereinstimmung mit der Notennummer und -geschwindigkeit, die in den Registern NN, VEL (Fig. 2) gespeichert sind.
- Dann werden beim nächsten Schritt S34 die Steuerparameter zusammen mit den Noten-Einschalt-Ereignisdaten und der Ereignisgeschehenszeit im Register TM in das Tongeneratorregister für den Tonerzeugungskanal derjenigen Kanalnummer gespeichert, die durch das Register i angegeben ist, damit so Noten-Einschalt- Vorgänge für eine Zeitabstimmung, die der Geschehenszeit entspricht, reserviert werden.
- Die Gründe für das Speichern der Ereignisgeschehenszeit aus dem Register TM in das Tongeneratorregister sind wie folgt. Wie schon erwähnt, kann eine Zeitdifferenz, die ungefähr vier Rahmen entspricht, zwischen der Noten-Einschalt-Ereignis- Geschehenszeit und der Zeit bestehen, bei der die Tonreproduktion auf der Grundlage des Noten-Einschalt-Ereignisses tatsächlich eingeleitet wird. Das heißt, dass der Start der Tonreproduktion um die Zeit verzögert wird, die ungefähr vier Rahmen entspricht. Es genügt, wenn die Tonerzeugungsverarbeitung (die der werter unten beschriebenen "Tongeneratorverarbeitung I" entspricht) entsprechende Tondaten zu einer beliebigen Zeitabstimmung innerhalb eines Bereichs der Zeitdifferenz erzeugt. Das bedeutet, dass eine Verarbeitungszeitverzögerung in diesem Bereich toleriert wird. Ohne Wissen der Noten-Einschalt-Ereignis-Geschehenszeit kann die Tonerzeugungsverarbeitung, die zu einer beliebig zu wählenden Zeit, die sich von der Geschehenszeit unterscheidet, die entsprechenden Tondaten nicht erzeugen.
- In dem Fall, dass der fragliche Tonerzeugungskanal in Verwendung ist, speichert Schritt S34 die Steuerparameter in das Sekundärtongeneratorregister und nicht in das Primärtongeneratorregister, wie zuvor im Zusammenhang mit Maßnahme 2 beschrieben. Auf diese Weise kann die Tonerzeugungsverarbeitung sofort im Sekundärtongeneratorregister vorbereitet werden, während eine fortwährende Ausführung der aktuellen Tonerzeugungsverarbeitung im Tonerzeugungskanal unter Verwendung des Primärtongeneratorregisters sichergestellt ist. In dem Fall, dass die Steuerparameter in dem Sekundärtongeneratorregister gespeichert werden, wird eine Reservierung in einem vorbestimmten Reservierungsbereich des Primärtongeneratorregisters zum Dämpfen (schnelle Dämpfung einer Tonlautstärkehülle) zu einer Zeit vorgenommen, die der im Register TM gespeicherten Geschehenszeit entspricht.
- Bei dem Schritt S34 folgenden Schritt S35 wird eine Rechenfolge über alle Tonerzeugungskanäle, die der Tonerzeugung zugeordnet wurden, so gesetzt, dass die Tonerzeugungsberechnung mit dem Kanal beginnt, der zum Erzeugen eines Tons der letzten Noten-Einschalt-Geschehenszeit zugeordnet wurde, und mit dem Kanal endet, der zum Erzeugen eines Tons der frühesten Noten-Einschalt- Geschehenszeit zugeordnet wurde, d. h. der Kanal, der zum Erzeugen eines Tons der letzten Noten-Einschalt-Geschehenszeit zugeordnet wurde, hat Priorität vor den anderen Kanälen in der Tonerzeugungsberechnung. Nach Schritt S35 kehrt die CPU zur Hauptroutine zurück.
- Fig. 11 ist ein Flussdiagramm, das ein Beispiel des Noten-Ausschalt-Ereignisvorgangs veranschaulicht. Beim ersten Schritt S41 werden Daten, welche die Notennummer des Noten-Ausschalt-Ereignisses, für die Spielstimme ausgewählte Klangfarbe, die dem Noten-Ausschalt-MIDI-Kanal zugeordnet ist, und die Geschehenszeit des Noten-Ausschalt-Ereignisses angeben, in entsprechenden Registern NN, 1 und TM gespeichert. Dann wird bei Schritt S42 eine Suche durchgeführt nach einem der Tonerzeugungskanäle, die dem Erzeugen eines Tons zugeordnet wurden, wobei die Klangfarbe im Register t gespeichert wurde, und seine Kanalnummer (CH No.) wird im Register i gespeichert. Hiernach wird in einem vorbestimmten Reservierungsbereich entweder des ersten oder des Sekundärtongeneratorregisters für den Tonerzeugungskanal der im Register i (CHi) gespeicherten Nummer für Noten- Ausschalt-Vorgänge bei einer Zeitabstimmung, die der bei Schritt S43 im Register TM gespeicherten Geschehenszeit entspricht, eine Reservierung vorgenommen.
- Um wieder auf Schritt S5 von Fig. 8 zurückzukommen, wenn der Auslösefaktor 2 (d. h. Erzeugung durch den Softwarezeitgeber eines internen Unterbrechungssignals, das den Tongeneratorabschnitt aktiviert) aufgetreten ist, führt die CPU 3 bei Schritt 8 "Tongeneratorverarbeitung I" aus und geht zu Schritt S9, um vorbestimmte Bedingungen auf dem Dialogfenster der Anzeige visuell darzustellen, wie zum Beispiel die Rechenfähigkeit der CPU 3 und den Lautstärkepegel eines jeden erzeugten Tons. Dann geht die CPU 3 zum Schritt S3 zurück, um die Vorgänge bei und nach Schritt S3 zu wiederholen.
- Die Tongeneratorverarbeitung I bildet einen Teil des oben genannten Tongeneratorabschnitts. Wie im Einzelnen in Fig. 12 gezeigt, subtrahiert die CPU 3 beim ersten Schritt S50 von einer aktuellen 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 ein Verzögerungsmaß OR (dieses Maß OR repräsentiert eine Menge von Tondaten, die durch den aktuellen Zeitabschnitt noch nicht erzeugt wurden, obwohl sie schon hätten erzeugt werden sollen, was in einer entsprechenden Zeitlänge ausgedrückt wird). Beim nächsten Schritt S51 wird eine zu erzeugende Menge SR in Abhängigkeit vom Verzögerungsmaß OR bestimmt (wobei die zu erzeugende Menge in einer Zeitlänge von Zielnummern von Abtastwerten von Tondaten, von Daten, die durch die aktuelle Aktivierung erzeugt werden sollen, die einer Zielnummer von Abtastwerten von durch die aktuelle Aktivierung des Tongeneratorabschnitts zu erzeugenden Tondaten entsprechen, ausgedrückt wird).
- Fig. 19 ist eine Kurvendarstellung, die ein Beispiel einer charakteristischen Kurve dieser Funktion zeigt. In diesem Beispiel wird die zu erzeugende Menge SR auf 10 Millisekunden gesetzt (was einem Zehntel der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" entspricht), wenn das Verzögerungsmaß OR kleiner als ein vorbestimmter Wert ist. Wenn jedoch das Verzögerungsmaß OR einen bestimmten Wert übersteigt, wird sie allmählich immer größer, während das Maß OR steigt. Nachdem dann die zu bildenden Menge SR einen vorbestimmten oberen Grenzwert SRmax in einem solchen Bereich erreicht hat, wodurch sichergestellt wird, dass die Tonerzeugungsverarbeitung nicht zu viel Zeit in Anspruch nimmt, wird die Menge SR unabhängig von einem weiteren Ansteigen des Verzögerungsmaßes OR am oberen Grenzwert SRmax gehalten. Der obere Grenzwert SRmax kann zum Beispiel 20 Millisekunden oder ein anderer geeigneter Wert sein.
- Fig. 20 ist eine Kurvendarstellung eines weiteren Beispiels der charakteristischen Kurve der Funktion. Bei diesem Beispiel ist die zu bildende Menge SR 10 Millisekunden, wenn das Verzögerungsmaß OR kleiner als ein vorbestimmter Wert ist, wenn jedoch das Verzögerungsmaß OR einen bestimmten Wert übersteigt, wird sie schrittweise größer, während das Maß OR ansteigt. Nachdem dann die zu bildenden Menge SR in einem solchen Bereich einen vorbestimmten oberen Grenzwert SRmax erreicht hat, wodurch sichergestellt wird, dass die Tonerzeugungsverarbeitung nicht zu viel Zeit in Anspruch nimmt, wird unabhängig von einem weiteren Ansteigen des Verzögerungsmaßes OR die Menge SR beim oberen Grenzwert SRmax gehalten.
- Es wird darauf hingewiesen, dass die zu bildende Menge SR, die in der oben beschriebenen Weise gesetzt wird, nicht immer einen Wert einer ganzzahligen Vielfachen von 10 Millisekunden annimmt, sondern auch einen Wert einer Vielfachen von 10 Millisekunden plus einem Bruchteil annehmen kann. Das führt dazu, dass die Menge von Tondaten, die durch eine Ausführung der "Tongeneratorverarbeitung I" erzeugt werden, nicht notwendigerweise eine exakte ganzzahlige Vielfache eines Zehntels der "vorbestimmten Anzahl von in einen Ausgabespeicher zu schreibenden Tondaten" (einer verarbeiteten Einheit) ist, sondern auch eine Menge sein kann, die einer Vielfachen von 10 Millisekunden plus einem Bruchteil entspricht, wie das zuvor im Zusammenhang mit dem Beispiel von Fig. 16 erläutert wurde. Die Tongeneratorverarbeitung I von Fig. 12 führt die Tonerzeugungsverarbeitung in einer Weise aus, wie sie in Fig. 16 gezeigt ist. Auch wenn das interne Unterbrechungssignal (Aktivierbefehl) an einigen der vorbestimmten Punkte in einem Rahmen nicht erzeugt wird, kann daher die "vorbestimmte Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" lediglich durch die Vorgänge, die zu anderen Aktivierungszeiten ausgeführt werden, wenn das interne Unterbrechungssignal tatsächlich erzeugt wird, in effizienter Weise vollständig erzeugt werden. Durch dieses Verfahren wird eine unerwünschte Störung nicht nur der Tonerzeugungsverarbeitung, sondern auch anderer Verarbeitung zuverlässig vermieden.
- Bei Schritt S52, der auf den Schritt S51 folgt, wird in einem der Ausgabepuffer, die nicht im Initialisierungsvorgang reserviert wurden, ein bei einer Zeit ST beginnender Tonerzeugungsbereich für die zu bildende Menge SR gesetzt. Der nächste Schritt S53 setzt eine spezifische Anzahl der zum Erzeugen von Tondaten zu verwendenden Tonerzeugungskanäle. Als ein Beispiel kann die Anzahl der zum Erzeugen von Tondaten zu verwendenden Tonerzeugungskanäle in Abhängigkeit des Verzögerungsmaßes OR bestimmt werden. Fig. 21 ist eine Kurvendarstellung, die ein Beispiel einer charakteristischen Kurve dieser Funktion darstellt. Gemäß diesem Beispiel wird, wenn das Verzögerungsmaß OR unter einem vorbestimmten Wert ist, die Anzahl CHmax der Kanäle, die in dem Noten-Einschalt-Vorgang von Fig. 10 zugewiesen wurden, direkt als die Zahl der zum Erzeugen von Tondaten zu verwendenden Tonerzeugungskanäle gesetzt. Wenn das Verzögerungsmaß OR nicht unter einem vorbestimmten Wert ist, dann wird die Anzahl der zum Erzeugen von Tondaten zu verwendenden Tonerzeugungskanäle so gesetzt, dass sie kleiner als die Zahl der zugeteilten Kanäle CHmax ist, so dass es möglich ist, die für eine Durchführung der Tonerzeugungsverarbeitung nötige Zeit zu verringern.
- Beim nächsten Schritt S54 wird die Kanalnummer desjenigen Tonerzeugungskanals, dem der ersten Platz in der bei Schritt S35 des Noten-Einschalt-Ereignisvorgangs gesetzten Rechenfolge gegeben wurde, im Register i gespeichert, und der Startzeiger sp wird auf die letzte Eingabezeit ST gesetzt. Hiernach wird bei einem Schritt S55 innerhalb eines Zeitraums vom Startzeiger sp zur aktuellen Zeit GT durch Bezugnahme auf den Reservierungsbereich im Primärtongeneratorregister für den durch das Register i angegebenen Tonerzeugungskanal eine erste Reservierung (wie zum Beispiel eine Reservierung für Tonhöhenbiegung, Noten-Aus oder Dämpfung) erfasst. Dann wird bei Schritt S56 eine weitere Entscheidung darüber getroffen, ob eine Reservierung erfasst wurde oder nicht.
- Wenn bei Schritt S56 die Antwort positiv ist, wird die Tonerzeugungsverarbeitung bis zu der Zeit der erfassten Reservierung durchgeführt und der Startzeiger sp bei Schritt S57 zum Zeigen auf diese Zeit weiter gerückt. Wie oben erläutert, liest die Tonerzeugungsverarbeitung Wellenformdaten mit einer Geschwindigkeit aus dem RAM 5 aus, die den im Tongeneratorregister gespeicherten Steuerparametern entspricht. Die ausgelesenen Wellenformdaten werden dann bezüglich der Klangfarbe (arithmetischer Filtervorgang), der Lautstärke (Multiplikation mit Tonlautstärkehüllendaten), der Modulation der Tonhöhe, der Farbe, der Lautstärke und der Effektbearbeitung in Übereinstimmung mit den Steuerparametern gesteuert, damit so die Tondaten erzeugt werden. Die dabei entstehenden erzeugten Tondaten werden akkumulativ zu den bisher im Ausgabepuffer gespeicherten Daten hinzugefügt.
- Beim nächsten Schritt S58 wird der Inhalt der erfassten Reservierung in einem der Tongeneratorregister gespeichert, damit so der reservierte Inhalt ausgeführt werden kann. Wenn zum Beispiel die erfasste Reservierung Noten-Ausschalt-Vorgänge betrifft, werden die Noten-Ausschalt-Ereignisdaten im Primärtongeneratorregister für den Tonerzeugungskanal gespeichert, damit so ein Auslösender Tonlautstärkehülle gestartet wird. Wenn die erfasste Reservierung ein Dämpfen betrifft, wird nach dem Abschluss der Dämpfung, d. h. nachdem der Tonlautstärkenhüllenpegel unter einen vorbestimmten Pegel gefallen ist, das für die Tonerzeugung zu verwendende Register vom ersten auf das zweite Register geändert, wie das zuvor im Zusammenhang mit Maßnahme 2 erläutert wurde. Umgekehrt kann die Dämpfung am Primärtongeneratorregister durchgeführt werden, nachdem das für den Tonerzeugungskanal zu verwendende Tongeneratorregister vom ersten zum zweiten Register geändert wurde. Wie zuvor im Zusammenhang mit Schritt S34 von Fig. 10 erläutert, wird in dem Fall, dass die Steuerparameter, Noten-Einschalt-Ereignisdaten und Noten-Einschalt- Ereignis-Geschehenszeit im Sekundärtongeneratorregister gespeichert wurden, im Reservierungsbereich des Primärtongeneratorregisters zum Dämpfen zu einer bestimmten Zeit, die der im Register TM gespeicherten Geschehenszeit entspricht, eine Reservierung vorgenommen. Entsprechend werden, nachdem die Zeit, die der im Register TM gespeicherten Geschehenszeit entspricht, eingetroffen ist, nach der Dämpfung mit der Tonerzeugungsverarbeitung unter Verwendung des Sekundärtongeneratorregisters begonnen.
- Nach Schritt S58 geht die CPU 3 zurück zum Schritt S55 zum Wiederholen der Vorgänge bei und nach Schritt S55.
- Wenn bei Schritt S56 die Antwort negativ ist, d. h. wenn keine Reservierung erfasst wurde, oder nachdem die Entscheidung aufgrund der Vorgänge der Schritt S57 und 558 negativ gefällt wurde, wird bei Schritt S59 in dem vom Register i benannten Kanal für den Zeitraum vom Startzeiger sp zur aktuellen Zeit GT die Tonerzeugungsverarbeitung durchgeführt. Hierdurch wird das Schreiben von Tondaten in den Tonerzeugungsbereich für die bei Schritt S52 zuvor im Ausgabepuffer gesetzte Menge SR abgeschlossen.
- Dann wird bei Schritt S60 entschieden, ob die Tonerzeugungsverarbeitung für alle Tonerzeugungskanäle abgeschlossen wurde, die bei Schritt S53 gesetzt wurden. Wenn die Antwort bei Schritt S60 negativ ist, wird die Kanalnummer des Tonerzeugungskanals, welcher der nächste Platz in der Rechenfolge gegeben wurde, im Register i gespeichert, und der Startzeiger sp wird bei Schritt S61 auf die Eingabezeit ST gesetzt. Dann geht die CPU 3 zurück zum Schritt S55 zum Wiederholen der Vorgänge bei und nach Schritt S55. Wenn jedoch bei Schritt S60 die Antwort positiv ist, oder nachdem die Entscheidung aufgrund der Ausführung der Vorgänge bei und, nach Schritt S55 positiv wurde, beendet die CPU 3 die Tonerzeugungsverarbeitung und geht zum Schritt S62 weiter. In der oben erwähnten Weise werden Tondaten, die durch Sammeln der Tondaten der einzelnen Tonerzeugungskanäle (mit oder ohne gewünschte Effekte bearbeitet) erhalten wurden, akkumulativ in den Tonerzeugungsbereich für die Menge SR des Ausgabepuffers geschrieben. Wenn die Anzahl der verfügbaren Tonerzeugungskanäle, die von der CPU 3 festgestellt wurde, kleiner als die Anzahl der zugewiesenen Tonerzeugungskanäle ist, wird die Anzahl von Tonerzeugungskanälen, die zum simultanen Hervorbringen von Tönen verwendet werden, dadurch verringert, dass die Tonerzeugungsverarbeitung für einen oder mehrere Tonerzeugungskanäle, denen spätere Plätze in der Rechenfolge zugeteilt wurden, ausgelassen wird.
- Beim nächsten Schritt S63 wird die Startzeit ST, zu der die zu bildende Menge SR addiert wurde, als die neue Zeit ST gesetzt. Diese neue Zeit ST wird als Berechnungsstartpunkt für die nächste Durchführung der "Tongeneratorverarbeitung I" verwendet. Hiernach wird bei Schritt S64 die Stärke des Tonlautstärkepegels für den Tonerzeugungskanal, der dem aktuellen Noten-Ausschalt-Ereignis entspricht, allmählich auf null verringert. Beim nächsten Schritt S65 wird entschieden, ob eine Erzeugung der "vorbestimmten Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" abgeschlossen ist oder nicht. Wenn bei Schritt S65 die Antwort negativ ist, kehrt die CPU 3 zur Hauptroutine zurück. Wenn bei Schritt S65 die Antwort positiv wird, wird der Ausgabepuffer von den anderen Ausgabepuffern abgekoppelt, die in der "Tongeneratorverarbeitung II" mit diesem gekoppelt sind, wie weiter unten beschrieben wird, und ihre Reproduktion wird bei Schritt S66 im Ausgabegerät reserviert. Hiernach kehrt die CPU 3 zur Hauptroutine zurück. Der Vorgang von Schritt S66 entspricht der Ausgabe von durch den Softwaretongenerator SSM in Fig. 1 oder 2 erzeugten Tondaten an die zweite Schnittstelle IF2 ("WAVE out API") des Betriebssystems.
- Die Vorgänge von Schritten S50 und S51 können dahin gehend modifiziert werden, dass das Ergebnis der Subtraktion "GT - ST" direkt als die Menge SR gesetzt werden kann. In diesem Fall werden, wenn der Tongeneratorabschnitt aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals an einem der vorbestimmten Punkte nicht aktiviert wird, alle zu dieser Zeit unerzeugt gebliebenen Tondaten beim nächsten der Punkte erzeugt, wenn das interne Unterbrechungssignal tatsächlich erzeugt wird, wie das im Beispiel der Maßnahme 1 von Fig. 5 der Fall ist. Daher kann, auch wenn das interne Unterbrechungssignal (Aktivierbefehl) an einigen der vorbestimmten Punkte in einem Rahmen nicht erzeugt wird, die "vorbestimmte Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" im gleichen Rahmen effizient erzeugt werden, indem einfach die Vorgänge an einem der anderen Punkte durchgeführt werden, wenn das interne Unterbrechungssignal tatsächlich erzeugt wird. Durch dieses Verfahren wird eine unerwünschte Störung der Tonerzeugung zuverlässig vermieden. Wie zuvor im Zusammenhang mit Maßnahme 1 erwähnt, können die unerzeugt gebliebenen Tondaten wie im Beispiel von Fig. 6 in verteilter Weise zu mehreren späteren Zeiten, wenn das interne Unterbrechungssignal tatsächlich erzeugt wird, oder am Ende der letzten Aktivierungszeit im gleichen Rahmen fortschreitend erzeugt werden.
- Als eine Modifikation des Vorgangs von Schritt S53 kann die Anzahl der Tonerzeugungskanäle auf die folgende Weise bestimmt werden. Zuerst wird auf der Grundlage einer zum Erzeugen der Menge SR von Tondaten in einem bestimmten Tonerzeugungskanal benötigten Zeit und einer aktuellen verfügbaren Rechenzeit EJ (d. h. einer Zeit, die durch Subtrahieren eines Rechenstartpunkts KJ, an dem das aktuelle interne Unterbrechungssignal tatsächlich erzeugt wurde, von einem Rechenendpunkt SJ, an dem das interne Unterbrechungssignal als nächstes erzeugt werden soll, ermittelt wird) festgestellt, wie viele der Tonerzeugungskanäle zum Erzeugen der Menge SR von Tondaten zur Verfügung stehen. Wenn die Anzahl der verfügbaren Tonerzeugungskanäle, die von der CPU 3 festgestellt wurde, nicht kleiner ist als die Anzahl von Tonerzeugungskanälen, die im Noten-Einschalt-Ereignisvorgang zugewiesen wurden, wird die Anzahl der zugewiesenen Tonerzeugungskanäle direkt als die zur Tondatenerzeugung zu verwendenden Kanäle gesetzt. Wenn jedoch die Anzahl der verfügbaren Tonerzeugungskanäle, die von der CPU 3 festgestellt wurden, kleiner als die Anzahl der zugewiesenen Tonerzeugungskanäle ist, wird die Anzahl der verfügbaren Tonerzeugungskanäle als die für die Tondatenerzeugung zu verwendenden Kanäle gesetzt. Wie schon im Zusammenhang mit Maßnahme 1 erwähnt, wird nämlich die "vorbestimmte Anzahl von in einen Ausgabepuffer zu schreibenden Tondaten" dadurch sichergestellt, dass die Anzahl der für die Tondatenerzeugung zu verwendenden Kanäle verringert wird.
- Um wieder auf den Schritt S5 von Fig. 8 zurückzukommen, wenn der Auslösefaktor 3 (d. h. das Erfassen einer Verarbeitungsanforderung vom Ausgabegerät) eingetreten ist, führt die CPU 3 bei Schritt S10 eine "Tongeneratorverarbeitung II" durch und geht zum Schritt S11, um so vorbestimmte Bedingungen auf dem Dialogfenster visuell anzuzeigen. Dann kehrt die CPU 3 zum Schritt S3 zurück und wiederholt die Vorgänge bei und nach Schritt S3.
- Die Tongeneratorverarbeitung II bildet auch einen Teil des Tongeneratorabschnitts und wird in Reaktion auf eine Anforderung ausgeführt, die durch Aktivieren des Ausgabegeräts (d. h. einen externen Unterbrechungsvorgang durch die DMA- Steuerung 11) erzeugt wird. Diese Tongeneratorverarbeitung II entspricht der Verarbeitung von Fig. 1 oder 2, die sich auf einen Tondatentransfer vom Software- Tongenerator SSM zur zweiten Schnittstelle IF2 ("WAVE out API") bezieht.
- Fig. 13 ist ein Flussdiagramm des externen Unterbrechungsvorgangs, der von der DMA-Steuerung 11 jedes Mal durchgeführt wird, wenn ein Abtastwert von Tondaten zum D/A-Wandler 12 gesendet wird, d. h. mit einer Reproduktionsabtastfrequenz des D/A-Wandlers 12. Durch diesen externen Unterbrechungsvorgang werden im Ausgabepuffer für einen Rahmen gespeicherte Tondaten in der Menge von einem Abtastwert pro Reproduktionsabtastzyklus aus dem Ausgabepuffer ausgelesen und an den D/A-Wandler 12 geliefert. Dies entspricht der Verarbeitung des Ausgabegeräts in Fig. 1 oder 2. Insbesondere entspricht dies der Verarbeitung des Ausgabegeräts, das die Tondaten über die zweite Schnittstelle IF2 ("WAVE out API") vom Software-Tongenerator SSM empfängt und sie dann an die externe Hardware oder den D/A-Wandler 12 ausgibt.
- Der erste Schritt S71 im externen Unterbrechungsvorgang liefert dem D/A- Wandler 12 einen Abtastwert von Tondaten, auf den der Zeiger pp zeigt und der aktuell aus einem der Ausgabepuffer ausgelesen wird, auf den der Zeiger PB zeigt. Dann wird der Zeiger pp bei Schritt S72 um eins inkrementiert, und bei Schritt S73 wird entschieden, ob alle Tondaten im Ausgabepuffer vollständig an den D/A- Wandler 12 geliefert wurden oder nicht, d. h. ob der nötige Reproduktionsvorgang für den Ausgabepuffer abgeschlossen ist. Wenn der Reproduktionsvorgang für den Ausgabepuffer noch nicht abgeschlossen ist, kehrt der Vorgang zur Hauptroutine zurück.
- Wenn jedoch bei Schritt S73 festgestellt wird, dass der Reproduktionsvorgang für den Ausgabepuffer abgeschlossen ist, wird bei Schritt S74 eine weitere Entscheidung darüber getroffen, ob ein anderer Ausgabepuffer zur Reproduktion reserviert ist. Dies entspricht dem Vorgang, bei dem das Ausgabegerät auf die zweite Schnittstelle IF2 ("WAVE out API") über das Betriebssystem zugreift, d. h. ein Vorgang, bei dem das Betriebssystem gebraucht wird.
- Auch wenn kein anderer Ausgabepuffer, in den vom Tongenerator erzeugte Tondaten geschrieben werden, reserviert ist, was daran liegt, dass die Aktivierung des Tongeneratorabschnitts durch den Einfluss einer anderen Verarbeitung verzögert wird, wird bei Schritt S74 eine positive Entscheidung getroffen, bis die Reproduktion aus allen schon reservierten Ausgabepuffern (diejenigen, die bei der Initialisierung von Fig. 9 oder bei der "Tongeneratorverarbeitung I" reserviert wurden) abgeschlossen ist. Bei einer solchen positiven Entscheidung bei Schritt S74 geht die DMA-Steuerung 11 zu Schritt S75 weiter, um den Pufferzeiger PB so zu setzen, dass er auf den anderen Ausgabepuffer zeigt. Wie zuvor im Zusammenhang mit Maßnahme 3 erläutert, kann dieses Verfahren einen akzeptablen Bereich der Zeitverzögerung beim Aktivieren der Tonerzeugungsverarbeitung ausdehnen, die eine unerwünschte Unterbrechung des Stroms erzeugten Töne vermeiden kann. Beim Schritt S76, der auf Schritt S75 folgt, wird eine Anforderung ausgesendet zur Rückkehr des Ausgabepuffers, für den die Reproduktion der Tondaten abgeschlossen wurde (Ausgabepuffer mit vollständiger Reproduktion), zur "Tongeneratorverarbeitung II". Dann kehrt das Verfahren zur Hauptroutine zurück.
- Wenn die Aktivierung des Tongeneratorabschnitts beträchtlich verzögert wird, kann eine Situation entstehen, bei der kein Ausgabepuffer, in den vom Tongenerator erzeugte Tondaten geschrieben wurden, sogar in einem bestimmten Rahmen, in dem die Reproduktion aus den reservierten Ausgabepuffern abgeschlossen ist, reserviert ist. In einem solchen Fall kommt es bei Schritt S74 zu einer negativen Entscheidung, so dass die DMA-Steuerung 11 zum Schritt S77 abzweigt, um die Ausgabesignale des D/A-Wandlers 12 auf stumm zu schalten, um so einen Rauschton zu vermeiden. Beim nächsten Schritt S78 wird eine Rücksetzanforderung zum Rücksetzen der Tonerzeugung an die "Tongeneratorverarbeitung II" ausgegeben. Dann kehrt das Verfahren zurück.
- Fig. 14 ist ein Flussdiagramm eines Beispiels der "Tongeneratorverarbeitung II", die auf der Grundlage der vom Ausgabegerät zurückgegebenen Rückgabeanforderung (Schritt S76 von Fig. 13) zurückgegeben wird. Die CPU 3 empfängt den vom Ausgabegerät zurückgegebenen Ausgabepuffer bei Schritt S81 und koppelt dann bei Schritt S82 den zurückgegebenen Ausgabepuffer mit dem Ende der schon nach dem Löschen des zurückgegebenen Ausgabepuffers vom Tongeneratorabschnitt besessenen Ausgabepuffern. Diese Kopplung führt dazu, dass die Ausgabepuffer im Wesentlichen in einer Reihe zusammengekoppelt werden, damit sie so wie ein einziger großer Puffer behandelt werden können. Hierdurch ist es nicht mehr nötig, diese Puffer in physisch benachbarten Bereichen des RAM 5 unterzubringen. Beim nächsten Schritt S83 werden Daten erzeugt, welche die Zeit angeben, bei der die Rückgabeanforderung ausgegeben wurde, um so den Betrieb des Tongeneratorabschnitts durch das Feststellen der Anwesenheit oder Abwesenheit einer Differenz der Betriebszeit zwischen dem Tongeneratorabschnitt und dem Ausgabegerät einzustellen. Nach Schritt S83 kehrt die CPU 3 zur Hauptroutine zurück.
- Fig. 15 ist ein Flussdiagramm eines Beispiels der "Tongeneratorverarbeitung II", die von der CPU 3 auf der Grundlage der vom Ausgabegerät ausgegebenen Rücksetzanforderung (Schritt S78 von Fig. 13) ausgeführt wird. Zuerst löscht die CPU 3 bei Schritt S91 alle Daten aus dem Tongeneratorregister für jeden der Tonerzeugungskanäle und aus den Ausgabepuffern im RAM 5. Dann wird wie bei den Schritten S23 bis S25 des Initialisierungsvorgangs von Fig. 9 das Ausgabegerät bei Schritt S92 initialisiert, die vier bei Schritt S91 gelöschten Ausgabepuffer werden bei Schritt S93 wieder zur Reproduktion reserviert, und bei Schritt S94 wird das Ausgabegerät aktiviert und der Softwarezeitgeber gestartet. Dann kehrt die CPU 3 zur Hauptroutine zurück.
- Bei der "Tongeneratorverarbeitung II" wird auf der Grundlage der Rücksetzanforderung, wenn im Ausgabegerät kein Ausgabepuffer reserviert ist, die Tonerzeugung, die bis dahin im Tonerzeugungsabschnitt durchgeführt wurde, zwangsweise beendet, und die Reproduktion aus dem gelöschten Ausgabespeicher wird im Ausgabegerät wieder reserviert, wie zuvor im Zusammenhang mit Maßnahme 4 erklärt.
- Dann wird eine neue Tonerzeugung dadurch eingeleitet, dass der Tongeneratorabschnitt auf der Grundlage einer weiteren hiernach gelieferten MIDI-Nachricht aktiviert wird. So wird, auch wenn die Reproduktionsreservierung nicht rechtzeitig erfolgt und bei der Tonerzeugung eine vorübergehende Unordnung entsteht, ein stabiler Tonerzeugungsbetrieb prompt wieder hergestellt und daher unerwünschtes Rauschen minimiert.
- Um wieder auf Schritt S5 von Fig. 8 zurückzukommen: Wenn festgestellt wird, dass der Auslösefaktor 4 aufgetreten ist, führt die CPU 3 bei Schritt S12 einen Vorgang aus, der auf die erfasste Anforderung anspricht, wie zum Beispiel einen Vorgang, der auf ein Eingabeereignis auf dem Dialogfenster der Anzeige 9 oder auf ein Befehls-Eingabeereignis auf der Tastatur 8 reagiert. Dann wird bei Schritt S13 eine weitere dem Vorgang entsprechende Information visuell auf dem Dialogfenster angezeigt. Hiernach geht die CPU 3 zu Schritt S3 zurück und wiederholt die Vorgänge bei und nach Schritt S3.
- Wenn schließlich der Auslösefaktor 5 (d. h. das Erfassen eines Hauptroutinen- Beendigungsbefehls auf der Tastatur 8) eingetreten ist, führt die CPU 3 bei Schritt S14 ein vorbestimmtes Verfahren zum Beenden der Hauptroutine aus, bewirkt, dass bei Schritt S15 das Dialogfenster von der Anzeige 9 verschwindet und kehrt dann zur Hauptroutine zurück.
- In dem Fall, dass bei Schritt S5 festgestellt wird, dass zwei oder mehr der oben erwähnten Auslösefaktoren simultan eingetreten sind, werden die Vorgänge bei und nach Schritt S5 durchgeführt, zum Beispiel in aufsteigender Reihenfolge der Faktornummern (d. h. vom Auslösefaktor 1 zum Auslösefaktor 5), außer dass die Auslösefaktoren 2 und 3 die gleiche Priorität haben. Die Schritte 53 bis 55 repräsentieren im Wesentlichen ein Task-Management in einer Pseudo-Multitasking- Verarbeitung. Wenn ein bestimmter Vorgang auf der Grundlage des Auftretens eines der Auslösefaktoren durchgeführt wird, kann der Vorgang aber durch das Auftreten eines weiteren Auslösefaktors einer höheren Priorität zum Ausführen eines anderen Vorgangs auch abgebrochen werden. Wenn zum Beispiel die "Tongeneratorverarbeitung I" in Reaktion auf das Auftreten des Auslösefaktors 2 durchgeführt wird, kann der MIDI-Vorgang aufgrund einer Unterbrechung durch den Auslösefaktor 1 ausgeführt werden.
- Wenn zum Beispiel der Auslösefaktor 4 oder der Auslösefaktor 5 auftritt, während die Tongeneratorverarbeitung I in Reaktion auf das Auftreten von Auslösefaktor 2 höherer Priorität ausgeführt wird, muss die auf den Auslösefaktor 4 oder Auslösefaktor 5 ansprechende Aktivierung so lange warten, bis eine Durchführung der Tongeneratorverarbeitung I, die auf den Auslösefaktor 2 erfolgte, abgeschlossen ist. Durch geeignetes Bestimmen der zu bildenden Menge SR pro Aktivierung in Abhängigkeit des Verzögerungsmaßes OR nach einer geeigneten Funktion, wie sie in Fig. 19 oder 20 gezeigt sind, kann jedoch eine Ausführung der Tongeneratorverarbeitung I, die in Reaktion auf den Auslösefaktor 2 geschieht, daran gehindert werden, zu viel Verarbeitungszeit in Anspruch zu nehmen, so dass es möglich ist, die Wahrscheinlichkeit zu verringern, dass eine auf eine niedrigere Priorität ansprechende Verarbeitung gestört wird.
- Es folgt eine Beschreibung einer Ausführungsform, die der Systemkonfiguration von Fig. 2 entspricht.
- In dem Fall, dass die Systemkonfiguration von Fig. 2 verwendet wird, kann das Software-Tongeneratormodul SSM auf den gleichen Programmen beruhen, wie sie für Fig. 8 bis 15 beschrieben wurden, und die gleichen Verfahren können eingesetzt werden, wie sie im Zusammenhang mit Fig. 16, 19 bis 21 beschrieben wurden. Die im Zusammenhang mit Fig. 17 und 18 beschriebenen Verfahren sind auf diesen Fall natürlich nicht anwendbar. Außerdem ist in dem Fall, dass die Systemkonfiguration von Fig. 2 verwendet wird, die Art und Weise, in der die Auslösefaktoren bei Schritt S3 von Fig. 8 überprüft werden, von der obigen verschieden. In diesem Fall wird nämlich das Auftreten der folgenden Auslösefaktoren überprüft:
- Auslösefaktor 1: Liefern einer MIDI-Nachricht über die "MIDI-API"-Schnittstelle (z. B. Liefern einer MIDI-Schnittstelle von der Anwendungssoftware APS1 (Fig. 2));
- Auslösefaktor 2: Erzeugen durch den Softwarezeitgeber eines internen Unterbrechungssignals, das den Tongeneratorabschnitt aktiviert;
- Auslösefaktor 3: Erfassen einer Verarbeitungsanforderung vom Ausgabegerät;
- Auslösefaktor 4: Erfassen einer weiteren Anforderung, wie zum Beispiel eines Eingabeereignisses auf dem Dialogfenster der Anzeige 9 oder eines Befehlseingabeereignisses auf der Tastatur 8 (außer eines Hauptroutine-Beendigungsbefehls); und
- Auslösefaktor 5: Erfassen eines Eingabeereignisses eines Hauptroutine- Beendigungsbefehls auf der Tastatur 8.
- Auslösefaktor 2 bis Auslösefaktor 5 sind die gleichen wird ihre Gegenstücke für den Fall, dass das System von Fig. 1 verwendet wird, der Auslösefaktor 1 ist jedoch anders.
- Wie vorher schon erwähnt, ist in dem Fall, dass die Systemkonfiguration von Fig. 2 verwendet wird, das Software-Tongeneratormodul SSM im Betriebssystem installiert und so programmiert, dass erkannt wird, dass eine MID1-Nachricht über die erste Schnittstelle IF1 ("MIDI API") des Betriebssystems geliefert wurde. Auf diese Weise wirkt das Software-Tongeneratormodul SSM, das selbst eine Anwendungssoftware ist, als ein Treiber im Betriebssystem und empfängt die von anderer Anwendungssoftware APS1 über die erste Schnittstelle IF1 ("MIDI API") gelieferte MIDI- Nachricht. Dann führt das Software-Tongeneratormodul SSM auf die oben genannte Weise die Tondatenerzeugungsvorgänge auf der Grundlage der empfangenen MIDI- Nachricht dadurch aus, dass die Tonerzeugungsverarbeitung in Reaktion auf das Erzeugen des internen Unterbrechungssignals (Aktivierbefehl) aktiviert wird. Die dabei erzeugten Wellenformdaten werden, wie oben erwähnt, Rahmen für Rahmen über die zweite Schnittstelle IF2 ("WAVE out API") des Betriebssystems ausgegeben.
- Es folgt eine Beschreibung einer Ausführungsform der vorliegenden Erfindung, die der Systemkonfiguration von Fig. 25 entspricht.
- Fig. 26 ist ein Flussdiagramm, das eine Hauptroutine eines Klangmoduls SGM-MM veranschaulicht, das in einem Fall von der CPU 3 ausgeführt wird, wenn die Systemkonfiguration von Fig. 25 verwendet wird. In der Hauptroutine werden Vorgänge der Schritte S301 und S302 ausgeführt, die denen von Schritten 51 und 52 von Fig. 8 ähnlich sind. Und dann werden bei Schritt S303 die folgenden Auslösefaktoren überprüft:
- Auslösefaktor 1: Liefern einer MIDI-Nachricht von der Anwendungssoftware APS1 (Fig. 25) über eine erste Schnittstelle IF1 ("MIDI API") (Fig. 25);
- Auslösefaktor 2: Erzeugen durch den Softwarezeitgeber eines internen Unterbrechungssignals, das den Tongeneratorabschnitt aktiviert;
- Auslösefaktor 3: Erfassen einer Verarbeitungsanforderung vom Ausgabegerät;
- Auslösefaktor 4: Empfangen von Wellenformdaten von der Anwendungssoftware APS1 über eine dritte Schnittstelle IF3 (Fig. 25);
- Auslösefaktor 5: Erfassen einer weiteren Anforderung, wie zum Beispiel eines Eingabeereignisses auf dem Dialogfenster der Anzeige 9 oder eines Befehlseingabeereignisses auf der Tastatur 8 (außer eines Hauptroutine-Beendigungsbefehls); und
- Auslösefaktor 6: Erfassen eines Eingabeereignisses eines Hauptroutine- Beendigungsbefehls auf der Tastatur 8.
- Die Auslösefaktoren 1, 2, 3, 5 und 6 sind die gleichen wie die Auslösefaktoren 1, 2, 3, 4 bzw. 5, die bei Schritt S3 von Fig. 8 überprüft werden, für den Fall, dass die Systemkonfiguration von Fig. 2 verwendet wird, und der Auslösefaktor 4 kommt neu für den Fall hinzu, dass die Systemkonfiguration von Fig. 25 verwendet wird.
- Fig. 27 ist ein Flussdiagramm eines beispielhaften Programms der Anwendungssoftware ASP1, die den Auslösefaktor 4 verursacht. Dieses Programm wird zu einer Ereigniszeit von reproduziert werdenden Multimediadaten aktiviert oder ausgelöst, und es wird bei einem ersten Schritt S401 entschieden, welche Daten vorliegen: ein Wellenformdatenerzeugungsereignis, ein MIDI-Nachrichten-Erzeugungsereignis oder ein Erzeugungsereignis anderer Information.
- Wenn bei Schritt S401 festgestellt wird, dass das Ereignis ein Wellenformdatenerzeugungsereignis ist, geht das Programm zu Schritt S402 weiter, um die erzeugten Wellenformdaten an die dritte Schnittstelle IF3 (Fig. 25) auszugeben. Hierdurch wird der Auslösefaktor 4 hervorgerufen. Wenn bei Schritt S401 festgestellt wird, dass das Ereignis ein MIDI-Nachricht-Erzeugungsereignis ist, geht das Programm zu Schritt S403 weiter, um die erzeugte MIDI-Nachricht an die erste Schnittstelle IF1 ("MIDI API") (Fig. 25) auszugeben. Wenn das Ereignis ein Erzeugungsereignis einer anderen Art von Information (wie zum Beispiel Bilddaten) ist, geht das Programm zu Schritt S404 weiter, um die Information je nach der Art der Information an eine Schnittstelle API auszugeben, die das Betriebssystem besitzt.
- Um noch einmal auf Fig. 26 zurückzukommen, die Vorgänge bei und nach Schritt S304 sind ähnlich den Vorgängen bei und nach Schritt S4 von Fig. 8, außer dass ein WAVE-Vorgang von Schritt S312 und eine auf dem WAVE-Vorgang beruhende Anzeige von Schritt S313 hinzugefügt wurden und die Tongeneratorverarbeitung II von Schritt S310 sich teilweise von ihrem Gegenstück von Schritt S10 von Fig. 8 unterscheidet.
- Für den Fall, dass bei Schritt S305 festgestellt wird, dass zwei oder mehr der oben erwähnten Auslösefaktoren simultan aufgetreten sind, hat der Auslösefaktor 1 die höchste Priorität und die Priorität der anderen Auslösefaktoren 2 bis 6 wird so gesetzt, dass sie in der folgenden Reihenfolge ansteigt: Auslösefaktor 4, Auslösefaktor 2, Auslösefaktor 5 und Auslösefaktor 6.
- Fig. 28 ist ein Flussdiagramm, das ein Beispiel des WAVE-Vorgangs, der auf dem Auftreten des Auslösefaktors 4 beruht, veranschaulicht. Beim ersten Schritt S501 wird bei diesem Vorgang ein Zeitraum Δt von einem Punkt, an dem ein Noten- Einschalt-Ereignis von der Anwendungssoftware APS1 über die erste Schnittstelle IF1 ("MIDI API") von Fig. 25 empfangen wird, zu einem Punkt, an dem von der Tongeneratorverarbeitung I in Reaktion auf ein Noten-Einschalt-Ereignis erzeugte Tondaten reproduziert werden (eine Zeitverzögerung bei der Tonerzeugung durch die Tongeneratorverarbeitung I wird im Bereich des Zeitraums Δt toleriert, und die tolerierte Zeitverzögerung hat eine Länge, die ungefähr vier Rahmen entspricht), zur aktuellen Zeit addiert und in ein vorbestimmtes im RAM 5 vorgesehenes Register WT geschrieben.
- Beim nächsten Schritt S502 werden von der Anwendungssoftware APS1 über die dritte Schnittstelle IF3 von Fig. 25 gelieferte Wellenformdaten zusammen mit den im Register WT gespeicherten Zeitdaten in einen Wellenpuffer WB geschrieben.
- Dann wird bei Schritt S503 entschieden, ob ein vorbestimmter Flag WPF (der einen Wert "1" angibt, wenn die Wellenformdaten gerade in den Ausgabepuffer geschrieben werden, jedoch einen Wert "0" angibt, wenn die Wellenformdaten nicht in den Ausgabepuffer geschrieben werden), den Wert "1" hat oder nicht. Wenn die Antwort bei Schritt S503 positiv ist, kehrt die Verarbeitung zurück, ohne einen anderen Vorgang durchgeführt zu haben, wenn die Antwort jedoch negativ ist, geht die Verarbeitung zu Schritt S504 weiter, um weiter festzustellen, ob die im Register WT gespeicherte Zeit in einen Zeitraum fällt, in dem Tondaten im gerade besetzten Ausgabepuffer reproduziert werden sollen.
- Wenn bei Schritt S504 positiv entschieden wird, geht die Verarbeitung zu Schritt S505 weiter, an dem die im Wellenpuffer WB gespeicherten Wellenformdaten in einen bestimmten Bereich des aktuellen Ausgabepuffers geschrieben werden, der einer Reproduktionszeit entspricht, die nach der im Register WT gespeicherten Zeit liegt. Da die Menge der Wellenformdaten, die in Reaktion auf ein Wellenformdaten- Empfangsereignis in den Wellenpuffer WB zu schreiben sind, beträchtlich größer ist als die Menge der Daten, die in einen Ausgabepuffer geschrieben werden können (z. B. entspricht die Menge von Wellenformdaten einer Reproduktionszeit von ungefähr 5 Sekunden), ist zu bemerken, dass nur diejenigen Daten im Wellenpuffer WB, die einem führenden Teil der Wellenform entsprechen, in den Ausgabepuffer geschrieben werden. Nach Schritt S505 geht die Verarbeitung zu Schritt S506 weiter, um den Wert des Flags WPF in "1" zu ändern, und kehrt dann zur Hauptroutine zurück. Wenn andererseits bei Schritt S504 eine negative Entscheidung getroffen wird, kehrt die Verarbeitung zur Hauptroutine zurück, ohne die Vorgänge der Schritte S505 und S506 durchzuführen.
- Fig. 29 ist ein Flussdiagramm eines Beispiels der Tongeneratorverarbeitung II, die in Reaktion auf eine Rückgabeanforderung vom Ausgabegerät (Schritt S76 in Fig. 13) ausgeführt wird. Bei dieser Verarbeitung werden zuerst die Vorgänge der Schritte S601 bis S603, die denjenigen der Schritte S81 bis S83 von Fig. 14 ähnlich sind, durchgeführt, und dann wird bei Schritt S604 festgestellt, ob der Flag WPF einen Wert "1" hat.
- Wenn die Antwort bei Schritt S604 negativ ist (d. h. wenn gerade keine Wellenformdaten in den Ausgabepuffer geschrieben werden), geht die Verarbeitung zu Schritt S605 weiter, um einen Zeitbereich zu überprüfen, in dem der bei Schritt S601 empfangene Ausgabepuffer reproduziert werden soll. Beim nächsten Schritt S606 wird entschieden, ob die in das Register WT durch den WAVE-Vorgang geschriebene Zeit im Reproduktionszeitbereich liegt. Wenn die Antwort bei Schritt S606 negativ ist, geht die Verarbeitung zu Schritt S607 weiter, um alle Wellenformdaten aus dem Ausgabepuffer zu löschen, und kehrt dann zur Hauptroutine zurück. Wenn andererseits die Antwort bei Schritt S606 positiv ist, geht die Verarbeitung zu Schritt S608 weiter, um diejenigen der Wellenformdaten aus dem Ausgabepuffer zu löschen, die dort vor dem Punkt gespeichert wurden, welcher der in das Register WT geschriebenen Zeit entspricht. Beim nächsten Schritt S609 werden die Führungsteildaten der im Wellenpuffer WB gespeicherten Wellenformdaten in einen Bereich des Ausgabepuffers geschrieben, der dem Reproduktionszeitbereich entspricht, welcher der in das Register WT geschriebenen Zeit folgt. Hiernach geht die Verarbeitung zu Schritt S610 weiter zum Verändern des Werts des Flags WPF auf "1" und kehrt dann zur Hauptroutine zurück.
- Wenn die Antwort bei Schritt S604 positiv ist (d. h. wenn Wellenformdaten in den Ausgabepuffer geschrieben werden), geht die Verarbeitung zu Schritt S611 weiter, um diejenigen der im Wellenpuffer WB gespeicherten Wellenformdaten in den Ausgabepuffer zu schreiben, die der Reproduktionszeit des empfangenen Ausgabepuffers entsprechen (d. h. diejenigen, die auf die Wellenformdaten folgen, die bisher in den Ausgabepuffer geschrieben wurden). Beim nächsten Schritt S612 wird entschieden, ob das Schreiben der Wellenformdaten abgeschlossen wurde, bevor das Ende des Speicherbereichs im Ausgabepuffer erreicht wurde, oder nicht. Wenn die Antwort negativ ist, kehrt die Verarbeitung zur Hauptroutine zurück, während bei einer positiven Antwort die Verarbeitung zum Schritt S613 weiter geht, um festzustellen, ob auf einem nächsten Wellenformdatenempfangsereignis basierende Wellenformdaten in den Wellenpuffer WB geschrieben wurden.
- Wenn die Antwort bei Schritt S613 negativ ist, geht die Verarbeitung zu Schritt S614 weiter, um diejenigen der Wellenformdaten zu löschen, die in den Ausgabepuffer nach dem Speicherbereich geschrieben wurden, in dem bei Schritt S611 das Schreiben abgeschlossen war. Hiernach geht die Verarbeitung zu Schritt S615 weiter, um den Wert des Flags WPF auf "0" zu ändern, und kehrt dann zur Hauptroutine zurück.
- Wenn die Antwort bei Schritt S613 negativ ist, geht die Verarbeitung zu Schritt S616, um festzustellen, ob die Zeit, die in Reaktion auf das nächste Wellenformdaten-Empfangsereignis zusammen mit den Wellenformdaten in den Wellenpuffer WB geschrieben wurde, nach oder innerhalb des Reproduktionszeitraums des Ausgabepuffers oder vor dem Reproduktionszeitraum liegt (d. h. die Zeit schon abgelaufen ist).
- Wenn bei Schritt S616 festgestellt wird, dass die Zeit nach dem Reproduktionszeitraum des Ausgabepuffers liegt, geht die Verarbeitung zu Schritt S614 weiter, um die oben genannten Vorgänge der Schritte S614 und S615 durchzuführen.
- Wenn bei Schritt S616 festgestellt wird, dass die Zeit im Reproduktionszeitraum liegt, geht die Verarbeitung zu Schritt S617 weiter, um diejenigen der Wellenformdaten aus dem Ausgabepuffer zu löschen, die darin vor dem Speicherbereich liegen, welcher der in das Register WT geschriebenen Zeit entspricht. Beim nächsten Schritt S618 werden die Führungsteildaten der im Wellenpuffer WB gespeicherten Wellenformdaten in einen Bereich des Ausgabepuffers geschrieben, der dem Reproduktionszeitraum entspricht, welcher der in das Register WT geschriebenen Zeit entspricht. Hiernach kehrt die Verarbeitung zur Hauptroutine zurück.
- Wenn außerdem beim Schritt S616 festgestellt wird, dass die Zeit vor dem Reproduktionszeitraum des Ausgabepuffers liegt, geht die Verarbeitung zu Schritt S619, um die Führungsteildaten der in Reaktion auf das nächste Wellenformdaten- Empfangsereignis in den Wellenformpuffer WB gespeicherten Wellenformdaten in einen Bereich zu schreiben, der nach dem Bereich liegt, in dem das Schreiben der Wellenformdaten bei Schritt S611 abgeschlossen wurde, und kehrt dann zur Hauptroutine zurück.
- Durch das Ausführen einer solchen Tongeneratorverarbeitung II werden die von der Anwendungssoftware APS1 gelieferten Wellenformdaten als ein Anfangswert in einen Bereich des Ausgabepuffers geschrieben, der unter Berücksichtigung der tolerierbaren Zeitverzögerung bei der Wellenformerzeugungsverarbeitung durch die Tongeneratorverarbeitung I bestimmt wurde, bevor die durch die Tongeneratorverarbeitung 1 erzeugten Wellenformdaten in den Ausgabepuffer geschrieben werden. Dann werden in der gleichen Tongeneratorverarbeitung I, wie in Fig. 12 gezeigt, die für jeden der Tonerzeugungskanäle erzeugten Wellenformdaten akkumulativ zum Anfangswert addiert, so dass die Wellenformdaten synchron zusammen gemischt werden, ohne dass sie dabei von der Wellenformdatenerzeugungszeitabstimmung bei der Tongeneratorverarbeitung I beeinflusst würden.
- Fig. 30 ist ein Flussdiagramm, das ein Beispiel der "Tongeneratorverarbeitung II" zeigt, die in Reaktion auf eine Rücksetzanforderung vom Ausgabegerät (Schritt S78 in Fig. 13) ausgeführt wird. Bei Schritt S701 löscht die CPU 3 alle Daten aus den Tongeneratorregistern, Ausgabepuffern und Wellenpuffer WB. Es werden nämlich die Wellenformdaten und Zeitdaten, die durch den WAVE-Vorgang in Reaktion auf jedes bis dahin eingetroffene Wellenformdaten-Empfangsereignis in den Wellenpuffer WB geschrieben wurden, komplett gelöscht, um die Reproduktion mit neu empfangenen Wellenformdaten zu beginnen. Bei den folgenden Schritten S702 und S704 werden die gleichen Vorgänge ausgeführt, die bei den Schritten S92 bis S94 von Fig. 15 ausgeführt werden. Dann kehrt die CPU 3 zur Hauptroutine zurück.
- Der oben genannte Vorgang zum Schreiben der Wellenformdaten von der Anwendungssoftware APS1 in den Bereich des Ausgabepuffers als einen Anfangswert braucht nicht immer als ein Teil der Tongeneratorverarbeitung 11 durchgeführt zu werden, die in Reaktion auf eine Rücksetzanforderung vom Ausgabegerät ausgeführt wird, wie das in Fig. 29 gezeigt ist, sondern kann auch vor der Erzeugung der Wellenformdaten durch die Tongeneratorverarbeitung I durchgeführt werden. Daher kann als weiteres Beispiel das Schreiben des Anfangswerts durchgeführt werden, wenn der Tonerzeugungsbereich bei Schritt S52 bei der Tongeneratorverarbeitung I von Fig. 12 für die Menge SR gesetzt wird.
- Die aus der Anwendungssoftware APS1 erzeugten Wellenformdaten haben unterschiedliche Abtastfrequenzen und können sich in ihrer Abtastfrequenz von den in der Tongeneratorverarbeitung I erzeugten Wellenformdaten unterscheiden. Als Vorbereitung für den oben genannten Vorgang zum Schreiben der im Wellenpuffer WB gespeicherten Wellenformdaten in den Ausgabepuffer können daher die Wellenformdaten einem vorbestimmten Interpolations- oder Überabtast-Vorgang (oversampling) zum Abstimmen der Abtastfrequenzen unterzogen werden.
- Die oben genannte Reproduktions-Zeitabstimmungseinstellung unter Berücksichtigung der tolerierbaren Zeitverzögerung bei der Wellenformerzeugungsverarbeitung durch die Tongeneratorverarbeitung I kann auch auf Bilddaten oder andere Information angewendet werden, die von der Anwendungssoftware APS1 erzeugt wird.
- Bei der Systemkonfiguration von Fig. 25 werden also die von der Anwendungssoftware APS1 an die dritte Schnittstelle IF3 ausgegebenen Wellenformdaten synchron mit den Wellenformdaten gemischt, die vom Software-Tongeneratormodul SSM in Reaktion auf die Noten-Einschalt-Ereignisdaten erzeugt wurden, die über die erste Schnittstelle IF1 ("MIDI API") empfangen wurden, und die so gemischten Wellenformdaten werden über die zweite Schnittstelle IF2 an das Betriebssystem geliefert. Auf diese Weise kann eine Zeitverzögerung bei der Wellenformdatenerzeugung durch das Softwaretongeneratormodul SSM zum Abstimmen der Zeit der reproduzierten Wellenformdaten in entsprechender Weise eingestellt werden.
- Nach der in den oben beschriebenen Ausführungsformen eingesetzten Maßnahme 1 wird die vorbestimmte Anzahl von Abtastwerten von Tondaten für jeden Rahmen nachträglich bei einigen der folgenden Aktivierungszeiten erzeugt. Dies bedeutet aber nicht notwendigerweise, dass das Erzeugen der vorbestimmten Anzahl von Abtastwerten von Tondaten im gleichen Rahmen abgeschlossen werden muss. Insbesondere sind diese Ausführungsformen so konstruiert, dass mehrere Ausgabepuffer reserviert werden, in die, wie in Fig. 7 gezeigt, zur Reproduktion vorgesehene Tondaten geschrieben werden, weshalb es möglich ist, arithmetische Operationen zum Erzeugen der übrigen Tondaten in einem folgenden Rahmen durchzuführen, auch wenn eine arithmetische Erzeugung der vorbestimmten Anzahl von Tondaten nicht in einem Rahmen abgeschlossen wurde. Während zum Beispiel bei der Ausführungsform von Fig. 6 in einem Rahmen aufgrund eines Fehlers bei der Erzeugung des internen Unterbrechungssignals an einem oder mehreren Punkten unerzeugt gebliebene Tondaten bis zum Ende der letzten Aktivierungszeit im gleichen Rahmen erzeugt werden, kann die arithmetische Erzeugung dieser unerzeugt gebliebenen Tondaten zu einem nächsten Rahmen übertragen werden. Zum Beispiel brauchen bei vier Aktivierungszeiten eines Rahmens unerzeugt gebliebene Tondaten nicht unbedingt bis zum Ende der zehnten Aktivierungszeit des gleichen Rahmens erzeugt werden, wie das beim Beispiel von Fig. 6 der Fall ist, sondern es können auch nur die bei der siebten und achten Aktivierungszeit unerzeugt gebliebenen Tondaten bis zum Ende der zehnten Aktivierungszeit des Rahmens erzeugt werden, und die arithmetischen Erzeugungsoperationen der anderen bei der neunten und zehnten Aktivierungszeit unerzeugt gebliebenen Tondaten können zu einer oder mehr Aktivierungszeiten in einem folgenden Rahmen mit übertragen werden, wenn das interne Unterbrechungssignal auftritt. Wie in Fig. 16 gezeigt, kann die Erzeugung von in einem bestimmten Rahmen unerzeugt gebliebenen Tondaten zu einem nächsten Rahmen mit übertragen werden.
- Außerdem werden gemäß den oben beschriebenen Ausführungsformen die Steuerparameter zum Steuern des Tongeneratorabschnitts und Daten, die ein Noten-Einschalt-Ereignis und die Geschehenszeit des Ereignisses anzeigen, in den Tonregistern gespeichert, die eigens für die einzelnen Tonerzeugungskanäle im MIDI-Vorgang, wie zum Beispiel dem Noten-Einschalt- und dem Noten-Ausschalt- Vorgang, vorgesehen sind. Anstelle eines Speicherns in den Tonregistern für die einzelnen zugeordneten Tonerzeugungskanäle können diese Steuerparameter und Daten zusammen mit entsprechenden Kanalnummern der Kanäle auch sequenziell in einen einzigen Speicherbereich geschrieben werden. In einem solchen Fall werden zuerst Sequenzdaten auf der Grundlage gelieferten MIDI-Nachrichten und Tondaten auf der Grundlage der Sequenzdaten erzeugt.
- Außerdem wird gemäß der oben beschriebenen Ausführungsformen der vom Ausgabegerät zurückgegebene Ausgabepuffer über die Tongeneratorverarbeitung 11 mit dem Ende des Ausgabepuffers gekoppelt, der schon vom Tongeneratorabschnitt besetzt ist, so dass die Tongeneratorverarbeitung I Tondaten in den zwischengekoppelten Ausgabepuffern sequentiell von einem Puffer zum nächsten erzeugt und speichert. Alternativ dazu können Tondaten getrennt für jeden Ausgabepuffer erzeugt und gespeichert werden.
- Außerdem wurde zwar beschrieben, dass die Ausführungsformen eine Reservierung für die Reproduktion aus den vier Ausgabepuffern vor der Aktivierung des Tongeneratorabschnitts vornehmen, doch kann die Anzahl der zur Reproduktion zu reservierenden Ausgabepuffer natürlich auch einen anderen Wert als "vier" haben. Außerdem kann die Anzahl von im RAM 5 vorgesehenen Ausgabepuffern auch größer als die oben erwähnte Anzahl der Ausgabepuffer sein, die vor der Aktivierung des Tongeneratorabschnitts zur Reproduktion reserviert werden.
- Außerdem wurden zwar Ausführungsformen beschrieben, die alle Maßnahmen 1 bis 4 durchführen, doch kann verhindert werden, dass die Tonerzeugung durch eine Verzögerung bei der Aktivierung des Tongeneratorabschnitts gestört wird, auch in einem Fall, bei dem jede dieser Maßnahmen unabhängig von den anderen Maßnahmen ausgeführt wird. Es kann auch nur eine dieser Maßnahmen oder eine entsprechende Kombination von zwei oder drei der Maßnahmen ausgeführt werden.
- Die oben beschriebenen Ausführungsformen speichern im Ausgabepuffer Wellenformdaten für maximal 400 Millisekunden und geben dann diese Wellenformdaten aus. Diese Vorgehensweise wäre ziemlich ungünstig, wenn die Wellenformdatenausgabe mit der Reproduktionszeitabstimmung anderer Information (wie zum Beispiel Hintergrundbilder oder eingeblendeter Text zum Karaoke-Singen), die mit dem reproduzierten Musikstück einhergehen, nicht synchron laufen würden, so dass es vorzuziehen ist, für die Synchronisierung eine entsprechende Gegenmaßnahme vorzusehen. Zum Beispiel kann eine Ausgabezeitabstimmung einer MIDI-Nachricht einer Ausgabezeitabstimmung anderer Information (wie zum Beispiel Hintergrundbilder oder eingeblendeter Text für Karaoke) vorgezogen werden, so dass die Tongeneratorverarbeitung durch den Software-Tongenerator kurze Zeit vor der anderen Verarbeitung durchgeführt wird. Diese Alternative ermöglicht es, alle notwendigen Informationen schließlich synchron auszugeben.
- Außerdem werden die beschriebenen Ausführungsformen der vorliegenden Erfindung zwar auf den Software-Tongenerator angewendet, bei dem die CPU so programmiert ist, dass sie eine Tonerzeugungsverarbeitung auf der Grundlage des Wellenformspeicherverfahrens durchführt, doch kann die vorliegende Erfindung auch auf einen Software-Tongenerator angewendet werden, bei dem die CPU so programmiert ist, dass sie die Tonerzeugungsverarbeitung auf der Grundlage eines anderen geeigneten Verfahrens, wie zum Beispiel des FM-Synthese-Verfahrens durchführt.
- Außerdem wird bei den beschriebenen Ausführungsformen die vorliegende Erfindung zwar auf den Software-Tongenerator angewendet, bei dem die CPU eines PCs zum Ausführen einer Tonerzeugungsverarbeitung programmiert ist, doch kann die vorliegende Erfindung auch auf einen Software-Tongenerator angewendet werden, bei dem die in ein dediziertes Tonerzeugungsgerät geladene CPU zum Ausführen der Tonerzeugungsverarbeitung programmiert ist. Außerdem kann die Spielinformation, auf deren Grundlage Wellenformdaten erzeugt werden sollen, auch in einer anderen Form als im MIDI-Format vorliegen.
- Verschiedene Vorteile werden durch die vorliegende Erfindung erzielt, wie im Folgenden zusammengefasst wird.
- Nach dem ersten Aspekt der Erfindung, ist der unechte Treiber (FMD) vorgesehen, so dass Spielinformation (z. B. die MIDI-Nachricht), die von der optionalen Anwendungssoftware (APS1) über die erste Schnittstelle (MIDI API) geliefert wird, vom unechten Treiber empfangen und dann an den Anwendungssoftware- Tongenerator (SSM) geliefert werden. Der Software-Tongenerator (SSM), der selbst eine Anwendungssoftware ist, kann daher die von der anderen Anwendungssoftware (APS1) gelieferte Spielinformation empfangen und dann die Wellenformerzeugungsverarbeitung auf der Grundlage der empfangenen Spielinformation durchführen. Folglich kann der Software-Tongenerator leicht mit anderer Anwendungssoftware auf Betriebssystemebene kombiniert werden und kann Spielinformation (z. B. eine MIDI- Nachricht) empfangen, die über die erste Schnittstelle von der anderen Anwendungssoftware geliefert wird, um dadurch der Spielinformation entsprechende Wellenformdaten zu erzeugen. Bei einer solchen Anordnung ist es möglich, einen Anwendungsbereich des Software-Tongenerators, der selbst eine Anwendungssoftware ist, zu erweitern und auch die Notwendigkeit eines Hardware-Tongenerators auszuschließen, wo gewünschte Anwendungssoftware, wie zum Beispiel Spiele-Software, Sequenzer-Software oder Multimedia-Software, die Spielinformation (z. B. eine MIDI- Nachricht) erzeugt, auf das Betriebssystem des Computers angewendet und mit diesem einfach verwendet werden soll. Folglich erzielt die vorliegende Erfindung verringerte Kosten, während ein erweiterter Bereich einfacher Anwendung des Software- Tongenerators sicher gestellt wird.
- Außerdem weist das Tongeneratorsystem in einer anderen Ausführungsform weiter eine Anwendungssoftware (APS1) als einen ersten Abschnitt zum Liefern von Spielinformation an die erste Schnittstelle (MIDI API) sowie andere Anwendungssoftware (APS2) auf, die im Software-Tongenerator (SSM) integriert ist, zu dessen ausschließlicher Nutzung, als einen zweiten Abschnitt zum Senden von Spielinformation an den Software-Tongenerator (SSM), so dass der Generator (SSM) sowohl Klangwellenformdatenerzeugung auf der Grundlage der vom ersten Abschnitt über die erste Schnittstelle gelieferten Spielinformation als auch Klangwellenformdatenerzeugung auf der Grundlage von direkt vom zweiten Abschnitt gelieferter Spielinformation durchführt. Mit einer solchen Anordnung ist es möglich, dass sich die im Software-Tongenerator zur dessen ausschließlicher Nutzung (APS2) integrierte Software und die andere über das Betriebssystem mit dem Software-Tongenerator (APS1) kombinierte Software den Software-Tongenerator teilen.
- Nach dem zweiten Aspekt der vorliegenden Erfindung ist der Software- Tongenerator (SSM), der selbst Anwendungssoftware ist, als ein Treiber im Betriebssystem installiert und so programmiert, dass er die über die erste Schnittstelle (MIDI API) gelieferte Spielinformation empfängt. Die von der anderen optionalen Anwendungssoftware (APS1) über die erste Schnittstelle gelieferte Spielinformation (z. B. eine MIDI-Nachricht) kann daher vom Software-Tongenerator über das Betriebssystem empfangen werden. Auch mit dieser Anordnung wird es dem Software- Tongenerator, der selbst eine Anwendungssoftware ist, ermöglicht, die von der anderen Anwendungssoftware gelieferte Spielinformation zu empfangen und die Klangwellenformdatenerzeugung auf der Grundlage der empfangenen Spielinformation auszuführen, und es können allgemein die gleichen Vorteile erzielt werden, wie sie im Zusammenhang mit dem ersten Aspekt erwähnt wurden.
- Außerdem weist nach einem dritten Aspekt der Erfindung der Computer des Tongeneratorsystems die CPU 3 als einen Hauptsteuerungsabschnitt auf, und dieser Hauptsteuerungsabschnitt weist einen Abschnitt zum Erzeugen eines Aktivierbefehls an einem oder mehr von mehreren vorbestimmten Punkten in einem vorbestimmten Zeitraum auf, wenn das den Software-Tongenerator implementierende Programm tatsächlich durchgeführt werden kann. Es wird daher dem Hauptsteuerungsabschnitt ermöglicht, den Aktivierbefehl an einem oder mehreren der vorbestimmten Punkte zu erzeugen, wenn das den Software-Tongenerator implementierende Programm tatsächlich ausgeführt werden kann, als richtigen Ausgleich mit aktuellen Ausführungszuständen eines weiteren Programms, so dass das den Software-Tongenerator implementierende Programm und das andere Programm parallel unter echter Zeitaufteilungssteuerung (time divisional control) ausgeführt werden können. Zusätzlich weist der Tongenerator einen Einstellabschnitt auf zum Einstellen der Klangwellenformerzeugung in einer solchen Weise, dass eine vorbestimmte Anzahl von Abtastwerten von Wellenformdaten insgesamt erzeugt werden können, indem einfach nur die Klangwellenformdatenerzeugung in Reaktion auf den Aktivierbefehl ausgeführt wird, der an einem oder mehreren Punkten tatsächlich erzeugt wird. Auch wenn der Aktivierbefehl an manchen der vorbestimmten Punkte in dem Zeitraum nicht erzeugt wird, kann daher eine entsprechende Steuerung so realisiert werden, dass die vorbestimmte Anzahl von Abtastwerten von Wellenformdaten insgesamt einfach dadurch erzeugt werden, dass die Klangwellenformdatenerzeugung tatsächlich in Reaktion auf den tatsächlich an einem oder mehr der vorbestimmten Punkte erzeugten Aktivierbefehl ausgeführt wird, wodurch Zeitverzögerungen bei der Tonerzeugung vermieden werden. Daher erzielt die vorliegende Erfindung den Vorteil, dass die Klangwellenformdatenerzeugung und eine Verarbeitung aufgrund anderer Software ohne Probleme auch in dem Fall durchgeführt werden kann, dass diese Verarbeitung vom gleichen Software-Tongenerator unter der Steuerung eines Betriebssystems parallel ausgeführt wird, das keine volle Multitasking-Fähigkeit aufweist. Auch wenn die Anzahl von Aktivierbefehlen, die zum Aktivieren der Klangwellenformdatenerzeugung erzeugt werden, aufgrund eines Einflusses einer Verarbeitung aufgrund anderer Software unerwünschterweise verringert wird, kann eine entsprechende Steuerung zuverlässig sicher gestellt werden, so dass die vorbestimmte Anzahl von Abtastwerten von Wellenformdaten insgesamt vollständig erzeugt werden. Daher werden unerwünschte Nachteile, wie zum Beispiel Zeitverzögerungen bei der Tonerzeugung wirksam verhindert. Da die Klangwellenformdatenerzeugung nicht in festen Zeitabschnitten durchgeführt wird, ist es möglich, das Problem zu vermeiden, dass die aufgrund von anderen Software geschehende Verarbeitung gestört und durch die Klangwellenformdatenerzeugung verzögert wird.
- In einem solchen Fall wird der Einstellabschnitt in einer solchen Weise ausgelegt, dass er bei jedem der einem tatsächlich erzeugten Aktivierbefehl entsprechenden Punkt eine Menge von in Reaktion auf den Aktivierbefehl zu erzeugenden Wellendaten in Abhängig von einer "unerzeugten" Menge von Wellenformdaten, die bis zu diesem Punkt hätten erzeugt werden sollen, erzeugt. Für diesen Fall ist der Software-Tongenerator so konstruiert, dass er die bestimmte Menge von Wellenformdaten in Reaktion auf den Aktivierbefehl erzeugt. Durch ein entsprechendes Bestimmen der oben genannten Funktion, kann eine entsprechende Anzahl von pro Aktivierbefehl zu erzeugenden Wellenformdaten in einem richtigen Ausgleich mit der unerzeugt gebliebenen Menge von Wellenformdaten, die hätten erzeugt werden sollen, erzeugt werden. Es kann also eine geeignete Steuerung erfolgen, welche die Wahrscheinlichkeit minimiert, dass die andere Verarbeitung dadurch gestört wird, dass der Hauptsteuerungsabschnitt durch die auf Aktivierbefehl geschehende Verarbeitung im Softwaregenerator beschäftigt ist.
- Nach dem vierten Aspekt der vorliegenden Erfindung weist das Betriebssystem als eine Schnittstelle zum Empfangen und Senden erzeugter Wellenformdaten die dritte Schnittstelle zusätzlich zur zweiten Schnittstelle auf, und das Klangprogramm, das als ein Treiber im Betriebssystem installiert ist, erzeugt die Wellenformdaten auf der Grundlage der Spielinformation, die über die erste Schnittstelle empfangen wurde, mischt die erzeugten Wellenformdaten mit den über die dritte Schnittstelle empfangenen Wellenformdaten in synchroner Weise und gibt die dabei entstehenden gemischten Wellenformdaten an die zweite Schnittstelle aus. Durch dieses synchrone Mischen der auf der Grundlage der Spielinformation erzeugten Wellenformdaten mit den über die dritte Schnittstelle empfangenen Wellenformdaten und schließliches Ausgeben der gemischten Wellenformdaten an die zweite Schnittstelle kann die Zeitverzögerung bei der Wellenformdatenerzeugung in geeigneter Weise für eine richtige Abstimmung der Reproduktionszeitabstimmung eingestellt werden.
- Außerdem können durch die Anordnung, dass der Mischschritt die auf der Grundlage der Spielinformation erzeugten Wellenformdaten kumulativ zu den über die dritte Schnittstelle als Anfangswert empfangenen Wellenformdaten addiert, die Wellenformdaten synchron zusammen gemischt werden, ohne dass sie dabei durch die auf der Grundlage der Spielinformation geschehende Wellenformdatenerzeugung gestört würden. Eine stabile Reproduktion der Wellenformdaten kann daher zu einer in geeigneter Weise abgestimmten Zeit erfolgen.
Claims (14)
1. Tongeneratorsystem zum Erzeugen von
Klangwellenformdaten unter Verwendung eines Computers, auf dem ein
bestimmtes Betriebssystem und ein Programm zum
Implementieren eines Software-Tongenerators installiert
ist,
wobei das Betriebssystem eine erste Schnittstelle
(IF1) zum Empfangen von Spielinformation, auf deren
Grundlage Wellenformdaten zu erzeugen sind, und zum
Weiterleiten der empfangenen Spielinformation an ein als
ein erster Treiber im Betriebssystem installiertes
Programm, und eine zweite Schnittstelle (IF2) zum Empfangen
erzeugter Wellenformdaten und zum Weiterleiten der
empfangenen erzeugten Wellenformdaten an ein als ein
zweiter Treiber in dem Betriebssystem installiertes
Wellenformausgabeprogramm (OUD) aufweist,
wobei der Software-Tongenerator (SSM) eine
Anwendersoftware ist, die zum Erzeugen von Wellenformdaten
auf der Grundlage der Spielinformation eine
Klangwellenformdatenerzeugungsverarbeitung durchführt und
die erzeugten Wellenformdaten über die zweite Schnittstelle
(IF2) ausgibt, und
wobei das Tongeneratorsystem einen "unechten" Treiber
(fake driver/FMD) aufweist, der als der erste Treiber im
Betriebssystem installiert und so programmiert ist, dass er
die über die erste Schnittstelle (IF1) gelieferte
Spielinformation empfängt und die empfangene
Spielinformation an den Software-Tongenerator (SSM) sendet.
2. Tongeneratorsystem nach Anspruch 1, das weiter erste
Mittel zum Liefern von Spielinformation an die erste
Schnittstelle (IF1) und zweite Mittel zum Senden von
Spielinformation an den Software-Tongenerator (SSM)
aufweist und bei dem der Software-Tongenerator (SSM) auf
der Grundlage von den ersten Mitteln über die erste
Schnittstelle (IF1) gelieferten Spielinformation eine
Klangwellenformdatenerzeugung und auf der Grundlage der
direkt von den zweiten Mitteln gelieferten Spielinformation
eine Klangwellenformdatenerzeugung durchführt.
3. Tongeneratorsystem nach Anspruch 1, bei dem der
Computer einen Hauptsteuerungsabschnitt zum zueinander
parallelen Ausführen des einen Software-Tongenerator (SSM)
implementierenden Programms und eines weiteren Programms
aufweist, wobei der Hauptsteuerungsabschnitt Mittel zum
Erzeugen eines Aktivierungsbefehls an einem oder mehreren
von mehreren vorbestimmten Punkten innerhalb eines
vorbestimmten Zeitraums aufweist, wenn das einen Software-
Tongenerator (SSM) implementierende Programm tatsächlich
zur Ausführung kommt, und
das weiter Einstellungsmittel zum Einstellen der
Klangwellenformdatenerzeugung in der Weise aufweist, dass
eine vorbestimmte Anzahl von Abtastwerten von
Wellenformdaten vollständig lediglich dadurch erzeugt
werden kann, dass die
Klangwellenformdatenerzeugungsverarbeitung in Reaktion auf den Aktivierungsbefehl
tatsächlich durchgeführt wird, die an einem oder mehreren
der vorbestimmten Punkte tatsächlich erzeugt worden ist.
4. Tongeneratorsystem zum Erzeugen von
Klangwellenformdaten unter Verwendung eines Computers, auf
dem ein bestimmtes Betriebssystem und ein Programm zum
Implementieren eines Software-Tongenerators (SSM)
installiert ist,
wobei das Betriebssystem eine erste Schnittstelle
(IF1) zum Empfangen von Spielinformation, auf deren
Grundlage Wellenformdaten zu erzeugen sind, und zum
Weiterleiten der empfangenen Spielinformation an ein als
ein erster Treiber in dem Betriebssystem installiertes
Programm und eine zweite Schnittstelle (IF2) zum Empfangen
erzeugter Wellenformdaten und zum Weiterleiten der
empfangenen erzeugten Wellenformdaten an ein als ein
zweiter Treiber im Betriebssystem installiertes
Wellenformausgabeprogramm (OUD),
wobei der Software-Tongenerator (SSM) eine
Anwendersoftware ist, die auf der Grundlage der empfangenen
Spielinformation eine Wellenformdatenerzeugungsverarbeitung
zum Erzeugen von Wellenformdaten durchführt und die
erzeugten Wellenformdaten über die zweite Schnittstelle
(IF2) ausgibt, und
wobei das Programm zum Implementieren eines Software-
Tongenerators (SSM) das als der erste Treiber im
Betriebssystem installierte Programm ist, das so
programmiert ist, dass der Software-Tongenerator (SSM) die
über die erste Schnittstelle (IF1) gelieferte
Spielinformation empfängt, wobei der Software-Tongenerator
(SSM) die Wellenformdatenerzeugungsverarbeitung auf der
Grundlage der über die erste Schnittstelle (IF1)
empfangenen Spielinformation durchführt.
5. Tongeneratorsystem nach Anspruch 4, bei dem der
Computer einen Hauptsteuerungsabschnitt zum zueinander
parallelen Ausführen des einen Software-Tongenerator (SSM)
implementierenden Programms und eines weiteren Programms
aufweist, wobei der Hauptsteuerungsabschnitt Mittel zum
Erzeugen eines Aktivierungsbefehls an einem oder mehreren
von mehreren vorbestimmten Punkten innerhalb eines
vorbestimmten Zeitraums aufweist, wenn das einen Software-
Tongenerator (SSM) implementierende Programm tatsächlich
zur Ausführung kommt, und
das weiter Einstellungsmittel aufweist zum Einstellen
der Klangwellenformdatenerzeugung derart, dass eine
vorbestimmte Anzahl von Abtastwerten von Wellenformdaten
vollständig lediglich dadurch erzeugt werden kann, dass die
Klangwellenformdatenerzeugungsverarbeitung in Reaktion auf
den Aktivierungsbefehl tatsächlich durchgeführt wird, der
an einem oder mehreren der vorbestimmten Punkte tatsächlich
erzeugt wird.
6. Tongeneratorsystem nach Anspruch 5, bei dem an jedem
der vorbestimmten Punkte, wenn der Aktivierungsbefehl
tatsächlich erzeugt wird, die Einstellungsmittel eine Menge
von in Antwort auf den Aktivierungsbefehl zu erzeugenden
Wellenformdaten in Abhängigkeit von einer unerzeugt
gebliebenen Menge von Wellenformdaten bestimmen, die bis zu
diesem Punkt hätten erzeugt werden sollen, und der
Software-Tongenerator (SSM) die bestimmte Menge an
Wellenformdaten in Reaktion auf den Aktivierungsbefehl
erzeugt.
7. Tongeneratorsystem zum Erzeugen von
Klangwellenformdaten durch Ausführen eines unter der Steuerung
eines bestimmten Betriebssystem betriebenen Klangprogramms,
bei dem das Betriebssystem eine erste Schnittstelle
(IF1) zum Empfangen von Spielinformation, auf deren
Grundlage Wellenformdaten zu erzeugen sind, und zum
Weiterleiten der empfangenen Spielinformation an ein als
ein erster Treiber im Betriebssystem installiertes
Programm, eine zweite Schnittstelle (IF2) zum Empfangen
erzeugter Wellenformdaten und zum Weiterleiten der
empfangenen erzeugten Wellenformdaten an ein als ein
zweiter Treiber im Betriebssystem installiertes
Wellenformausgabeprogramm (OUD) und eine dritte
Schnittstelle (IF3) zum Empfangen der erzeugten
Wellenformdaten und zum Weiterleiten der empfangenen
erzeugten Wellenformdaten an ein als ein dritter Treiber im
Betriebssystem installiertes Programm aufweist, und
bei dem das Klangprogramm als der erste Treiber und
der dritte Treiber im Betriebssystem installiert ist und
das Klangprogramm einen Erzeugungsschritt zum Durchführen
einer Tonerzeugungsverarbeitung zum Erzeugen von
Wellenformdaten auf der Grundlage der über die erste
Schnittstelle (IF1) empfangenen Spielinformation, einen
Mischschritt, bei dem die über die dritte Schnittstelle
(IF3) empfangenen Wellenformdaten und die durch den
Erzeugungsschritt erzeugten Wellenformdaten in
synchronisierter Weise gemischt werden, und einen
Ausgabeschritt zum Ausgeben der durch den Mischschritt
gemischten Wellenformdaten an die zweite Schnittstelle
(IF2) ausführt.
8. Tongeneratorsystem nach Anspruch 7, bei dem der
Mischschritt die Wellenformdaten dadurch mischt, dass die
durch den Erzeugungsschritt erzeugten Wellenformdaten
akkumulativ zu den über die dritte Schnittstelle (IF3)
empfangenen Wellenformdaten hinzugefügt werden, wobei die
durch den Erzeugungsschritt erzeugten Wellenformdaten als
ein Ausgangswert verwendet werden.
9. Verfahren zum Erzeugen von Klangwellenformdaten unter
Verwendung eines Computers, auf dem ein bestimmtes
Betriebssystem und ein Programm zum Implementieren eines
Software-Tongenerators (SSM) installiert sind, wobei das
Betriebssystem eine erste Schnittstelle (IF1) zum Empfangen
von Spielinformation, auf deren Grundlage Wellenformdaten
zu erzeugen sind, und zum Weiterleiten der empfangenen
Spielinformation an ein als ein erster Treiber in dem
Betriebssystem installiertes Programm und eine zweite
Schnittstelle (IF2) zum Empfangen erzeugter Wellenformdaten
und zum Weiterleiten der empfangenen erzeugten
Wellenformdaten an ein als ein zweiter Treiber in dem
Betriebssystem installiertes Wellenformausgabeprogramm
(OUD) aufweist, wobei der Software-Tongenerator (SSM) eine
Anwendersoftware ist, die zum Erzeugen von Wellenformdaten
auf der Grundlage der Spielinformation eine
Klangwellenformdatenerzeugungsverarbeitung durchführt und
die erzeugten Wellenformdaten über die zweite Schnittstelle
(IF2) ausgibt, wobei das Verfahren die folgenden Schritte
aufweist:
Liefern erwünschter Spielinformation an die erste
Schnittstelle (IF1);
Empfangen der erwünschten Spielinformation von der
ersten Schnittstelle (IF1) mittels des als der erste
Treiber im Betriebssystem installierten Programms und
Senden der empfangenen Spielinformation an den
Software-Tongenerator (SSM), so dass der Tongenerator die
Wellenformdatenerzeugungsverarbeitung zum Erzeugen der
erwünschten Spielinformation entsprechender
Klangwellenformdaten durchführt.
10. Verfahren zum Erzeugen von Klangwellenformdaten unter
Verwendung eines Computers, auf dem ein bestimmtes
Betriebssystem und ein Programm zum Implementieren eines
Software-Tongenerators (SSM) installiert sind, wobei das
Betriebssystem eine erste Schnittstelle (IF1) zum Empfangen
von Spielinformation, auf deren Grundlage Wellenformdaten
zu erzeugen sind, und zum Weiterleiten der empfangenen
Spielinformation an ein als ein erster Treiber in dem
Betriebssystem installiertes Programm und eine zweite
Schnittstelle (IF2) zum Empfangen erzeugter Wellenformdaten
und zum Weiterleiten der empfangenen erzeugten
Wellenformdaten an ein als ein zweiter Treiber in dem
Betriebssystem installiertes Wellenformausgabeprogramm
(OUD) aufweist, wobei der Software-Tongenerator (SSM) eine
Anwendersoftware ist, die zum Erzeugen von Wellenformdaten
auf der Grundlage der Spielinformation eine
Klangwellenformdatenerzeugungsverarbeitung durchführt und
die erzeugten Wellenformdaten über die zweite Schnittstelle
(IF2) ausgibt, wobei das Verfahren die folgenden Schritte
aufweist:
Installieren des Programms zum Implementieren eines
Software-Tongenerators (SSM) als der erste Treiber in dem
Betriebssystem;
Liefern erwünschter Spielinformation an die erste
Schnittstelle (IF1) und
Empfangen, durch das Programm zum Implementieren eines
Software-Tongenerators (SSM), der erwünschten
Spielinformation von der ersten Schnittstelle (IF1) zum
Durchführen der Wellenformdatenerzeugungsverarbeitung zum
Erzeugen der erwünschten Spielinformation entsprechender
Klangwellenformdaten.
11. Verfahren zum Erzeugen von Klangwellenformdaten durch
Ausführen eines unter der Steuerung eines bestimmten
Betriebssystem betriebenen Klangprogramms, wobei das
Betriebssystem eine erste Schnittstelle (IF1) zum Empfangen
von Spielinformation, auf deren Grundlage Wellenformdaten
zu erzeugen sind, und zum Weiterleiten der empfangenen
Spielinformation an ein als ein erster Treiber im
Betriebssystem installiertes Programm, eine zweite
Schnittstelle (IF2) zum Empfangen erzeugter Wellenformdaten
und zum Weiterleiten der empfangenen erzeugten
Wellenformdaten an ein als ein zweiter Treiber im
Betriebssystem installiertes Wellenformausgabeprogramm
(OUD) und eine dritte Schnittstelle (IF3) zum Empfangen der
erzeugten Wellenformdaten und zum Weiterleiten der
empfangenen erzeugten Wellenformdaten an ein als ein
dritter Treiber im Betriebssystem installiertes Programm
aufweist, wobei das Verfahren die folgenden Schritte
aufweist:
Installieren des Klangprogramms als der erste Treiber
und der dritte Treiber in dem Betriebssystem;
Liefern erwünschter Spielinformation an die erste
Schnittstelle (IF1);
Empfangen, durch das Klangprogramm, der erwünschten
Spielinformation von der ersten Schnittstelle (IF1) zum
Durchführen der Wellenformdatenerzeugungsverarbeitung zum
Erzeugen der erwünschten Spielinformation entsprechender
erster Wellenformdaten;
Liefern zweiter Wellenformdaten an die dritte
Schnittstelle (IF3) und
Empfangen der zweiten Wellenformdaten durch das
Klangprogramm von der dritten Schnittstelle (IF3) und
Mischen der ersten und der zweiten Wellenformdaten zum
Liefern der gemischten Wellenformdaten an die zweite
Schnittstelle (IF2).
12. Maschinenlesbares Aufzeichnungsmedium, das eine Gruppe
von Befehlen enthält, welche die Maschine ein Verfahren zum
Erzeugen von Klangwellenformdaten unter Verwendung eines
Computers durchführen lassen, auf dem ein bestimmtes
Betriebssystem und ein Programm zum Implementieren eines
Software-Tongenerators (SSM) installiert sind, wobei das
Betriebssystem eine erste Schnittstelle (IF1) zum Empfangen
von Spielinformation, auf deren Grundlage Wellenformdaten
zu erzeugen sind, und zum Weiterleiten der empfangenen
Spielinformation an ein als ein erster Treiber in dem
Betriebssystem installiertes Programm und eine zweite
Schnittstelle (IF2) zum Empfangen erzeugter Wellenformdaten
und zum Weiterleiten der empfangenen erzeugten
Wellenformdaten an ein als ein zweiter Treiber in dem
Betriebssystem installiertes Wellenformausgabeprogramm
(OUD) aufweist, wobei der Software-Tongenerator (SSM) eine
Anwendersoftware ist, die zum Erzeugen von Wellenformdaten
auf der Grundlage der Spielinformation eine
Klangwellenformdatenerzeugungsverarbeitung durchführt und
die erzeugten Wellenformdaten über die zweite Schnittstelle
(TF2) ausgibt, wobei das Verfahren die folgenden Schritte
aufweist:
Liefern erwünschter Spielinformation an die erste
Schnittstelle (IF1);
Empfangen der erwünschten Spielinformation von der
ersten Schnittstelle (IF1) mittels des als der erste
Treiber im Betriebssystem installierten Programms und
Senden der empfangenen Spielinformation an den
Software-Tongenerator (SSM), so dass der Tongenerator die
Wellenformdatenerzeugungsbearbeitung zum Erzeugen der
erwünschten Spielinformation entsprechender Wellenformdaten
durchführt.
13. Maschinenlesbares Aufzeichnungsmedium, das eine Gruppe
von Befehlen enthält, welche die Maschine ein Verfahren zum
Erzeugen von Klangwellenformdaten unter Verwendung eines
Computers durchführen lassen, auf dem ein bestimmtes
Betriebssystem und ein Programm zum Implementieren eines
Software-Tongenerators (SSM) installiert sind, wobei das
Betriebssystem eine erste Schnittstelle (IF1) zum Empfangen
von Spielinformation, auf deren Grundlage Wellenformdaten
zu erzeugen sind, und zum Weiterleiten der empfangenen
Spielinformation an ein als ein erster Treiber in dem
Betriebssystem installiertes Programm und eine zweite
Schnittstelle (IF2) zum Empfangen erzeugter Wellenformdaten
und zum Weiterleiten der empfangenen erzeugten
Wellenformdaten an ein als ein zweiter Treiber in dem
Betriebssystem installiertes Wellenformausgabeprogramm
(OUD) aufweist, wobei der Software-Tongenerator (SSM) eine
Anwendersoftware ist, die zum Erzeugen von Wellenformdaten
auf der Grundlage der Spielinformation eine
Klangwellenformdatenerzeugungsverarbeitung durchführt und
die erzeugten Wellenformdaten über die zweite Schnittstelle
(IF2) ausgibt, wobei das Verfahren die folgenden Schritte
aufweist:
Installieren des Programms zum Implementieren eines
Software-Tongenerators (SSM) als der erste Treiber in dem
Betriebssystem;
Liefern erwünschter Spielinformation an die erste
Schnittstelle (IF1) und
Empfangen, durch das Programm zum Implementieren eines
Software-Tongenerators (SSM), der erwünschten
Spielinformation von der ersten Schnittstelle (IF1) zum
Durchführen der Wellenformdatenerzeugungsverarbeitung zum
Erzeugen der erwünschten Spielinformation entsprechender
Klangwellenformdaten.
14. Maschinenlesbares Aufzeichnungsmedium, das eine Gruppe
von Befehlen enthält, welche die Maschine ein Verfahren zum
Erzeugen von Klangwellenformdaten durch Ausführen eines
unter Steuerung eines bestimmten Betriebssystem betriebenen
Klangprogramms implementieren läßt, wobei das
Betriebssystem eine erste Schnittstelle (IF1) zum Empfangen
von Spielinformation, auf deren Grundlage Wellenformdaten
zu erzeugen sind, und zum Weiterleiten der empfangenen
Spielinformation an ein als ein erster Treiber im
Betriebssystem installiertes Programm, eine zweite
Schnittstelle (IF2) zum Empfangen erzeugter Wellenformdaten
und zum Weiterleiten der empfangenen erzeugten
Wellenformdaten an ein als ein zweiter Treiber im
Betriebssystem installiertes Wellenformausgabeprogramm
(OUD) und eine dritte Schnittstelle (IF3) zum Empfangen der
erzeugten Wellenformdaten und zum Weiterleiten der
empfangenen erzeugten Wellenformdaten an ein als ein
dritter Treiber im Betriebssystem installiertes Programm
aufweist, wobei das Verfahren die folgenden Schritte
aufweist:
Installieren des Programms als der erste Treiber und
der dritte Treiber in dem Betriebssystem;
Liefern erwünschter Spielinformation an die erste
Schnittstelle (IF1);
Empfangen, durch das Klangprogramm, der erwünschten
Spielinformation von der ersten Schnittstelle (IF1) zum
Durchführen der Wellenformdatenerzeugungsverarbeitung zum
Erzeugen der erwünschten Spielinformation entsprechender
erster Wellenformdaten;
Liefern zweiter Wellenformdaten an die dritte
Schnittstelle (IF3) und
Empfangen der zweiten Wellenformdaten durch das
Klangprogramm von der dritten Schnittstelle (IF3) und
Mischen der ersten und der zweiten Wellenformdaten zum
Liefern der gemischten Wellenformdaten an die zweite
Schnittstelle (IF2).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2474896 | 1996-01-17 | ||
JP8083157A JP2970526B2 (ja) | 1996-01-17 | 1996-03-12 | コンピュータソフトウェアを用いた音源システム |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69705434D1 DE69705434D1 (de) | 2001-08-09 |
DE69705434T2 true DE69705434T2 (de) | 2002-05-16 |
Family
ID=26362326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69705434T Expired - Lifetime DE69705434T2 (de) | 1996-01-17 | 1997-01-15 | Tonerzeugungssystem unter Verwendung eines Computerprogrammes |
Country Status (7)
Country | Link |
---|---|
US (1) | US6023016A (de) |
EP (1) | EP0785539B1 (de) |
JP (1) | JP2970526B2 (de) |
KR (2) | KR100478469B1 (de) |
CN (3) | CN1159698C (de) |
DE (1) | DE69705434T2 (de) |
SG (1) | SG65634A1 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366971B1 (en) | 1998-01-09 | 2002-04-02 | Yamaha Corporation | Audio system for playback of waveform sample data |
JP4240575B2 (ja) * | 1998-05-15 | 2009-03-18 | ヤマハ株式会社 | 楽音合成方法、記録媒体および楽音合成装置 |
JP3614061B2 (ja) | 1999-12-06 | 2005-01-26 | ヤマハ株式会社 | 自動演奏装置及び自動演奏プログラムを記録したコンピュータ読取り可能な記録媒体 |
US7319764B1 (en) * | 2003-01-06 | 2008-01-15 | Apple Inc. | Method and apparatus for controlling volume |
EP1555772A3 (de) * | 2004-01-15 | 2013-07-17 | Yamaha Corporation | Fernbedienungsverfahren externer Geräte |
US20060155543A1 (en) * | 2005-01-13 | 2006-07-13 | Korg, Inc. | Dynamic voice allocation in a vector processor based audio processor |
JP4966285B2 (ja) | 2008-10-30 | 2012-07-04 | 株式会社東芝 | 情報処理装置、エフェクトプログラムおよびコンテンツ補正処理方法 |
US8543921B2 (en) | 2009-04-30 | 2013-09-24 | Apple Inc. | Editing key-indexed geometries in media editing applications |
US8566721B2 (en) * | 2009-04-30 | 2013-10-22 | Apple Inc. | Editing key-indexed graphs in media editing applications |
US8383924B2 (en) * | 2010-03-10 | 2013-02-26 | Yamaha Corporation | Musical tone signal generating apparatus |
US8781613B1 (en) * | 2013-06-26 | 2014-07-15 | Applifier Oy | Audio apparatus for portable devices |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4373416A (en) * | 1976-12-29 | 1983-02-15 | Nippon Gakki Seizo Kabushiki Kaisha | Wave generator for electronic musical instrument |
WO1980001215A1 (en) * | 1978-12-11 | 1980-06-12 | Microskill Ltd | An output processing system for a digital electronic musical instrument |
JPH0743591B2 (ja) * | 1988-03-08 | 1995-05-15 | ヤマハ株式会社 | 楽音発生制御装置 |
US5086475A (en) * | 1988-11-19 | 1992-02-04 | Sony Corporation | Apparatus for generating, recording or reproducing sound source data |
US5319151A (en) * | 1988-12-29 | 1994-06-07 | Casio Computer Co., Ltd. | Data processing apparatus outputting waveform data in a certain interval |
JP2576617B2 (ja) * | 1988-12-29 | 1997-01-29 | カシオ計算機株式会社 | 処理装置 |
US5121667A (en) * | 1989-11-06 | 1992-06-16 | Emery Christopher L | Electronic musical instrument with multiple voices responsive to mutually exclusive ram memory segments |
US5200564A (en) * | 1990-06-29 | 1993-04-06 | Casio Computer Co., Ltd. | Digital information processing apparatus with multiple CPUs |
JP2797142B2 (ja) * | 1990-07-02 | 1998-09-17 | カシオ計算機株式会社 | 電子楽器用処理装置 |
US5054360A (en) * | 1990-11-01 | 1991-10-08 | International Business Machines Corporation | Method and apparatus for simultaneous output of digital audio and midi synthesized music |
JPH0573046A (ja) * | 1991-06-27 | 1993-03-26 | Yamaha Corp | 楽音信号演算処理装置 |
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 | ヤマハ株式会社 | 波形発生装置 |
JP2743726B2 (ja) * | 1992-07-07 | 1998-04-22 | ヤマハ株式会社 | 電子楽器 |
JP2768168B2 (ja) * | 1992-09-18 | 1998-06-25 | ヤマハ株式会社 | 楽音合成装置 |
US5331111A (en) * | 1992-10-27 | 1994-07-19 | Korg, Inc. | Sound model generator and synthesizer with graphical programming engine |
JPH07146679A (ja) * | 1992-11-13 | 1995-06-06 | Internatl Business Mach Corp <Ibm> | 音声データを変換する方法及びシステム |
US5613147A (en) * | 1993-01-08 | 1997-03-18 | Yamaha Corporation | Signal processor having a delay ram for generating sound effects |
JP2850707B2 (ja) * | 1993-06-15 | 1999-01-27 | ヤマハ株式会社 | 楽音制御装置 |
US5596159A (en) * | 1995-11-22 | 1997-01-21 | Invision Interactive, Inc. | Software sound synthesis system |
-
1996
- 1996-03-12 JP JP8083157A patent/JP2970526B2/ja not_active Expired - Fee Related
-
1997
- 1997-01-15 DE DE69705434T patent/DE69705434T2/de not_active Expired - Lifetime
- 1997-01-15 EP EP97100550A patent/EP0785539B1/de not_active Expired - Lifetime
- 1997-01-16 KR KR1019970001193A patent/KR100478469B1/ko not_active Expired - Fee Related
- 1997-01-16 SG SG1997000103A patent/SG65634A1/en unknown
- 1997-01-16 US US08/784,232 patent/US6023016A/en not_active Expired - Lifetime
- 1997-01-16 CN CNB971022534A patent/CN1159698C/zh not_active Expired - Fee Related
- 1997-01-16 CN CN2004100485456A patent/CN1545084B/zh not_active Expired - Fee Related
- 1997-01-16 CN CN2006100998189A patent/CN1932969B/zh not_active Expired - Fee Related
-
2004
- 2004-07-23 KR KR1020040057745A patent/KR100500077B1/ko not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
SG65634A1 (en) | 1999-06-22 |
US6023016A (en) | 2000-02-08 |
CN1164726A (zh) | 1997-11-12 |
EP0785539B1 (de) | 2001-07-04 |
CN1545084B (zh) | 2010-11-24 |
CN1545084A (zh) | 2004-11-10 |
JP2970526B2 (ja) | 1999-11-02 |
CN1159698C (zh) | 2004-07-28 |
EP0785539A1 (de) | 1997-07-23 |
CN1932969A (zh) | 2007-03-21 |
KR100478469B1 (ko) | 2005-09-14 |
KR970059908A (ko) | 1997-08-12 |
DE69705434D1 (de) | 2001-08-09 |
KR100500077B1 (ko) | 2005-07-12 |
JPH09258737A (ja) | 1997-10-03 |
CN1932969B (zh) | 2011-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69625990T2 (de) | Verarbeitungssystem für Musikinformation | |
DE69711518T2 (de) | Auf Software basierendes Tonquellensystem und Verfahren zur Erzeugung von akustischen Wellenformdaten | |
DE69619587T2 (de) | Verfahren und Vorrichtung zur Tonerzeugung | |
DE69608292T2 (de) | Audio-synthesizer | |
DE69705434T2 (de) | Tonerzeugungssystem unter Verwendung eines Computerprogrammes | |
DE69127048T2 (de) | Verfahren und Vorrichtung zur Editierung von MIDI-Dateien | |
DE69313147T2 (de) | Tonsignal-Generator mit Adapter zur Verbindung mit einem Personal-Computer | |
DE69615455T2 (de) | Musiksystem, Tonerzeuger und Verfahren zur Tonsynthetisierung | |
DE69617853T2 (de) | Bearbeitungssystem für Musikdaten | |
DE69615284T2 (de) | Synthesizer mit Erkennung der Tonhöhe und des Tonausgangspunkts eines Saiteninstruments zur Tonerzeugung | |
DE69724919T2 (de) | Verfahren zur Erzeugung von Musiktönen | |
DE69618535T2 (de) | Verfahren zur Tonerzeugung durch Hardware- und Softwarequellen | |
DE3786654T2 (de) | Tonsignal-Erzeugungsvorrichtung mit einer digitalen Ton-Speicher-Funktion. | |
DE102007049662B4 (de) | Musikklanggenerator | |
DE3689928T2 (de) | Effektvorrichtung für elektronisches Musikinstrument. | |
DE69613950T2 (de) | Verfahren und Vorrichtung zur Tonerzeugung | |
DE69632695T2 (de) | Verfahren und Vorrichtung zur Musiktonerzeugung | |
DE69519149T2 (de) | Elektronisches Musikinstrument mit Klangveränderung durch äussere Angabe von Auswahl-Möglichkeiten | |
DE69732061T2 (de) | Datenverarbeitungssystem und -verfahren | |
DE69630623T2 (de) | Musikrechner bestehend aus vereinbaren Softwaremodulen | |
DE68914152T2 (de) | Automatische Spiel- und Tonerzeugungseinheit in einer automatischen Musikanlage. | |
DE60033098T2 (de) | Verfahren und Vorrichtung zur Aufnahme/Wiedergabe oder Erzeugung von Wellenformen mittels Zeitlageinformation | |
DE69618738T2 (de) | Verfahren und Vorrichtung zur Tonerzeugung | |
DE69613049T2 (de) | Verfahren und Vorrichtung zur auf Software basierten Tonwellenformerzeugung | |
DE69515569T2 (de) | Elektronisches Musikinstrument mit einer Umsetzungsfunktion für Effektdaten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |