JP2005215709A - 楽音発生装置 - Google Patents
楽音発生装置 Download PDFInfo
- Publication number
- JP2005215709A JP2005215709A JP2005119672A JP2005119672A JP2005215709A JP 2005215709 A JP2005215709 A JP 2005215709A JP 2005119672 A JP2005119672 A JP 2005119672A JP 2005119672 A JP2005119672 A JP 2005119672A JP 2005215709 A JP2005215709 A JP 2005215709A
- Authority
- JP
- Japan
- Prior art keywords
- sound source
- output
- midi
- event
- sound
- 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.)
- Granted
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【解決手段】 シーケンサプログラムから演奏情報を送出するときに、ハードウエア音源12に出力するときはAPI27に出力し、ソフトウエア音源23に出力するときはAPI22に送出する。これにより、いずれの音源からでも発音させることが可能となる。この選択は、各演奏パート毎に行うことができ、また、両音源から同時に発音させることもできる。ハードウェア音源が装着されていないときは、ソフトウェア音源を選択する。
【選択図】 図2
Description
このような楽音発生方法においては、専用の楽音発生装置を用いることなく、CPUとソフトウエアのほかにはDA変換用のチップを備えるだけで、楽音を発生させることが可能となる。
ところで、上記したようにソフトウエア音源はパーソナルコンピュータなどの汎用コンピュータにおいても実行可能なものである。一般に、パーソナルコンピュータなどにおいては、拡張ボードによるハードウエア音源が備えられていることがあるが、ソフトウエア音源を備えた楽音発生方法を拡張ボードによるハードウエア音源を備える汎用コンピュータで実行した場合、拡張ボードによるハードウエア音源を使用することができないという問題点があった。
この図において、1はアプリケーションプログラム等を実行して楽音波形サンプルの生成等の各種制御を行うマイクロプロセッサ(CPU)、2はプリセット音色データ等が記憶されているリードオンリメモリ(ROM)、3はCPU1のワークメモリエリアや音色データエリア、入力バッファエリア、チャンネルレジスタエリア、出力バッファエリア等の記憶エリアを有するランダムアクセスメモリ(RAM)、4は時刻を指示すると共に、タイマ割り込み処理のタイミングをCPU1に指示するタイマ、5はMIDIイベントが入力されると共に、生成されたMIDIイベントを出力するMIDIインターフェースであり、該MIDIインターフェースには点線で示すように外部音源6を接続することもできる。
以上の構成はパソコン、ワークステーション等の汎用コンピュータと同等である。
この図に示すように、最上位層にはアプリケーションソフトウエアが位置しており、21はMIDIシーケンサ、ゲームソフトあるいはカラオケソフトなどのMIDIの再生を要求するプログラム(以下、単に「シーケンサプログラム」という)である。次の階層はシステムソフトウエア群であり、ここにソフトウエア音源23が位置しており、該ソフトウエア音源23は(ソフト)音源MIDIドライバおよび音源部が含まれている。25は波形(WAVE)入出力ドライバなどのいわゆるマルチメディア機能を実現するためのプログラム群、26は後述するコーデック回路16のためのコーデックドライバ、28は前記サウンドカード12のためのサウンドカードドライバである。なお、このコーデック回路16には波形サンプルデータを入出力するためのA/D変換器およびD/A変換器が含まれており、このD/A変換器は図1におけるDAC11である。
なお、図示していないが、上記システムソフトウエアの階層には、当然、通常の汎用OSに含まれているデバイスドライバ群およびメモリ管理、ファイルシステム、ユーザインターフェースなどのプログラム群が含まれている。
また、外部に接続されている外部音源6が演奏情報の出力先として選択されたときもMIDI出力API27にMIDIイベントが出力され、プログラム群25内の外部MIDIドライバおよびMIDIインタフェース5を介して外部音源6に出力される。これにより、外部音源6から対応する楽音が発生される。
図4はソフトウエア音源23により実行される処理のフローチャートを示す図である。ソフトウエア音源23は起動されると、まず、ステップS10において、各種レジスタのクリアなどの初期設定が行われる。続いてステップS11において、ユーザーに対してこのソフトウエア音源が起動されていることを表示するためのアイコンの表示などの画面の準備処理が行われる。次に、ステップS12に進み、ここで起動要因が存在するか否かのチェックが行われる。起動要因としては、(1)入力バッファに未処理イベントがあること(これはMIDIイベントを受信したときに発生する。)、(2)(演算時刻となって)波形演算要求が発生していること、(3)キーボードやパネルからの音源の動作の制御コマンド入力などのMIDIの処理以外の処理要求が発生していること、(4)終了要求が発生していること、の4通りの要因が存在している。
この判定により、(1)入力バッファに未処理イベントがあるときには、ステップS15に進み、MIDI処理が行われる。このMIDI処理においては、入力バッファに書き込まれているMIDIイベントを、それに対応する音源(発音チャンネル)に渡すべき制御パラメータに変換する処理が行われる。このステップS15のMIDI処理が終了した後、ステップS16の受信表示処理がおこなわれ、MIDIを受信したことなどが画面に表示される。そして、その後ステップS12に戻り、起動要因の発生を待つ。
ノートオフ処理が開始されると、ステップS41において、入力バッファ中のそのノートオフイベントのノートナンバがNNとして、また、パート別音色データがtとして、それぞれレジスタに取り込まれ、さらに、該ノートオフイベントの発生時刻がTMとしてレジスタに取り込まれる。次いで、ステップS42において、ノートナンバNNで発音されている発音チャンネル(ch)がサーチされ、見つかった発音chの番号がiとしてレジスタに取り込まれる。次に、ステップS43においてichの音源レジスタにノートオフと発生時刻TMとを書き込んで、ノートオフイベント処理を終了する。
前記ステップS14において、起動要因が(2)波形演算要求発生であるときは、ステップS17の音源処理が実行される。この処理は波形生成演算を行う処理であり、前記ステップS15のMIDI処理において各チャンネル(ch)に対応する音源レジスタに格納された楽音制御データに基づき波形生成演算が行われる。このステップS17の音源処理が終了した後に、ステップS18において例えば音源処理に要したCPUの負荷量などが表示される。その後、ステップS12に戻り、待ち状態となる。
次いで、前回の読み出しアドレスを初期値としてFナンバを繰り返し加算し前記時間範囲内の各サンプルの読み出しアドレスを発生し、この読み出しアドレスの整数部に基づいて音色データ内の波形記憶領域より波形サンプルを読み出すと共に、この読み出しアドレスの小数部に基づいて読み出された波形サンプル間の補間を行い、前記時間範囲内の全補間サンプルを算出するようにする。
このようにして、全発音チャンネルの演算が終了するまで各発音チャンネルの波形サンプル生成処理が行われ、生成された前記所定時間範囲分のサンプルは、出力バッファの対応するサンプルに順次足し込まれる。
また前記ステップS14において、(3)その他の処理要求であると判定されたときは、ステップS19に進み、対応する処理、例えば、この処理要求が音色の設定/変更処理であるときには、設定された音色番号を設定する処理など行い、ステップS20に進んで該設定された音色番号の表示などを行った後、ステップS12に戻り待ち状態となる。
さらに、前記ステップS14において、(4)終了要求であると判定されたときは、ステップS21において終了処理を行い、ステップS22において関連する画面情報を消去して、このソフトウエア音源処理を終了する。
次に、CPU1により実行されるMIDI受信割込み処理のフローチャートを図6に示す。この処理は、ソフト音源MIDI出力API22が呼ばれて、シーケンサプログラム21などからの演奏情報(MIDIイベント)が受信された際に発生される割り込みにより起動される。この割り込みの優先順位は最も高くされており、このMIDI受信割込み処理は、シーケンサプログラム21やソフトウエア音源23の処理などの他の処理より優先して行われる処理である。このMIDI受信割込み処理が開始されると、ステップS51において受信されたMIDIイベントデータが取り込まれ、ステップS52においてその受信データは受信された時点の時刻データと組にして前述した入力バッファに書き込まれて、割込み発生時の処理へリターンされる。これにより、受信したMIDIデータは、順次、受信時刻と共に入力バッファに書き込まれるようになる。
図7にシーケンサプログラム21における処理のフローチャートを示す。シーケンサプログラム21は起動されると、まず、ステップS61において各種レジスタのクリアなどの初期設定が行われ、次に、ステップS62において該プログラムが起動中であることを示すアイコンなどの表示を行うための画面準備処理が行われる。そして、ステップS63に進み、起動要因が発生したか否かのチェックが行われ、ステップS64において起動要因が発生したと判定されると、ステップS65に進む。ステップS65において、発生した起動要因がなにであるのかが判定され、その起動要因に応じて、それぞれ、対応するステップに分岐される。また、起動要因が発生していないときには、ステップS63に戻り、起動要因の発生待ちの状態となる。
演奏情報の出力先指定処理もこのステップS90において処理される処理のうちの一つである。例えば、前記ステップS62において、ディスプレイ8の画面上に表示されている出力音源を切り替えるスイッチを演奏者がマウスでクリックするなどしたときに、前記ステップS65において起動要因として出力音源の指定が検出され、この出力先指定処理が起動される。図8を参照してこの出力先指定処理について説明する。
処理が開始されると、まず、ステップS900において、ユーザーにより指定された出力音源指定データがTGSレジスタに格納される。この形態においては、画面上に表示されている出力音源指定スイッチを演奏者がクリックする毎に、図8の(b)に示す4つの選択状態、すなわち、(イ)いずれの音源にも出力しない、(ロ)ソフトウエア音源に出力する、(ハ)ハードウエア音源に出力する、(ニ)ソフトウエア音源とハードウエア音源の両方に出力する、がサイクリックに変更されるようになされており、このクリックの回数のモジュロ4の値が出力音源指定データとしてTGSレジスタに格納される。
処理が開始されると、まず、ステップS910において、入力されるパート指定データを変数pとして取り込み、次に、ステップS911において、指定された該パートpの出力音源指定データをTGSpレジスタに格納する。そして、ステップS912において、各パートとそれに対応する出力音源の設定状態を表示する。このように、出力音源指定データを格納するレジスタを各パート対応に設けることにより、各パート毎に出力すべき音源の選択を行うことが可能となる。
なお、各パートと出力すべき音源との対応は、演奏者が設定してもよいし、あるいは、各パートの音色データなどがハードウエア音源に備えられている場合には該ハードウエア音源を使用し、そうでないときにはソフトウエア音源を使用するようにしてもよい。
これにより、ハードウエア音源の着脱により設定を変更する必要がなくなる。
前記ステップS65における判定の結果、起動要因が(1)スタート・ストップ要求の発生であるときは、ステップ70においてスタート・ストップ処理が行われ、ステップS71においてスタート・ストップ状態の表示が行われた後、前記ステップS63に戻り、起動要因の発生待ちの状態となる。
このステップS70スタート・ストップ処理について、図9の(a)を参照して説明する。このスタート・ストップ要求は、演奏者の操作により行われるものであり、例えば画面上の所定のフィールドをクリックすることにより、スタート・ストップ要求が入力されるようになされている。このスタート・ストップ要求が入力されると、ステップS700において、現在の状態が停止状態であるのか否かがRUNフラグの状態により判定される。RUNフラグは、演奏状態にあるときに「1」にセットされるフラグであり、この判定結果がNOのときは現在演奏状態にあるので、ステップS701に進んでRUNフラグをリセットし、続いてステップS702においてテンポタイマをストップさせ、ステップS703において自動演奏の後処理を行って、演奏を停止する。
前記ステップS65における起動要因の判定結果が(2)テンポタイマ割り込み有りであるときは、ステップS80においてイベント再生処理が行われ、その後ステップS81においてそのイベントの表示がなされる。そして、ステップS63に戻り、起動要因の待ち状態となる。
このステップS80のイベント再生処理について、図9の(b)を参照して説明する。テンポタイマ割り込みは演奏のテンポを決定するために周期的に発生される割り込みであり、この割り込みにより演奏の時刻が決定されるものである。このテンポタイマ割り込みが発生すると、ステップS800において時刻のカウントが行われる。そして、このカウント結果がイベントを再生すべきイベント時刻を越えているか否かがステップS801において判定され、越えていないときはイベント再生処理S80を終了する。
ただし、ソフトウエア音源とハードウエア音源との両方に演奏情報を出力する場合には、前述したように、ソフトウエア音源による楽音の発生に所定時間の遅延が発生するため、該遅延時間が大きいときには、ハードウエア音源に対する演奏情報の出力を当該時間だけ遅らせるなどの処理を行うことが必要である。
例えば、カラオケソフトの場合には、曲の演奏とともに歌詞の表示を行うのが一般的である。伴奏曲の進行に応じて歌詞の色を徐々に変更する処理(ワイプ処理)や表示する歌詞を入れ替える処理が行われる。ところで、このような歌詞の表示処理は、伴奏音と同期している必要がある。従って、カラオケソフトで本発明のようにハードウエア音源とソフトウエア音源を選択できるようにした場合、どちらの音源を選択したかに応じて、表示のタイミングを変更することが必要となる。すなわち、ソフトウエア音源が選択された場合には、ハードウエア音源を選択した場合と比較して、遅いタイミングで表示処理を行うようにする。また、歌詞表示の方でタイミングを取る代わりに、各音源に供給する演奏情報のタイミングを調整するようにしても良い。すなわち、ソフトウエア音源を選択した場合には、ハードウエア音源を選択した場合に比べて、早いタイミングで演奏情報を音源に出力するようにするのである。
なお、本発明は、MIDIインターフェースを介して外部のシーケンサなどから入力される演奏情報を音源に渡す場合にも、全く同様に適用することができる。
Claims (1)
- 演算処理装置と、MIDI情報を受け取って対応する楽音を生成するハードウエア音源と、D/A変換器を有するコーデック回路とを備えた楽音発生装置であって、
アプリケーションプログラムからMIDI情報を受け取って波形データを生成し、コーデックドライバに出力するソフトウェア音源と、
前記波形データを受け取って前記コーデック回路に出力するコーデックドライバと、
前記MIDI情報を受け取って前記ハードウエア音源に出力するサウンドカードドライバと
を備えたことを特徴とする楽音発生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005119672A JP4096952B2 (ja) | 2005-04-18 | 2005-04-18 | 楽音発生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005119672A JP4096952B2 (ja) | 2005-04-18 | 2005-04-18 | 楽音発生装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001393560A Division JP3705203B2 (ja) | 2001-12-26 | 2001-12-26 | 楽音発生方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005215709A true JP2005215709A (ja) | 2005-08-11 |
JP4096952B2 JP4096952B2 (ja) | 2008-06-04 |
Family
ID=34909865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005119672A Expired - Lifetime JP4096952B2 (ja) | 2005-04-18 | 2005-04-18 | 楽音発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4096952B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007178890A (ja) * | 2005-12-28 | 2007-07-12 | Yamaha Corp | 自動演奏装置 |
JP2009025498A (ja) * | 2007-07-18 | 2009-02-05 | Yamaha Corp | 波形生成装置 |
-
2005
- 2005-04-18 JP JP2005119672A patent/JP4096952B2/ja not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007178890A (ja) * | 2005-12-28 | 2007-07-12 | Yamaha Corp | 自動演奏装置 |
JP2009025498A (ja) * | 2007-07-18 | 2009-02-05 | Yamaha Corp | 波形生成装置 |
JP4544278B2 (ja) * | 2007-07-18 | 2010-09-15 | ヤマハ株式会社 | 波形生成システム |
Also Published As
Publication number | Publication date |
---|---|
JP4096952B2 (ja) | 2008-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3293434B2 (ja) | 楽音発生方法 | |
JP2005010461A (ja) | アルペジオパターン設定装置およびプログラム | |
WO2018135403A1 (ja) | 共鳴信号生成方法、共鳴信号生成装置、電子音楽装置、プログラム及び記録媒体 | |
JP3226011B2 (ja) | 歌詞表示装置 | |
US9396715B2 (en) | Technique for generating audio data for loop reproduction on the basis of performance data | |
JP2924745B2 (ja) | 楽音発生装置及び方法 | |
JPH09325778A (ja) | 楽音発生方法 | |
JP2019168517A (ja) | 電子楽器、方法及びプログラム | |
JP4096952B2 (ja) | 楽音発生装置 | |
JP3705203B2 (ja) | 楽音発生方法 | |
US10805475B2 (en) | Resonance sound signal generation device, resonance sound signal generation method, non-transitory computer readable medium storing resonance sound signal generation program and electronic musical apparatus | |
JP7332002B2 (ja) | 電子楽器、方法及びプログラム | |
JP2003015637A (ja) | 楽譜表示装置 | |
JP7124370B2 (ja) | 電子楽器、方法及びプログラム | |
JP4238807B2 (ja) | 音源用波形データの決定装置 | |
JP2005283774A (ja) | 楽音合成装置 | |
JP6606839B2 (ja) | 波形書き込み装置、方法、プログラム、および電子楽器 | |
JP4082184B2 (ja) | 楽音発生装置および楽音発生処理のプログラム | |
JP2972364B2 (ja) | 音楽的情報処理装置及び音楽的情報処理方法 | |
JP3837994B2 (ja) | 楽譜データ変換装置、及び記録媒体 | |
WO2001065535A1 (fr) | Generateur de sons musicaux | |
JP3627557B2 (ja) | 楽音発生装置及び方法 | |
JP2009282163A (ja) | 共鳴音発生装置 | |
JP2002006865A (ja) | 歌詞表示装置 | |
JPH11143463A (ja) | 自動演奏装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050510 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070104 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070123 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070323 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071002 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071122 |
|
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: 20080219 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080303 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110321 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110321 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120321 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130321 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140321 Year of fee payment: 6 |
|
EXPY | Cancellation because of completion of term |