JP3781171B2 - 楽音発生方法 - Google Patents

楽音発生方法 Download PDF

Info

Publication number
JP3781171B2
JP3781171B2 JP2000187176A JP2000187176A JP3781171B2 JP 3781171 B2 JP3781171 B2 JP 3781171B2 JP 2000187176 A JP2000187176 A JP 2000187176A JP 2000187176 A JP2000187176 A JP 2000187176A JP 3781171 B2 JP3781171 B2 JP 3781171B2
Authority
JP
Japan
Prior art keywords
waveform data
musical sound
buffer
musical
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000187176A
Other languages
English (en)
Other versions
JP2002006844A (ja
Inventor
忠彦 池谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2000187176A priority Critical patent/JP3781171B2/ja
Priority to US09/887,406 priority patent/US6414232B2/en
Publication of JP2002006844A publication Critical patent/JP2002006844A/ja
Application granted granted Critical
Publication of JP3781171B2 publication Critical patent/JP3781171B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/18Selecting circuits
    • G10H1/183Channel-assigning means for polyphonic instruments
    • G10H1/185Channel-assigning means for polyphonic instruments associated with key multiplexing
    • G10H1/186Microprocessor-controlled keyboard and assigning means
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/155Musical effects
    • G10H2210/245Ensemble, i.e. adding one or more voices, also instrumental voices
    • G10H2210/251Chorus, i.e. automatic generation of two or more extra voices added to the melody, e.g. by a chorus effect processor or multiple voice harmonizer, to produce a chorus or unison effect, wherein individual sounds from multiple sources with roughly the same timbre converge and are perceived as one
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/155Musical effects
    • G10H2210/265Acoustic effect simulation, i.e. volume, spatial, resonance or reverberation effects added to a musical sound, usually by appropriate filtering or delays
    • G10H2210/281Reverberation or echo
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/201Physical layer or hardware aspects of transmission to or from an electrophonic musical instrument, e.g. voltage levels, bit streams, code words or symbols over a physical link connecting network nodes or instruments
    • G10H2240/275Musical interface to a personal computer PCI bus, "peripheral component interconnect bus"
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/291SCSI, i.e. Small Computer System Interface
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/311MIDI transmission

Landscapes

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

Description

【0001】
【発明の属する技術分野】
この発明は、演算処理装置上で所定のソフトウエアを実行することにより楽音を生成する楽音発生方法に関する。
【0002】
【従来の技術】
従来より、CPUなどの汎用の演算処理装置上で所定のソフトウエアを実行することにより楽音を生成する楽音発生方法が知られている。これは、いわゆるソフトウエア音源あるいはソフト音源と呼ばれる方式のものである。ソフト音源では、所定時間ごとに生成プログラムを実行し、与えられた楽音制御データに基づいた複数チャンネル分の楽音を生成する。
【0003】
【発明が解決しようとする課題】
ところで、ソフト音源を実現するリアルタイムシステムでは、プロセッサの負荷が増大したなどの理由で波形生成ができなくなった場合に、音がとぎれる、あるいはノイズを発生する、という問題点がある。
【0004】
また、プロセッサの負荷が増大したなどの理由で、演奏データが発生あるいは入力したタイミングで当該演奏データの処理ができなかった場合、当該演奏データは処理されないで済まされてしまうか、あるいは後で処理を行なった場合に不自然な楽音制御になってしまう、という問題点があった。
【0005】
この発明は、上述の従来技術における問題点に鑑み、プロセッサの負荷が増大したなどの理由で波形生成ができなかったときでも、波形出力をとぎれさせ、あるいはノイズを発生するようなことのない楽音発生方法を提供することを目的とする。
【0006】
【課題を解決するための手段】
この目的を達成するため、請求項1に係る発明は、ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、前記バッファ記憶手段上に、楽音発生指示を記憶できる第1バッファと、複数時点分の楽音波形データを記憶できる第2バッファとを用意するステップと、リアルタイムの楽音発生指示を受け取り、前記第1バッファに書き込むステップと、前記第1バッファの楽音発生指示を読み出し、該楽音発生指示と、前記受け取るステップが該楽音発生指示を受け取ってからの時間遅れとに応じた楽音制御データを設定するステップと、空き時間を検出し、前記楽音制御データに基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、楽音波形データを生成して前記第2バッファの対応する時点の楽音波形データに足し込むステップと、現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、前記楽音制御データに基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、現時点の楽音波形データを生成して前記第2バッファの現時点の楽音波形データに足し込むステップと、前記第2バッファに記憶された楽音波形データを再生するステップとを備え、前記時間遅れが所定時間以上の場合は、持続部からの楽音波形データが生成され、そうでない場合は、立ち上がり部からの楽音波形データが生成されることを特徴とする。
【0007】
請求項2に係る発明は、ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、前記バッファ記憶手段上に、複数時点分の楽音波形データを記憶できるバッファを用意するステップと、リアルタイムの楽音発生指示を受け取るステップと、空き時間を検出し、前記楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、現時点より後の時点の楽音波形データを生成して前記バッファの対応する時点の楽音波形データに足し込むステップと、現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、楽音波形データを生成して前記バッファの現時点の楽音波形データに足し込むステップと、前記バッファに記憶された楽音波形データを再生するステップとを備えたことを特徴とする。
【0008】
請求項3に係る発明は、ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、前記バッファ記憶手段上に、複数トラックの各複数時点分の楽音波形データを記憶できるバッファを用意するステップと、楽音発生指示を受け取るステップと、空き時間を検出し、前記楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点より後の時点の楽音波形データを生成して、該複数チャンネルで形成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの対応する時点の各トラックの楽音波形データに足し込むステップと、現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点の楽音波形データをそれぞれ生成し、該複数チャンネルで生成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの現時点の各トラックの楽音波形データに足し込むステップと、前記バッファに記憶された複数トラックの楽音波形データを再生するステップとを備えたことを特徴とする。
請求項4に係る発明は、ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、前記バッファ記憶手段上に、複数トラックの各複数時点分の楽音波形データを記憶できるバッファを用意するステップと、楽音発生指示及び発音停止指示を受け取るステップと、空き時間を検出し、前記楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点より後の時点の楽音波形データを生成して、該複数チャンネルで形成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの対応する時点の各トラックの楽音波形データに足し込むステップと、現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点の楽音波形データをそれぞれ生成し、該複数チャンネルで生成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの現時点の各トラックの楽音波形データに足し込むステップと、前記バッファに記憶された複数トラックの楽音波形データを再生するステップと、前記楽音停止指示に応じて、対応する楽音波形データを生成中のチャンネルを検出し、前記バッファに記憶された現時点より後の時点の楽音波形データのうちの、検出されたチャンネルの楽音波形データが足し込まれている楽音波形データの再形成を指示するステップとを備えたことを特徴とする。
【0009】
請求項に係る発明は、請求項3または4に記載の楽音発生方法において、さらにトラック制御データを受け取るステップを備え、該トラック制御データに基づいて、前記バッファに記憶された各トラックの楽音波形データを制御して出力することを特徴とする。
【0010】
請求項に係る発明は、請求項2から4の何れか1つに記載の楽音発生方法において、前記現時点より後の時点の楽音波形データを生成する処理は、過去に受け取った楽音発生開始指示に基づいて楽音波形データを先行生成していることを特徴とする。
【0011】
請求項に係る発明は、請求項2から4の何れか1つに記載の楽音発生方法において、前記現時点より後の時点の楽音波形データを生成する処理は、自動演奏の曲データに基づいて楽音波形データを先行生成していることを特徴とする。
【0012】
請求項に係る発明は、請求項2から4の何れか1つに記載の楽音発生方法において、前記波形生成ソフトウェアによる楽音生成の際、現時刻と楽音発生指示を受け取った時刻とを比較し、現時刻の楽音発生指示時刻からの遅れが所定値より小さい場合は立ち上がり部から開始する楽音波形データを生成し、前記遅れが所定値より大きい場合は持続部から開始する楽音波形データを生成することを特徴とする。
【0013】
本発明に係る楽音発生方法を適用することにより、ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、楽音発生指示を受け取る手段と、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、楽音波形データを生成出力するとともに、現時点より後に出力される予定の楽音波形データを先行生成する手段と、前記先行生成された楽音波形データを記憶するバッファ記憶手段と、波形生成できない事態が発生した場合、その時点で前記バッファ記憶手段に先行生成されている楽音波形データを出力する手段とを備えたことを特徴とする楽音発生装置が得られる。
【0014】
また、ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、楽音発生指示を受け取る手段と、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで楽音波形データをそれぞれ生成し、該複数チャンネルで生成された楽音波形データを加算して1トラックの楽音波形データとして出力する手段と、現時点より後に出力される予定の複数チャンネル分の楽音波形データを先行生成するとともに、該複数チャンネルで生成された楽音波形データを加算して1トラックの楽音波形データとしてバッファ記憶手段に記憶する手段と、波形生成できない事態が発生した場合、その時点で前記バッファ記憶手段に先行生成されている楽音波形データを出力する手段とを備えたことを特徴とする楽音発生装置が得られる。
【0015】
また、さらに前記楽音発生指示に基づく楽音波形データの先行生成処理ができない事態が発生した場合に、その楽音発生指示を待機しておく手段と、後に処理可能になったときに、前記待機してある楽音発生指示に基づく楽音波形データの生成処理を行なう手段とを備えたことを特徴とする楽音発生装置が得られる。
【0016】
さらに、前記波形生成ソフトウェアによる楽音生成の際、現時刻と楽音発生開始時刻とを比較し、現時刻の発生開始時刻からの遅れが所定値より小さい場合は立ち上がり部から開始する楽音波形データを生成し、前記遅れが所定値より大きい場合は持続部から開始する楽音波形データを生成することを特徴とする楽音発生装置が得られる。
【0017】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【0018】
図1は、この発明に係る楽音発生方法を適用した電子楽器の構成を示す。この電子楽器は、中央処理装置(CPU)101、タイマ102、HOST(ホスト)−PCI(Peripheral Component Interconnect)ブリッジ103、リードオンリメモリ(ROM)104、ランダムアクセスメモリ(RAM)105、表示用入出力(I/O)インタフェース106、表示器107、キーボードI/Oインターフェース108、キーボード109、ローカルバス110、PCIバス111、ネットワークI/Oインターフェース112、SCSI(Small Computer System Interface)114、ハードディスク115、MIDI(Musical Instruments Digital Interface)入出力インターフェース116、および音声入出力ボード120を備えている。
【0019】
CPU101は、この装置全体の動作を制御する。タイマ102は、所定時間間隔でタイマ割り込み信号を発生するためのタイマである。ホスト−PCIブリッジ103は、CPUやメモリを接続するローカルバス110と周辺機器を接続するためのPCIバス111との間で各種信号の授受を制御する。ROM104は、BIOS(BASIC INPUT/OUTPUT SYSTEM)などを格納した記憶装置である。RAM105は、CPU101が実行するプログラムをロードしたり各種バッファ領域を確保する記憶領域である。RAM105には、再生用バッファであるPCバッファ(後に詳述する)などが設けられる。表示器107は、インターフェース106を介して受け取った各種のデータを表示する。キーボード109は、インターフェース108を介して各種の情報を入力するために用いるタイピングキーボードである。ユーザは、キーボード109および表示器107を用いてこの装置に対し各種の設定操作や指示操作を行なうことができる。ローカルバス110は、CPUの専用バスと周辺I/Oなどを接続するためのローカルPCIバスとの2つのバスにより構成するようにしてもよい。
【0020】
PCIバス111には、各種の周辺機器が接続される。ネットワークI/Oカード112を介して外部のネットワーク113に接続することができる。また、SCSI114を介してハードディスク115が接続されている。音声入出力ボード120は、転送回路121、RAM122、転送回路123、ミキサ124、マルチDSP(デジタルシグナルプロセッサ)125、アナログ/デジタル(A/D)変換器126、デジタル/アナログ(D/A)変換器128、タイミング発生器130、カウンタ131、およびレジスタ群132を備えている。なお、図1に図示しているように、RAM105をRAM1と、転送回路121を転送回路1と、RAM122をRAM2と、転送回路123を転送回路2と、それぞれ、呼ぶものとする。
【0021】
転送回路1は、PCIバス111をいわゆるバースト的に使って複数サンプルを一辺に高速にRAM2に転送するための回路である。RAM2は、再生用バッファであるPバッファ、および録音用バッファであるRバッファを含む。これらのバッファは、複数設定されている再生トラック(本例では4トラック)の各トラックに対応して設けられている。1トラックのPバッファは、2個のバッファからなり、いわゆるダブルバッファ的になっている。トラックごとに、一方のバッファが空いたとき転送回路1を経由して該バッファへのサンプルの転送を開始し、そのとき他方のバッファは転送回路2を経由してサンプル出力用に用いる。転送回路2によるサンプルの出力は、サンプリング周期ごとに継続的に行なわれる。転送回路2は、RAM2のPバッファからサンプルをミキサ124に転送し、あるいはミキサ124から出力された録音用のサンプルをRAM2のRバッファに転送する機能を有する。該録音用サンプルのRバッファへの転送も、サンプリング周期毎に行なわれる。RAM2は、転送回路1と転送回路2により、時分割アクセスされる。1DACサイクル(例えば、44.1kHz)を半分に分けて、その前半を転送回路1が使用し、後半を転送回路2が使用する。
【0022】
なお、RAM2上にある再生用のPバッファおよび録音用のRバッファに対する転送回路1のアクセスは、CPU101のアクセスより優先度が高い。すなわち、転送回路1がアクセスをしようとしたときにCPU101がアクセスをしていたら、該CPU101のアクセスが中断され、転送回路1によるアクセスが先に行なわれる。ただし、転送回路1による転送動作は1DACの半分の期間は必ず休みになるので、CPU101は最悪でも残りの期間を使用してアクセスすることができる。
【0023】
転送回路1および転送回路2は、タイミング発生器130から出力されるタイミング信号に応じて転送を実行する。タイミング発生器130は、カウンタ131から出力されるカウント出力に応じてタイミング信号を発生する。レジスタ群132は、転送アドレスなどの各種データを保持するレジスタから構成されている。
【0024】
ミキサ124は、36系統の入力端子と24系統の出力端子を備え、それぞれの入力を適宜ミキシングして、それぞれの出力端子に出力することができる。どの入力を用いてどの出力端子の出力信号を生成するかは、CPU101から指示することができる。マルチDSP125は、複数のマイクロプログラムが動作するようになっており、楽音波形サンプルに対してエフェクト付与などの処理を行なう。A/D変換器126には、外部マイク127が接続される。A/D変換器126は、外部音を入力しアナログ/デジタル変換してミキサ124に出力する。ミキサ124からD/A変換器128に出力された楽音波形は、デジタルアナログ変換されてサウンドシステム129により放音される。転送回路2以降のミキサ124側の各部は、サンプリング周期ごとの処理で動作する。
【0025】
なお、本例では、CPU101は16チャンネル分の楽音波形生成を行ない、それら16チャンネル分の楽音波形データをRAM1上で4トラックにまとめ、その4トラック分の楽音波形データを転送回路1経由でRAM2に転送する。具体的には、RAM1上に4つのトラックに対応してPCバッファを設けてあり、16チャンネル分の楽音波形データを4つの各トラックのPCバッファにまとめる。各トラックのPCバッファの楽音波形データを、転送回路1経由でRAM2上の4つの各トラック対応のPバッファに転送する。4つの各トラック対応のPバッファの楽音波形データを転送回路2経由でミキサ124に入力する。ミキサ124は、転送回路2から16系統入力可能であるが、ここでは4系統のみ使用することになる。
【0026】
図10に、ミキサ124とDSP125によるミキサ/エフェクト設定の一例を示す。PCB1001〜1004は、RAM1上に設けられた4トラックのPCバッファを示す。各PCバッファ1001〜1004の楽音波形信号は、(転送回路1、RAM2上のPバッファ、および転送回路2経由で)ミキサ124に入力する。1011〜1013は、ミキサ124に設定されている3つの個別のミキサである。コーラスエフェクト1021およびリバーブエフェクト1022は、DSP125で実現されているエフェクト付与回路である。DAC1031は、D/A変換器128に相当する。本実施の形態では、ミキサの出力チャンネル数が充分あるので、各ラインはステレオ信号としてL/R別に処理することができる。
【0027】
各レジスタその他について簡単に説明する。なお、以下のレジスタで添字xを使っているもの(すなわち[x]が付いているもの)は、そのxはトラック番号を示すものとする。
(a)SA[x]:RAM1上に設けられる再生バッファであるPCバッファのスタートアドレスを格納するレジスタである。
(b)EA[x]:RAM1上に設けられる再生バッファであるPCバッファのエンドアドレスを格納するレジスタである。
(c)TP[x]:PCバッファ上の波形データを読み出してRAM2上のPバッファに転送するときの、PCバッファ読み出しアドレスを格納するレジスタ(アドレスカウンタ)である。
(d)TWP[x]:PCバッファ上の波形データを読み出してRAM2上のPバッファに転送するときの、Pバッファ書き込みアドレスを格納するレジスタ(アドレスカウンタ)である。
(e)APP[x]:サンプリング周期でPバッファ上の波形データを読み出してミキサ124に出力するときの読み出しアドレスを格納するレジスタ(読み出しカウンタ)である。
(f)ミキサデータ:ミキサ124に設定するデータである。16トラックのミキシング比、A/D変換器126から入力する4トラックのミキシング比、DSP125から入力する16トラックのミキシング比などを規定する。
(g)DSPデータ:DSP125に設定するデータである。DSPで実行するマイクロプログラムや入出力関係などを規定する。
【0028】
なお、上記レジスタ類などの記号は、その記憶領域そのものを示すとともに、その記憶領域に記憶されたデータをも示すものとする。例えば、SA[x]は、スタートアドレスを格納するレジスタを示すとともに、該レジスタに格納されているスタートアドレスのデータをも示すものとする。
【0029】
図2に、再生用バッファの構成およびデータの流れを示す。上述したように、再生用バッファとして、RAM1上に4つのトラックに対応するPCバッファを設け、RAM2上に4つのトラックに対応するPバッファを設けている。1トラック分(x=0,1,2,3としてxトラック)のバッファの利用方法について説明する。RAM1上のPCバッファは、スタートアドレスSA[x]からエンドアドレスEA[x]の範囲となる。スタートアドレスSA[x]とエンドアドレスEA[x]は、CPU101から指定することが可能であり、したがってRAM1上の任意の位置にPCバッファを置くことができる。そのサイズも任意である。CPU101は、このPCバッファ上に波形データを先行生成する。PCバッファには、時間フレームで複数フレーム分の波形データが先行生成される。TP[x]は、PCバッファ上で、転送回路1がRAM2上のPバッファへと転送開始するアドレスを示す。
【0030】
PCバッファのTP[x]位置から転送されたデータは、Pバッファの書き込みアドレスTWP[x]に書き込まれる。RAM2上のPバッファは、波形データの128サンプル(ただし、バッファのサイズは任意)を格納するバッファを2個つなげた形になっている。Pバッファの波形データは、読み出しアドレスAPP[x]から読み出され、ミキサ124に出力される。Pバッファのまん中と末尾には割込み位置が設定されている。サンプリング周期ごとに読み出しアドレスAPP[x]を進めながら波形サンプルを読み出していくとき、当該読み出しアドレスAPP[x]が、この割込み位置に至ったとき、いま読み出していたPバッファのうちの半分が空になったということだから、波形生成のトリガになるハード割込が発生する。このハード割込を契機として、CPU101は、いま空になったPバッファのうちの半分に、次に再生すべきPCバッファの所定の楽音波形データを転送する。
【0031】
なお、リアルタイム演奏に使用できるためには、演奏から楽音出力までの時間を10msec程度に抑えないといけない。サンプリング周波数44.1kHzの場合、10msecは441サンプルに相当する。ソフト音源では、大体、2フレーム程度の時間遅れが発生する。そこで、本実施の形態では、例えば、1フレームを128サンプルとする。つまり、Pバッファのサイズは、128サンプル×2=256サンプルである。
【0032】
PCバッファには、先行して生成される楽音波形が記憶される。先行して記憶できる楽音波形のサンプル数が多いほど、ソフト音源のノイズ防止効果が大になる。本実施の形態では、PCバッファのサイズを、例えば、64フレーム分=128サンプル×64=8kサンプル分とする。
【0033】
図3は、CPU101の制御プログラムのうちソフト音源に係るメインルーチンの処理手順を示す。このメインルーチンは、ソフト音源のドライバとしてオペレーティングシステムに登録されているものである。ソフト音源を使用した楽音生成を行う際には、まずこのドライバ、すなわち図3の処理を起動し、ソフト音源に係るAPIを有効にしておく。
【0034】
図3において、ステップ301で、各種の初期設定を行う。この初期設定で、上述のPCバッファおよびPバッファをゼロクリアする。次に、ステップ302で何らかの起動要因があるか否かチェックし、ステップ303で起動要因があればステップ304に進む。起動要因がなければ再びステップ302に戻る。ステップ302〜304の起動要因の受付が、ソフト音源に係るAPIに対する指示受付に相当する。
【0035】
ステップ304では、発生している起動要因の種類を判別しそれぞれの処理に分岐する。起動要因としては、▲1▼MIDIデータを受信したとき(MIDI−I/O割り込み)、▲2▼RAM1上のMIDIデータを格納するバッファ(以下、Mバッファと呼ぶ)にMIDIデータがあるとき、▲3▼1フレーム分(128サンプル)の楽音生成処理が終了(すなわち、Pバッファの2つのバッファのうちの1つについて波形データの読み出し再生が終わった)したとき(Pバッファ割り込み)、▲4▼空き時間があるとき、▲5▼何らかのスイッチ操作があった場合などその他の場合、▲6▼終了ボタンがクリックされたときがある。以下、これらの起動要因ごとに実行する処理を説明する。
【0036】
起動要因が▲1▼MIDIインタフェース116を介してMIDIデータを受信した場合のときは、ステップ305のMIDI受信イベント処理を行い、その後再びステップ302に戻る。MIDIデータの受信およびステップ305のMIDI受信イベント処理が、演奏入力の受付に相当する。ステップ304で起動要因が▲2▼MバッファにMIDIデータがある場合のときは、ステップ306のMIDI制御イベント処理を行い、その後再びステップ302に戻る。
【0037】
ステップ302で起動要因が▲3▼フレーム割り込み(1フレーム再生完了)であるときは、ステップ307の楽音生成処理を行い、その後再びステップ302に戻る。フレーム割り込みは、音源ボードが1フレーム再生完了する毎に発生するハードウェア割り込みである。楽音生成処理では、一度に1フレーム分の波形データ(Pバッファの大きさの半分に相当する数の波形サンプル)を生成し、PCバッファに書き込む。
【0038】
ステップ304で起動要因が▲4▼空き時間ありであるとき(実行すべき処理がないとき)は、ステップ308で空き時間処理を行い、その後再びステップ302に戻る。ステップ304で起動要因が▲5▼スイッチ操作などのその他の場合は、ステップ309でその他の処理を行い、再びステップ302に戻る。ステップ304で起動要因が▲6▼ソフト音源の終了要求であったときは、ステップ310で終了処理を行った後、処理を終了する。
【0039】
なお、上述した▲1▼〜▲6▼の起動要因は、▲1▼>▲3▼>▲2▼>▲5▼>▲6▼>▲4▼の優先度を設定している。
【0040】
図4は、図3のステップ305のMIDI受信イベント処理の処理手順を示す。MIDI受信イベント処理では、ステップ401でMIDIインタフェース116からイベントデータEDを取り出し、ステップ402でRAM1上のMバッファにイベントデータEDと受信時刻JTを書き込み、処理を終了する。
【0041】
図5は、図3のステップ306のMIDI制御イベント処理の処理手順を示す。MIDI制御イベント処理では、まずステップ501でMバッファよりイベントデータEDと受信時刻JTを取り出し、ステップ502でイベントデータEDのデータ種別に応じて分岐する。イベントデータEDがノートオンであったときは、ステップ503でノートオン処理を行う。イベントデータEDがノートオフであったときは、ステップ504でノートオフ処理を行う。イベントデータEDがトラックのレベルデータであったときは、ステップ505でトラックレベル制御処理を行う。イベントデータEDがエフェクトレベルデータであったときは、ステップ506でエフェクトレベル制御処理を行う。イベントデータEDがピッチベンドデータであったときは、ステップ507でピッチベンド制御処理を行う。イベントデータEDがその他のデータであったときは、ステップ508でその他の制御処理を行う。ステップ503〜508の各処理の後、処理を終了する。
【0042】
上述のステップ503〜507の処理は、以下の3つのタイプに分けることができる。タイプ1の処理は、ノートオン処理である。タイプ1の処理では、PCバッファ上に先行生成されている楽音波形データに、新たに発音開始する楽音波形を追加する。タイプ2は、ノートオフ処理、ピッチベンドレベル制御処理、およびビブラートレベル処理(その他制御処理508中)である。タイプ2の処理では、先行生成されている楽音波形を破棄し、生成し直す。タイプ3の処理は、トラックレベル制御処理、エフェクトレベル制御処理、およびエフェクト切り替え処理(その他制御処理508中)である。タイプ3の処理では、先行生成されている楽音波形自体は何の変更も加える必要がない。ミキサ124に設定する混合比を変更することにより、トラック別の音量やエフェクトレベルを制御することができる(これらを制御するための制御データが「トラック制御データ」である)。DSP125のプログラムを変更することで、エフェクトの切り替えができる。
【0043】
図6は、図5のステップ503のノートオン処理の処理手順を示す。ノートオン処理に入ってきたときは、Mバッファより取り出したイベントデータEDとその受信時刻JTは分かっている。まずステップ601で、発音チャンネルの割り当てを行う。次にステップ602で、現在時刻GTと先行時刻STとを比較し、先行時刻STの方が時刻が進んでいるときはステップ605に進み、そうでないとき(作り置きしてある波形データがないとき)はステップ603に進む。先行時刻STとは、PCバッファ上に先行生成してある波形データについて、いつの時点まで先行生成してあるかを示すデータである。
【0044】
現在時刻GTより先行時刻STがあとのときは、先行生成してあるデータがあるということだから、ステップ605で、当該ノートオンの前のノートオンが来ていて先行生成してある波形にさらに後追いの波形を追加中か否か(すなわち、該前のノートオンに応じて今回割り当てたのとは別の発音チャンネルに関して既にステップ606,607が実行され、波形の追加が実行中であるか否か)判定する。これは、いったん追加を始めたらそれを続けないと音が連続しないので、そちらを優先して実行するための判別処理である。追加中であるときは、ステップ608で、イベントデータEDと受信時刻JTと発音割り当てしたチャンネル番号とをTバッファに格納し、追加発音開始待ちに設定する。これは、先に追加実行中の波形を処理しなくてはいけないからである。なお、Tバッファとは、追加発音開始待ち状態のデータを格納しておくRAM1上のバッファである。ステップ608の後、処理を終了する。
【0045】
ステップ605で追加中でないときは、ステップ606で、今回のノートオンの波形を追加する。すなわち、発音割り当てしたチャンネルの発音制御レジスタに、立ち上がりからの発音制御データの設定(時間遅れが小のとき)、または持続部以降の発音制御データの設定(時間遅れが大のとき)を行う。次にステップ607で、そのチャンネルに追加の発音開始を指示する。このとき、追加時刻TTには現在時刻GTをセットし、レジスタkにチャンネル番号をセットする。追加時刻TTとは、先行生成してある波形データに対して新たな波形を追加開始する時点を示すデータである。kはチャンネル番号を格納するワークレジスタである。ステップ607の後、処理を終了する。
【0046】
ステップ602で先行生成してある波形データがないときは、ステップ603で、今回のノートオンの波形を追加する。すなわち、発音割り当てしたチャンネルの発音制御レジスタに、立ち上がりからの発音制御データの設定(時間遅れが小のとき)、または持続部以降の発音制御データの設定(時間遅れが大のとき)を行う。次にステップ604で、割り当てたチャンネルに通常の発音開始を指示し、処理を終了する。
【0047】
なお、発音割り当てしたチャンネルの発音制御レジスタに発音制御データを設定する場合の時間遅れの判定は、現在時刻GTと受信時刻JT(発音開始すべき時刻といってもよい)とを比較し、例えば受信時点から100msec程度以上遅れたら時間遅れ大とし、そうでなければ小とする、などの方式を採ればよい。
【0048】
図7は、図5のステップ504のノートオフ処理の処理手順を示す。ステップ701で、発音中のチャンネルからノートオフすべきチャンネルを検出する。ステップ702でノートオフすべきチャンネルが有るか否か判定し、無かったときは、入力したノートオフを無視して処理を終了する。有ったときは、ステップ703で、そのチャンネルの発音制御レジスタにノートオフを書き込む。次にステップ704で、現在時刻GTと先行時刻STとを比較する。先行して生成してある波形データがあるときは、その先行生成波形についても当該チャンネルをノートオフした波形に変更しなければならないので、ステップ705で当該チャンネルの波形を足し込んであったトラックのPCバッファの現在時刻GT+1以降の波形をキャンセルし、波形の再形成を指示して処理を終了する。ステップ704で先行生成している波形がないときは、そのまま処理を終了する。
【0049】
図8は、図3のステップ308の空き時間処理の処理手順を示す。まずステップ801で、追加があるか否か(すなわち、図6のステップ607の指示があるか否か)判定する。追加があるときは、ステップ802で追加時刻TTに1加算する。次にステップ803で、追加するチャンネルであるkチャンネルの時刻TTの楽音波形を生成し、ステップ804で、そのチャンネルの楽音波形を足し込むべきトラックのPCバッファの時刻TTの位置に足し込む。ステップ805で、追加時刻TTと先行時刻STとが一致しているか否か判定し、一致しているときは以降の波形生成の必要がないので、ステップ806で、Tバッファを参照して追加発音開始待ち(ステップ608で設定)があるか否か判定する。
【0050】
ステップ806で追加発音開始待ちがあるときは、ステップ807で、追加待ちのイベントデータEDと現在時刻GTとチャンネル番号とをTバッファから取り出し、現在時刻GTを追加時刻TTに、チャンネル番号をレジスタkに、それぞれセットする。追加発音待ちがないときは、次回のステップ801で「追加なし」と判断されるように設定を行ない、ステップ809へ進む。ステップ807の後、ステップ808で、kチャンネルの発音制御レジスタに、立ち上がりからの発音制御データの設定(時間遅れ小のとき)、または持続部以降の発音制御データの設定(時間遅れ大のとき)の処理を行う。次にステップ809で、空き時間があるか否か判定し、空き時間があるときはステップ801に戻って、空き時間処理を継続する。空き時間がないときは、そのまま処理を終了する。
【0051】
ステップ801で追加がないときは、ステップ811で、ノートオフでのキャンセル指示(ステップ705の指示)があるか否か判定する。キャンセルがあるときは、ステップ812で、キャンセルされたトラックに対応する複数チャンネルの波形を再形成し、同トラックのPCバッファに書き込む。この処理は、追加と同様に複数回の処理で行う。ステップ812の後、ステップ809に進む。
【0052】
ステップ811でキャンセルがないときは、ステップ813で、先行時刻ST(現在作成中の時刻)までの全発音チャンネルの波形データが生成済か否か判定する。生成済であるときは、ステップ814で、PCバッファに空きがあるか否か判定し、空きがないときは処理を終了する。PCバッファに空きがあるときは、ステップ815で先行時刻STに1加算し、ステップ816で先行時刻STの曲データを再生する。これはイベントデータEDが再生された場合は対応する制御処理を実行するものであり、自動演奏を再生する処理である。例えば、ノートオンのイベントが再生されたら、発音チャンネルを割り当て、割り当てたチャンネルの発音制御レジスタに該ノートオンに応じた楽音の発音制御データを設定し、発音開始を指示する。また、ノートオフイベントが再生されたら、対応する楽音を生成中の発音チャンネルを検出して、検出されたチャンネルの発音制御レジスタにノートオフを書き込む。次にステップ817で先行時刻STの全トラックのPCバッファをクリアする。これは今から作る波形を書き込むためのバッファを全部ゼロクリアする処理である。ステップ817の後、ステップ818に進む。ステップ813で先行時刻STの全発音チャンネル生成済でないときは、ステップ818に進む。
【0053】
ステップ818でレジスタjに未生成のチャンネル番号をセットし、ステップ819でjチャンネルの楽音波形を生成する。次にステップ820で、生成した楽音波形を、当該チャンネルの波形を足し込むべきトラックのPCバッファの先行時刻STの位置に足し込み、ステップ809に進む。
【0054】
図9は、図3のステップ307の楽音生成処理の処理手順を示す。まずステップ901で、現在時刻GTに1加算する。次にステップ902で、現在時刻GTと先行時刻STとを比較する。現在時刻GTが先行時刻STより進んでいるとき、すなわち先行波形が全くできていないときは、ステップ903で先行時刻STに現在時刻GTをセットし、ステップ912で先行時刻STの曲データを再生し、ステップ904で全トラックのPCバッファの先行時刻STの位置をゼロクリアし、ステップ905に進む。なお、ステップ912は、ステップ816と同様の処理である。ステップ902で現在時刻GTと先行時刻STとが一致しているときは、そのままステップ905に進む。
【0055】
ステップ902で現在時刻GTより先行時刻STが進んでいるときは、先行して波形が作ってあるということだから、ステップ910に進み、追加キャンセル(図7のステップ705の指示)があるか否か判定する。追加キャンセルがあれば、先行時刻STは進んでいるが、まだ手直しが必要ということであるから、手直し分を作るためステップ905に進む。ステップ910で追加キャンセルがなければ、先行波形は完成されているということだから、そのまま再生するためステップ911に進む。
【0056】
ステップ905では、波形データを先行生成する時間があるか否か判定する。生成する時間があるときは、ステップ906で、現在時刻GTの全発音チャンネル生成済か否か判定する。ステップ905で生成時間がないとき、またはステップ906で現在時刻GTの全発音チャンネルが生成済であったときは、ステップ911に進み、現在時刻GTの全トラックのPCバッファの再生許可を行ない、処理を終了する。ステップ906で現在時刻GTの全発音チャンネル生成済でないときは、ステップ907でレジスタiに未生成のチャンネル番号をセットし、ステップ908でiチャンネルの楽音波形を生成し、ステップ909で生成した楽音波形をそのチャンネルの波形を足し込むべきPCバッファの現在時刻GTの位置に足し込み、ステップ905に戻る。ステップ911の再生許可により、PCバッファの現在時刻GTの波形データが空になったPバッファに転送され次の再生に用いられる。
【0057】
上記実施の形態において、曲データに基づく自動演奏は、図8のステップ816に示されている。一方、図6および図7には、リアルタイムに入力するMIDIデータに基づくノートオン/ノートオフ処理が示されている。図9のステップ905〜909の処理、図8のステップ812、ステップ803〜804、ステップ818〜820の処理は、それぞれ、それらのノートオン等のイベントに応じて発音制御レジスタに設定された発音チャンネルの発音制御データに基づいて、対応する楽音波形データを形成する処理である。
【0058】
上記実施の形態では、空き時間処理で先行して波形生成を行ない、Pバッファのうちの半分のバッファが空になったときに先行生成してある波形を楽音生成処理でPバッファに転送し、再生することができる。この際、例えば空き時間処理では空き時間が足りなくても必要なチャンネルの波形生成ができない事態が発生しても、処理できる限りのチャンネルについては波形生成してPCバッファに足し込むので、その時点で先行生成してある波形データで再生される。したがって、波形生成ができなくなっても、音が途切れるあるいはノイズを発生すると言うことはない。また、既に先行生成されている波形に対して、追加の発音制御データが発生した場合、その追加分について波形生成して既に先行生成されている波形に足し込むので、追加の発音も適正に処理される。
【0059】
さらに、例えば追加が指示されているときにさらに次の追加が来たときなど、ノートオンの処理ができない事態が発生した場合は、その時刻とノートオンを追加発音開始待ちとしてTバッファに格納して待機しておき、後に処理可能になったときに、そのノートオンを処理する。したがって、ノートオンの処理ができない事態が発生した場合でも、後でできる限りの追加分の処理が為される。
【0060】
また、発音開始指示においては楽音の発生開始すべき時刻からの遅れを検出し、遅れが小さい場合は立ち上がり部から開始する楽音を生成し、遅れが大きい場合は持続部から開始する楽音を生成しているので、不自然な楽音にならない。
【0061】
【発明の効果】
以上説明したように、この発明によれば、空き時間などに先行して波形生成を行ない、波形生成できない事態が発生した場合に、その時点で先行生成してある波形データを出力するので、リアルタイムシステムでプロセッサの負荷が増大したなどの理由で波形生成ができなくなった場合に、音がとぎれる、あるいはノイズを発生するといった不自然な楽音制御を抑えることができる。また、受け付けた楽音発生指示に対して楽音生成処理ができない事態が発生した場合、その楽音発生指示を待機しておき、後に処理可能になったときに処理するようにしているので、後でできる限りの追加分の処理が実行され、楽音発生指示を捨ててしまうことを極力なくすことができる。さらに、楽音発生開始すべき時刻からの遅れを検出し、遅れが小さいときは立ち上がり部から開始する楽音を生成し、遅れが大きいときは持続部から開始する楽音を生成するので、不自然な楽音にならないという効果がある。
【図面の簡単な説明】
【図1】この発明に係る楽音発生方法を適用した電子楽器の構成図
【図2】再生用バッファの構成およびデータの流れを示す図
【図3】ソフト音源に係るメインルーチンの処理手順を示すフローチャート図
【図4】MIDI受信イベント処理の処理手順を示すフローチャート図
【図5】MIDI制御イベント処理の処理手順を示すフローチャート図
【図6】ノートオン処理の処理手順を示すフローチャート図
【図7】ノートオフ処理の処理手順を示すフローチャート図
【図8】空き時間処理の処理手順を示すフローチャート図
【図9】楽音生成処理の処理手順を示すフローチャート図
【図10】ミキサ/エフェクト設定の一例を示す図
【符号の説明】
101…CPU(中央処理装置)、102…タイマ、103…、HOST(ホスト)−PCI(Peripheral Component Interconnect)ブリッジ、104…リードオンリメモリ、105…ランダムアクセスメモリ(RAM)、106…表示用入出力(I/O)インタフェース、107…表示器、108…キーボードI/Oインターフェース、109…キーボード、110…ローカルバス、111…PCIバス、112…ネットワークI/Oインターフェース、114…SCSI(Small Computer System Interface)、115…ハードディスク、116…MIDIインターフェース。

Claims (8)

  1. ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、
    前記バッファ記憶手段上に、楽音発生指示を記憶できる第1バッファと、複数時点分の楽音波形データを記憶できる第2バッファとを用意するステップと、
    リアルタイムの楽音発生指示を受け取り、前記第1バッファに書き込むステップと、
    前記第1バッファの楽音発生指示を読み出し、該楽音発生指示と、前記受け取るステップが該楽音発生指示を受け取ってからの時間遅れとに応じた楽音制御データを設定するステップと、
    空き時間を検出し、前記楽音制御データに基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、楽音波形データを生成して前記第2バッファの対応する時点の楽音波形データに足し込むステップと、
    現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、前記楽音制御データに基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、現時点の楽音波形データを生成して前記第2バッファの現時点の楽音波形データに足し込むステップと、
    前記第2バッファに記憶された楽音波形データを再生するステップと
    を備え
    前記時間遅れが所定時間以上の場合は、持続部からの楽音波形データが生成され、そうでない場合は、立ち上がり部からの楽音波形データが生成される
    ことを特徴とする楽音発生方法。
  2. ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、
    前記バッファ記憶手段上に、複数時点分の楽音波形データを記憶できるバッファを用意するステップと、
    リアルタイムの楽音発生指示を受け取るステップと、
    空き時間を検出し、前記楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、現時点より後の時点の楽音波形データを生成して前記バッファの対応する時点の楽音波形データに足し込むステップと、
    現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、楽音波形データを生成して前記バッファの現時点の楽音波形データに足し込むステップと
    前記バッファに記憶された楽音波形データを再生するステップと
    を備えたことを特徴とする楽音発生方法。
  3. ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、
    前記バッファ記憶手段上に、複数トラックの各複数時点分の楽音波形データを記憶できるバッファを用意するステップと、
    楽音発生指示を受け取るステップと、
    空き時間を検出し、前記楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフ トウェアを実行することにより、複数チャンネルで現時点より後の時点の楽音波形データを生成して、該複数チャンネルで形成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの対応する時点の各トラックの楽音波形データに足し込むステップと、
    現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点の楽音波形データをそれぞれ生成し、該複数チャンネルで生成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの現時点の各トラックの楽音波形データに足し込むステップと、
    前記バッファに記憶された複数トラックの楽音波形データを再生するステップと
    を備えたことを特徴とする楽音発生方法。
  4. ソフトウェアを実行する演算処理手段と、前記演算処理手段で実行するための波形生成ソフトウェアを格納した記憶手段と、前記波形生成ソフトウェアを実行することにより生成された波形データを記憶するバッファ記憶手段とを備えた装置による楽音発生方法であって、
    前記バッファ記憶手段上に、複数トラックの各複数時点分の楽音波形データを記憶できるバッファを用意するステップと、
    楽音発生指示及び発音停止指示を受け取るステップと、
    空き時間を検出し、前記楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点より後の時点の楽音波形データを生成して、該複数チャンネルで形成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの対応する時点の各トラックの楽音波形データに足し込むステップと、
    現時点の楽音波形データが未だ生成完了しておらず、かつ、楽音波形データを生成するための時間がある場合に、受け取った楽音発生指示に基づいて前記演算処理手段で前記波形生成ソフトウェアを実行することにより、複数チャンネルで現時点の楽音波形データをそれぞれ生成し、該複数チャンネルで生成された複数の楽音波形データをトラック単位でミキシングして、前記バッファの現時点の各トラックの楽音波形データに足し込むステップと、
    前記バッファに記憶された複数トラックの楽音波形データを再生するステップと、
    前記楽音停止指示に応じて、対応する楽音波形データを生成中のチャンネルを検出し、前記バッファに記憶された現時点より後の時点の楽音波形データのうちの、検出されたチャンネルの楽音波形データが足し込まれている楽音波形データの再形成を指示するステップと
    を備えたことを特徴とする楽音発生方法。
  5. 請求項3または4に記載の楽音発生方法において、
    さらにトラック制御データを受け取るステップを備え、該トラック制御データに基づいて、前記バッファに記憶された各トラックの楽音波形データを制御して出力することを特徴とする楽音発生方法。
  6. 請求項2から4の何れか1つに記載の楽音発生方法において、
    前記現時点より後の時点の楽音波形データを生成する処理は、過去に受け取った楽音発生開始指示に基づいて楽音波形データを先行生成していることを特徴とする楽音発生方法。
  7. 請求項2から4の何れか1つに記載の楽音発生方法において、
    前記現時点より後の時点の楽音波形データを生成する処理は、自動演奏の曲データに基づいて楽音波形データを先行生成していることを特徴とする楽音発生方法。
  8. 請求項2から4の何れか1つに記載の楽音発生方法において、
    前記波形生成ソフトウェアによる楽音生成の際、現時刻と楽音発生指示を受け取った時刻とを比較し、現時刻の楽音発生指示時刻からの遅れが所定値より小さい場合は立ち上がり部から開始する楽音波形データを生成し、前記遅れが所定値より大きい場合は持続部から開始する楽音波形データを生成することを特徴とする楽音発生方法。
JP2000187176A 2000-06-22 2000-06-22 楽音発生方法 Expired - Fee Related JP3781171B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000187176A JP3781171B2 (ja) 2000-06-22 2000-06-22 楽音発生方法
US09/887,406 US6414232B2 (en) 2000-06-22 2001-06-21 Tone generation method and apparatus based on software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000187176A JP3781171B2 (ja) 2000-06-22 2000-06-22 楽音発生方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005195599A Division JP2005292858A (ja) 2005-07-04 2005-07-04 楽音発生方法及び装置

Publications (2)

Publication Number Publication Date
JP2002006844A JP2002006844A (ja) 2002-01-11
JP3781171B2 true JP3781171B2 (ja) 2006-05-31

Family

ID=18687199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000187176A Expired - Fee Related JP3781171B2 (ja) 2000-06-22 2000-06-22 楽音発生方法

Country Status (2)

Country Link
US (1) US6414232B2 (ja)
JP (1) JP3781171B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006030517A (ja) * 2004-07-15 2006-02-02 Yamaha Corp 発音割当装置
US7326847B1 (en) * 2004-11-30 2008-02-05 Mediatek Incorporation Methods and systems for dynamic channel allocation
US7420115B2 (en) * 2004-12-28 2008-09-02 Yamaha Corporation Memory access controller for musical sound generating system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69619587T2 (de) * 1995-05-19 2002-10-31 Yamaha Corp Verfahren und Vorrichtung zur Tonerzeugung
JP3267106B2 (ja) 1995-07-05 2002-03-18 ヤマハ株式会社 楽音波形生成方法
JP2924745B2 (ja) * 1995-10-20 1999-07-26 ヤマハ株式会社 楽音発生装置及び方法
JP2962217B2 (ja) 1995-11-22 1999-10-12 ヤマハ株式会社 楽音生成装置及び方法
JP2904088B2 (ja) * 1995-12-21 1999-06-14 ヤマハ株式会社 楽音生成方法および装置
JP3293474B2 (ja) * 1996-06-06 2002-06-17 ヤマハ株式会社 楽音発生方法
SG67993A1 (en) * 1996-08-30 1999-10-19 Yamaha Corp Sound source system based on computer software and method of generating acoustic waveform data
US5913258A (en) * 1997-03-11 1999-06-15 Yamaha Corporation Music tone generating method by waveform synthesis with advance parameter computation

Also Published As

Publication number Publication date
JP2002006844A (ja) 2002-01-11
US20010054348A1 (en) 2001-12-27
US6414232B2 (en) 2002-07-02

Similar Documents

Publication Publication Date Title
JP3149093B2 (ja) 自動演奏装置
US6366971B1 (en) Audio system for playback of waveform sample data
TW314614B (ja)
JP3293474B2 (ja) 楽音発生方法
CN110299128B (zh) 电子乐器、方法、存储介质
JP3781171B2 (ja) 楽音発生方法
JP3221314B2 (ja) 楽音合成装置及び方法
JP3152198B2 (ja) 楽音発生方法および楽音発生装置
JP3572847B2 (ja) コンピュータソフトウェアを用いた音源システム及び方法
JPH07121181A (ja) 音声情報処理装置
JP2001265352A (ja) 楽音信号処理装置
JP2005292858A (ja) 楽音発生方法及び装置
JP4096952B2 (ja) 楽音発生装置
JP3003559B2 (ja) 楽音生成方法
JP3405181B2 (ja) 楽音発生方法
JP3036417B2 (ja) 信号処理装置
JPH10207465A (ja) 楽音発生方法および楽音発生装置
JP3740717B2 (ja) 音源装置及び楽音生成方法
JP4120979B2 (ja) 波形再生装置
JP2005049497A (ja) 音源回路の制御プログラムおよび音源回路の制御装置
JP3705203B2 (ja) 楽音発生方法
JP2000276149A (ja) 楽音生成方法、楽音生成装置および記録媒体
JP3991475B2 (ja) 音声データ処理装置およびコンピュータシステム
JP3235557B2 (ja) 波形再生装置、波形録音再生装置、波形出力回路、波形入出力回路、波形再生方法および波形録音再生方法
JP2000122668A (ja) デジタル音声データ処理装置およびコンピュータシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060301

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090317

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100317

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110317

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110317

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120317

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees