(57)【特許請求の範囲】
【請求項１】
楽器を演奏するため、この楽器と接触させることを意図したタイプの手持ち式付属備品であって、それを保持する人がそれを別の物体に打ち当てるのに応答して活動化信号を生成するスイッチを含む付属備品；
オーディオシンセサイザ；
楽譜用の音符データ構造のシーケンスを記憶するメモリであって、該音符データ構造の各々が楽譜の中の単数又は複数の音符を表わし、前記音符データ構造のシーケンス中のその他の音符との関係における１つの識別された時間的場所を有し；
タイマー；及び
前記手持ち式付属備品から前記活動化信号を受信し、それから制御信号を生成するデジタルプロセッサ；
から成る仮想楽器であって、
前記デジタルプロセッサは、前記活動化信号が生成される時刻を測定するべく前記タイマーを使用するようにプログラミングされており、
前記デジタルプロセッサは、前記音符データ構造シーケンス内の音符データ構造の１つを選択するべく前記測定された時刻を使用するようにプログラミングされており、
前記デジタルプロセッサは、前記シンセサイザに前記選択された音符データ構造によって表わされた音符を生成させる制御信号を生成するようにプログラミングされていることを特徴とした仮想楽器。
【請求項２】
前記手持ち式付属備品は、衝撃感応式スイッチであるスイッチが中に取りつけられ、密閉されたキャビティを構成するハウジングを含むギターピックである請求項１記載の仮想楽器。
【請求項３】
前記スイッチは、第１の接点、可とう性金属片及び前記金属片の自由端上にある第２の接点を含み、前記第２の接点は休止状態にあるとき前記第１の接点に接触している請求項２に記載の仮想楽器。
【請求項４】
前記スイッチは、さらに第２の可とう性金属片を含んでおり、前記第１の接点が前記第２の金属片の自由端に位置する請求項３に記載の仮想楽器。
【請求項５】
前記ギターピックは、さらに前記ハウジングから延びて一体化されたフィンを含む請求項２に記載の仮想楽器。
【請求項６】
前記音符データ構造シーケンスは、フレームシーケンスの形に区分され、このフレームシーケンスの各フレームは前記音符データ構造シーケンスの対応する音符データ構造グループを含み、前記フレームシーケンスの各フレームは前記楽譜内のその時間場所を識別する時間スタンプを有し、
前記デジタルプロセッサは前記測定された時刻に対応する前記フレームシーケンス内の１つのフレームを識別するようにプログラミングされており、そして
前記デジタルプロセッサは、識別されたフレームのための音符データ構造グループの１メンバを選択するようにプログラミングされ、この選択されたメンバは前記選択された音符データ構造である請求項１に記載の仮想楽器。
【請求項７】
前記楽譜に関連するオーディオトラックを記憶し再生するためのオーディオ再生用構成要素をさらに含み、前記デジタルプロセッサは、前記タイマー及び前記オーディオ再生用構成要素の両方を同時に開始させ、それによりシンセサイザによって生成された音符が前記オーディオトラックの再生と同期化される請求項１に記載の仮想楽器。
【請求項８】
前記オーディオトラックは、ミュージックトラックを省略し、この省略されたミュージックトラックは前記手持ち式付属備品のための前記楽譜に対応する請求項７に記載の仮想楽器。
【請求項９】
前記記憶された楽譜に付随するビデオトラックを記憶し再生するためのビデオ再生用構成要素をさらに含み、前記デジタルプロセッサは、前記タイマーと前記ビデオ再生用構成要素の両方を同時に開始させ、それによりシンセサイザによって生成された音符が前記ビデオトラックの再生と同期化される請求項７に記載の仮想楽器。
【請求項１０】
オーディオ及びビデオ再生用構成要素ともＣＤ−ＲＯＭプレーヤーから成る請求項９に記載の仮想楽器。
【発明の詳細な説明】
発明の背景
本発明は、マイクロプロセッサ支援型楽器用のアクチュエータに関する。
マイクロプロセッサがさらに市場に進入するにつれて、正式に音楽的訓練を受けていない人が訓練を受けたミュージシャンのように実際に音楽をプロデュースできるようにする製品がより多く出現している。現在姿を現わしつつあるいくつかの楽器及び装置は、デジタル形態で楽譜を記憶し、楽器の演奏時点でユーザーが生成する入力信号に応えてそれを再生する。音楽は楽器内に記憶されることから、ユーザーは、そのメロディに求められる音符を記述する能力をもつ必要がなく、単に演奏中の特定の楽曲又は音楽のリズムを再現する能力をもつだけでよい。これらの楽器及び装置によって、音楽は万人にとってはるかに近付き易いものになりつつある。
利用可能な楽器としては、演奏者がメロディの単一のトーンをたどっていくことができるようにするような数多くの機械式及び電気式・玩具製品が存在する。その最も単純な形が、押したときにメロディを一音符だけ進ませ機械式ドラム上にコード化されたメロディ内の次のトーンを鳴らすような１つ又は２〜３個の鍵盤を有する小さなピアノ型玩具である。この能力の電気バージョンは、演奏者がキーボード上で演奏し記録した一連の音符が、単一音符メロディのリズムで逐次的に「シングルキープレイ」ボタン（オン／オフスイッチ）を押すことにより「演奏」再生され得るようにする「シングルキー」演奏と呼ばれるモードをもついくつかの電子キーボードに見ることができる。キーが押される毎に、メロディ内の次の音符が演奏される。
これと類似の要領で挙動する「シーケンシャルドラム」と呼ばれる楽器があった。このドラムを叩くと、圧電ピックアップがオン／オフ事象を作り出し、これをコンピュータが記録し、その後メロディ音符シーケンス内の次のトーンを鳴らすトリガーとして使用した。
同様に、或る楽曲の単一の楽器又はより一般的に言うと１つのボーカルのパートをロックバンド又はオーケストラといったような録音中のアンサンブルのオーディオミックスから削除するようなさまざまなタイプの音楽について行なわれる録音も存在する。ビニール(vinyl)レコード、磁気テープ及びCD上で入手できるこのような録音はMusic Minus Oneとして知られる商品及び日本を起源とする非常に人気のあるカラオケの基礎となったものである。
以前の特許（すなわち米国特許第5,393,926号）で、我々は、バーチャルギターと呼ぶ新しい楽器について記述した。このバーチャルギターは、MIDIギター、オーディオシンセサイザ、バーチャルギター用の楽譜を記憶するメモリー、MIDIギターからの入力信号を受信し、メモリー内に記憶された楽譜の音符にアクセスするのにこれらの入力信号を使用するデジタルプロセッサを含んでいる。メロディ音符はデータファイル内に記憶されていることから、バーチャルギターの演奏者は楽曲の音符を記述する方法を知らなくてもよい。演奏者は、活動化信号(activation signal)を生成するべく単にMIDIギターの弦をかき鳴らすだけで必要なサウンドを生成つまりより精確に言うとアクセスすることができる。さらに、このシステムは、ユーザーが弦をかき鳴らすのをやめた時でも楽譜内でユーザーが居ると想定された場所を追跡し続ける。かくして、ユーザーが弦を再びかき鳴らし始めたとき、システムは、あたかもユーザーが介入する音符まで演奏してきたかのように、楽曲の中のその時点に適切な音符を生成する。
発明の要約
本発明は、それが新しい入力装置を使用するように適合されているという点で、前述の仮想楽器の改良にあたる。
一般に、１つの形態においては、本発明は、１つの楽器を演奏するべくそれと接触させられるようになっているタイプの手持ち式付属備品を含む仮想楽器である。手持ち式付属備品は、それを保持する人物がそれにもう１つの物体を打撃させたのに応答して１つの活動化信号を生成するスイッチを内含している。この楽器は同様に、オーディオシンセサイザ；楽譜のための音符データ構造シーケンスを記憶するメモリー；タイマー；及び手持ち式付属備品から活動化信号を受信しそこから制御信号を生成するデジタルプロセッサをも内含している。記憶された音符シーケンス内の音符データ構造の各々は、楽譜内の単数又は複数の音符を表わし、このシーケンス内のその他の音符との関係における１つの識別された時間的場所を有する。デジタルプロセッサは活動化信号が生成される時刻を測定するためにタイマーを使用するようにプログラミングされている。このプロセッサは同様に、音符データ構造シーケンス内の音符データ構造の１つを選択するのにこの測定された時刻を使用するようにプログラミングされており、さらに、選択された音符データ構造により表わされた音符をシンセサイザに生成させる制御信号を生成するようにプログラミングされている。
好ましい実施形態には、以下の特長が含まれる。手持ち式付属備品は、スイッチが中に取りつけられる密閉されたキャビティを構成するハウジングを含むギターピックである。スイッチは、衝撃感応式スイッチである。特に、スイッチには、第１の接点、可とう性金属片そしてこの金属片の自由端上にある第２の接点が含まれる。第２の接点は、休止状態にあるとき第１の接点に接触している。スイッチはさらに第２の可とう性金属片が含まれており、その自由端に前記第１の接点がある。このギターピックは同様に、ハウジングから離れるように延びる一体式フィンを内含する。
同様、好ましい実施形態においては、音符データ構造シーケンスは、フレームシーケンスの形に区分され、このフレームは各々、音符データ構造シーケンスの対応する音符データ構造グループを内含している。各フレームはさらに、楽譜内のその時間場所を識別する時間スタンプを内含している。デジタルプロセッサは、測定された時刻に対応するフレームシーケンス内の１つのフレームを識別するようにプログラミングされ、又これは識別されたフレームのための音符データ構造グループの１つのメンバを選択するようにもプログラミングされている。選択されたメンバは、選択された音符データ構造である。
本発明の１つの利点は、仮想音楽システムのケイパビリティをアクセスする入力装置が、以前の特許（例えばU.S. 5 393 926号）に記述されたより精巧な入力装置に比べてはるかに単純で、製作コストが低く、使用が容易で、かつはるかに汎用性の高いものであるということにある。
その他の利点及び特長は、好ましい実施態様についての以下の記述及びクレームから明らかになるだろう。
【図面の簡単な説明】
図１は、仮想音楽システムのブロックダイヤグラムである。
図２は、図１に示されたオーディオ処理用プラグインボードのブロックダイヤグラムである。
図３は、フレームの形への仮説的楽譜の区分を例示している。
図４は、sframes〔〕、lnote_array〔〕、及びhnotes_array〔〕データ構造及びそれらの相互関係を示す。
図５は、主プログラムループの擬似コード表示を示す。
図６は、主プログラムループによって呼出されるplay_song（）ルーチンの擬似コード表示を示す。
図７Ａ及び７Ｂは、システムの初期化中に設定されるvirtual_guitar_callback（）割込みルーチンの擬似コード表示を示す。
図８は、sync_frameデータ構造を示す。
図９は、lead_noteデータ構造を示す。
図10は、harmony_noteデータ構造を示す。
図11Ａ及びＢは、衝撃感応式スイッチを含むギターピックの２つの図である。そして
図12は、ギターピックの特徴的出力信号を示す。
好ましい実施形態の説明
本発明は、本書に参考として内含されている、1993年６月７日に提出された仮想音楽システムという題の米国特許第5,393,926号で記述された発明に対する改良である。先の発明では、メモリー内に記憶された楽曲の音符をアクセスするべくソフトウェアが使用する活動化信号を生成するMIDIギターが利用されていた。ここで記述する改良は、ソフトウェアによって使用される活動化信号を生成するための、はるかに単純でより汎用性の高い入力装置の使用である。MIDIギターを用いる代りに、アクチュエータとして、はめ込み式活動化装置を伴うギターピックが使用される。ピック及び活動化信号の生成のためのその使用方法について記述する前に、MIDIギターを用いる仮想音楽システムの詳細をまず提示する。このような背景に基づいて、次に、修正された入力装置（すなわちギターピック）及びピックをアクチュエータとして使用できるようにする修正について記述する。
仮想音楽システム
図１を参照すると、仮想音楽システムには、その基本的構成要素として、パーソナルコンピュータ（PC）２；記述する実施形態においてはMIDIギター４である仮想楽器；そしてCD−ROMプレーヤー６含まれている。PC２の制御下で、CD−ROMプレーヤー６は、ユーザーがギター４上で同様に演奏したいと考えている音楽として選択した楽曲のインターリーブされたデジタルオーディオ及びビデオ記録を再生する。PC２の中に記憶されているのは、MIDIギター４によって演奏されるべき楽譜を含む楽曲ギターファイル（図１には示さず）である。当然のことながら、これは、CD−ROMプレーヤー６上で演奏されているのと同じ楽曲のギタートラックである。
MIDIギター４は、より一般的には一組の弦９と呼ばれる多要素アクチュエータ及びトレモロバー11を含む市販の楽器である。Musical Instrument Digital Interface（楽器用デジタルインターフェイス）（MIDI）は、音楽データの実時間交換のための演算コードの周知の規格のことである。これは、RS−232のスーパーセットであるシリアルプロトコルである。多要素アクチュエータの１つの要素（すなわち１本の弦）が叩かれると、ギター４は、その事象を記述する１組のデジタル演算コードを生成する。同様にして、トレモロバー11が用いられる場合、ギター４はその事象を記述する演算コードを生成する。ユーザーがギター４を演奏するにつれて、それはこのような「事象」（すなわち弦の活動化及びトレモロ事象）のシリアルデータストリームを生成し、これらのデータはPC２に送られ、PC２はこれらを用いてPC２内の記憶された楽曲の関連部分をアクセスしかくしてそれを再生する。PC２はギター音楽をCD−ROMプレーヤーからのオーディオトラックとミキシングし、一組のステレオスピーカ８を通して結果として得られる音楽を演奏すると同時にPC２に接続されるビデオモニター10上に付随するビデオ画像を表示する。
80486プロセッサ、16メガバイトのRAM及び１ギガバイトのハードディスク記憶装置９を内含するPC２は、MicrosoftTM社のウィンドウズ３．１オペレーティングシステムを使用する。これには、複数のプラグインボードが備わっている。組込み型プログラマブルMIDIシンセサイザ22（例えばプロテウス合成チップ）を有するオーディオ処理用プラグインボード12（図２にも示されている）と、デジタル式にプログラミング可能なアナログ２チャンネルミキサー24が存在する。同様に、CD−ROMプレーヤー６から来るビデオ信号からフルスクリーンフルモーションビデオを作り出すためマイクロソフト社のVideo For WindowsTM製品の下で実行するビデオ圧縮解除／加速器ボード14も存在する。又、MIDIケーブル18を通してMIDIギター４が接続されているMIDIインターフェイスカード16がある。PC２は同様に、クロックレジスタを１ミリセカンド毎に更新する。プログラミング可能なタイマーチップ20も含んでいる。
オーディオ処理用プラグインボード12上で、プロテウス合成チップ22は、MIDIギター４が演奏された時点で生成するシリアルデータストリームに応答して特定のピッチ及び音色のトーンを合成する。合成チップは、ウィンドウズ３．１の下で実行するアプリケーションプログラムからプログラミング可能であるデジタル指令インターフェイスを含んでいる。デジタル指令インターフェイスは、どの音符をどの速度（即ちボリューム）で演奏すべきか指示するMIDIフォーマット化されたデータを受信する。これは、それが受信したデータを解釈し、適切なボリュームをもつ適切な音符をシンセサイザに生成させる。アナログミキサー24は、CD−ROMプレーヤー６からのオーディオ入力をプロテウスチップが生成した波形とミキシングして、スピーカー８に送られる混合ステレオ出力信号を作り出す。ビデオ圧縮解除／加速器ボード14は、同期化されたオーディオトラックと共にCD−ROMディスク上に記憶されたビデオイメージのアクセス及び表示を取り扱う。MIDIインターフェイスカード16は、MIDIギター４からの信号を処理する。
MIDIギターは、演奏された点で、どの弦がどれほどの力で打ち鳴らされたかを識別するシリアルデータストリームを生成する。このシリアルテータストリームは、データの塊を登録し、80486に対する割込みを作成するMIDIインターフェイスカード16まで、ケーブル18上を移動する。80486の割込みサービスの一部として呼出されるMIDIインターフェイスカードの装置ドライバは、MIDIインターフェイスカードのレジスタを読取り、MIDIデータをアプリケーションプログラムアクセス可能バッファ内に入れる。
MIDIギター４は、以下のタイプのデータを生成する。一定時間動作無しであった後弦が打ち鳴らされた時点で、MIDIギター４内のプロセッサは、以下の演算コードを含むMIDIフォーマットのデータのパケットを生成する：
MIDI_STATUS＝On
MIDI_NOTE＝＜note number＞
MIDI_VELOCITY＝＜amplitude＞
＜note number＞は、どの弦が活動
化されるかを識別し、＜amplitude＞は、弦が打ち鳴らされた力の尺度である。はじかれた弦の振動が一定の最低限度まで減衰した時点で、MIDIギター４は、もう１つのMIDIデータパケットを送る：
MIDI_STATUS＝Off
MIDI_NOTE＝＜note number＞
MIDI_VELOCITY＝0
これは、＜note number＞によって識別された弦のために生成されつつあるトーンをオフ切換えすべきであることを表わしている。
振動が一定の最低限まで減衰してしまう前に弦が打ち鳴らされた場合、MIDIギター４は、２つのパケットを生成する。すなわち第１のパケットはその弦のための先行する音符をオフに切換え、第２のパケットと弦のための新しい音符をオンに切換える。
プレーヤー６上で演奏されるCD−ROMディスクは、ギター演奏者が演奏したいと思う音楽のインターリーブされ同期化されたビデオ及びオーディオファイルを内含する。例えばビデオトラックは、音楽を演奏しているバンドを示すことができ、そのときオーディオトラックは、ギタートラックが省略された状態でそのバンドのためのオーディオミックスを内含することになる。ウィンドウズ３：１の下で実行するVideo For Windows製品は、ユーザーがＣプログラムからこれらのビデオ−オーディオファイルの実行を開始及び制御できるようにするAPI（アプリケーションプログラムインターフェイス）を有する。
制御プログラムの主ループのための擬似コードが図５に示されている。主プログラムは、まず第１にシステム初期化を実行し（ステップ100）、次にMIDIインターフェイスカードのための新しい割込みサービスルーチンを導入するregister_midi_callback（）ルーチンを呼出す（ステップ102）ことによって、実行を開始する。導入された割込みサービスは、バーチャルギターを実際に「作りだす」。プログラムは次にwhile_loopを入力し（ステップ104）、そこでまずユーザーに対し、演奏される楽曲を識別するよう求める（ステップ106）。プログラムはこれをget_song_id_from_user（）ルーチンを呼出すことによって行なう。ユーザーが、ビデオモニター10上に表示されている１組の選択肢の中から選択を行なうべく例えばキーボード26（図１参照）を使用して自らの選択を行なった後、ユーザーの選択は、主ループが呼出す次の３つのルーチンの引数として使用されることになるsong_id変数内に記憶される。楽曲を開始する前に、プログラムは、選択された楽曲データファイルの中味を保持するべくデータ構造をセットアップするset_up_data_structure（）ルーチンを呼出す（ステップ108）。楽曲データを保持することになる３つのデータ構造はsframes〔〕、lnote_array〔〕及びhnotes_array〔〕である。
このオペレーション段階中、プログラムはまた、ミリセカンド毎に増分されるクロック変数を維持するPC上のタイマー資源もセットアップし、ミリセカンドクロック変数を０にリセットする。以下の記述でさらに明らかになるように、クロック変数は、楽曲の中のユーザーの一般的場所を決定し、かくしてユーザーが自らの楽器を通して活動化できるようになるのはどの音符であるかを識別する。プログラムは、current_frame_id変数及びcurrent lead note idx変数も両方共ゼロにセットする。導入された割込みルーチンによって用いられるcurrent_frame_idx変数は、現在演奏されている楽曲のフレームを識別する。current_lead_note_idx変数は、ユーザーからの次の活動化信号に応答して演奏されるlead_note array内の特定の音符を識別する。
次に、プログラムはもう１つのルーチンすなわち、ハードディスクからの選択された楽曲について、バーチャルギターデータの記憶されたファイルイメージを検索し、そのデータを３つの以前に言及したアレイ内にロードするinitialize_data_structures（）を呼出す（ステップ110）。データ構造が初期化された後、プログラムは、選択された楽曲をPC２に演奏させるplay_song（）ルーチンを呼出す（ステップ112）。
ここで図６を参照すると、play_song（）は呼出された時点でまず第１にユーザーに対し視覚的にそれが楽曲を開始しようとしているということを命令する（オプション）（ステップ130）。次にそれはもう１つのルーチン、すなわち、ユーザーが楽曲を開始させる指令を与えるまで休止を強制するwait_for_user_start_signal（）を呼出す（ステップ132）。ユーザーが開始指令を与えると直ちに、play_songルーチンは、記憶された伴奏部すなわちCD−ROMプレーヤー６上の同期化されたオーディオ及びビデオトラックの同時再生を開始する（ステップ134）。記述された実施形態においては、これは、CD−ROM上に記憶されるインターリーブされたオーディオ／ビデオ（.avi）ファイルである。当然のことながら、これは、例えば、CD−ROM周辺機器上のレッドブックオーディオトラック又は.WAVデジタル化オーディオファイルを含む数多くの異なる形態で入手可能である。
ルーチンは「同期的」（すなわち再生が完了するまで復帰しない）であることから、プログラムは、これらの再生を開始するべくウィンドウズオペレーティングシステムの復帰を待つ。ひとたび再生が開始したならば、MIDIギター上でMIDI事象が発生する毎に（すなわち、弦が打ち鳴らされる毎に）、導入されたMIDI割込みサービスルーチンはその事象を処理する。一般に、割込みサービスルーチンは、実際のMIDIギター事象がどんなバーチャルギター動作をマッピングするかを計算する。
初期化の間にセットアップされるデータ構造をより詳細に検討する前に、まず第１に楽曲データファイル及びそれがいかに構成されているかを記述することが有用である。楽曲データファイルは、演奏されるべき順序でギタートラックの音符を全て含んでいる。仮定として楽譜の短かいセグメントを示す図３により例示されているように、楽曲データはフレームシーケンス200の形に区分されており、この各々のフレームは、標準的に、その楽曲の複数そして頻繁には数多くの音符又は和音を含んでいる。各フレームは、開始時刻と終了時刻を有し、これらがフレームを演奏される音楽の中で位置設定している。いずれかの与えられたフレームの開始時刻は、先行するフレームの終了時刻に１ミリセカンドを加えたものに等しい。図３では、第１のフレームは、時刻０から時刻6210（すなわち０〜6.21秒）まで広がり、次のフレームは6211から13230まで（すなわち6.211〜13.23秒）広がっている。楽曲データファイルの残りの部分は、類似の要領で構成されている。
本発明に従うと、ギター演奏者は、「現行の」フレーム内にある音符のみ「演奏」つまり生成することができる。現行のフレームとは、その開始時刻と終了時刻が現行時刻つまり楽曲が始まってから経過した時間をひとまとめにするようなフレームである。現行フレームの中では、ギター演奏者は、フレーム内に現われる順序でのみ、存在する音符をいくつでも演奏することができる。現行フレームに付随する時間内にこれらの音符が演奏つまり生成されるペースは、完全にユーザーによって決定される。さらに、ユーザーは、弦の活動化の回数を制御することによって、生成された和音の音符の数及び実際に生成されたフレーム内の音符の数も両方共制御する。かくして、例えば、演奏者は、その数の弦を活動化することすなわちギターをかき鳴らすことによって、１つのフレーム内の１つの弦の任意の望ましい数の音符を演奏することができる。一定の与えられたフレームに付随する期間中、演奏者がギターを演奏しない場合、そのフレーム内の音楽のいずれも生成されない。ユーザーが次に弦を打ち鳴らすつまり活動化させたとき、それより後のフレームつまり新しい現行フレームの音符が生成されることになる。
生成されるサウンドのピッチは、楽曲データを含むデータ構造内に記憶されている情報によってのみ決定されるということに留意されたい。ギター演奏者は、弦を活動化させることしか必要でない。弦が振動する振動後は、仮想音楽システムによって生成されるサウンドに対し影響を全く及ぼさない。すなわち、演奏者は、適切なサウンドを作り出すために、演奏中に弦をフレットに向けて押し下げる必要がない。
楽曲イメージ内のどこにフレーム境界を置くかについての決定は、望まれるサウンド効果及びユーザーに与えられた融通性に左右される幾分主観的な決定であるということに留意すべきである。これらの決定を下す方法は間違いなく数多く存在する。例えば、和音変更を、フレーム境界をどこに置くかの指針として用いることができる。選択の多くが、データベースを構築する編曲者の裁量にゆだねられなくてはならない。しかしながら経験則としては、フレームは、仮想楽器で演奏した場合に音楽が伴奏部と著しくずれ得るほどに長くてはならず、又１つのフレーム内で音楽を修正又はためす真の融通性を演奏者が全くもたないほどに短かくてもならない。
記述している実施形態においては、楽曲データを含むテキストベースのファイルを作り上げるためにASCI編集プログラムが用いられた。当然のことながら、楽曲データファイルの生成は、その他の数多くの方法で行なうことができる。例えば、演奏中のMIDI楽器から離れて楽曲情報をまず捕獲することによって楽曲割込みファイルを生成し、その後そのデータセットにフレームデリミタ（delimiters）を付加することもできる。
この概要を念頭に置いて、ここで、図４に示されている前述したデータ構造の記述に立ち戻ることにする。楽曲全体に対するフレームシーケンスを表わすsframe〔〕アレイ200は、１つが図８に示されているsynch_frameデータ構造のアレイである。各々のsynch_frameデータ構造は、そのフレームのための開始時刻を識別するframe_start_time変数、フレームの送信時間を識別するframe_end_time変数及び、lnote_array〔〕データ構造220及びhnotes_array〔〕データ構造240の両方に指標を提供するlnote_idx変数を含んでいる。
lnote_array〔〕220は、その１つが図９に示されているlead_noteデータ構造のアレイである。lnote_array〔〕220は、演奏順での楽曲全体のための単一音符（「主旋律音符」と呼ばれる）のシーケンスを表わす。各々のlead_noteデータ構造は、単独の主旋律音符を表わし、２つのエントリすなわち対応する主旋律音符のピッチを識別するlead_note変数及び楽曲の中でその音符が演奏されると想定される時刻を精確に位置設定する時間変数を含んでいる。単一の音符を或る与えられた時刻に演奏しなくてはならない場合、その音符が主旋律音符となる。或る与えられた時刻に音符の１つの和音を演奏しなければならない場合、主旋律音符はその和音の１つであり、hnote_array〔〕データ構造240は和音のその他の音符を識別する。和音のどの音符が主旋律音符であるかを選択するために、いかなる規約でも使用することができる。記述した実施形態においては、主旋律音符は最高のピッチをもつ和音音符である。
hnote_array〔〕データ構造240は、その１つが図10に示されているharmony_noteデータ構造のアレイである。lnote_idx変数は、このアレイ内への指標である。各々harmony_noteデータ構造は、サイズ10のhnotes〔〕アレイとhnote_cnt変数を内含する。hnotes〔〕アレイは、対応する主旋律音符と共に演奏されるべきその他の音符、すなわち和音中のその他の音符を特定する。主旋律音符が１つの和音の一部を成していない場合、hnotes〔〕アレイは空である（すなわちそのエントリは全てNULLにセットされる）。hnote_cnt変数は、付随するhnotes〔〕アレイ内の非ゼロエントリの数を識別する。かくして、例えば、単一の音符（すなわち和音の一部でないもの）を演奏しなくてはならない場合、その主旋律音符のためのharmony_noteデータ構造内のhnote_cnt変数はゼロにセットされることになり、付随するhnotes〔〕アレイのエントリは全てNULLにセットされることになる。
演奏者がバーチャルギターの弦をひくにつれて、次の節で詳述するCallbackルーチンが各事象について呼出される。和声フレーム、和音指標及び下属和音指標を計算した後、このコールバックルーチンはPC２内のプロテウス合成チップに、一定の与えられたフレーム、和音、下属和音指標に対応するピッチのトーンを作り出すよう命令する。このトーンのボリュームは、MIDIギターからの音符データと共に受信されたMIDI速度パラメータに基づくことになる。
仮想楽器のマッピング
図７Ａ及び７Ｂは、MIDI割込みコールバックルーチンすなわちvirtual_guitar_callback（）のための擬似コードを示す。呼出しを受けた時点で、このルーチンは、現行時間を得るためタイマー資源を用いるget_current_time（）ルーチンを呼出す（ステップ200）。これはまた、MIDIギターによって生成された事象を識別するため、もう１つのルーチンすなわちget_guitar_string_event（& string_id, & string_velocity）も呼出す（ステップ202）。こうして、以下の情報が復帰させられる：（１）事象のタイプ（すなわちON, OFF又はTREMOLO制御）；（２）どの弦上で事象が発生したか（すなわちstring_id）；及び（３）ON事象の場合、どの速度で弦が打ち鳴らされたか（すなわちstring_velocity）。
割込みルーチンは、生成された事象に適切なコードを実行するスイッチ命令を含んでいる（ステップ204）。一般に、割込み処理ルーチンは、プロテウス合成チップのトーン生成に対しMIDIギター事象をマッピングする。一般に、論理は以下のように要約できる：
ON弦事象が発生した場合、プログラムは現行時刻が現行フレームと整合するか否かを検査する（210）。これは、ビデオ／オーディオファイルの再生の開始以降どれほどのミリセカンドクロックの時間が経過したかを見極めるためタイマー資源を検査することによって行なわれる。上述の通り、各フレームは、開始時刻及び終了時刻を有するものとして定義づけされる。再生の開始以降の経過時間が、特定のフレームについてこれら２つの時刻の間にある場合、このフレームは、一定の与えられた時刻について適正なフレームである（すなわちこれは現行フレームである）。経過時間が選択されたフレームの時間外にきた場合、これは現行フレームではなく、いずれかの後のフレームが現行フレームである。
現行時刻が現行フレームと整合しない場合、ルーチンは、フレーム変数すなわちcurrent_frame_idxを、現行時刻をとりまとめる開始時刻と終了時刻をもつフレームの番号にセットすることによって、適正なフレームまで移行する（ステップ212）。current_frame_idex変数は、sframe_array内への指標として与えられる。新しいフレームのいかなる音符もまだ生成されていないことから、処理中の事象は新しいフレーム内の最初の主旋律音符にマッピングする。かくして、ルーチンは、その新しいフレームの最初の主旋律音符を得、対応するサウンドを生成するようシンセサイザチップに命令する（ステップ214）。この機能を果たすルーチンは、図７Ａにあるstart_tone_gen（）であり、その引数には、MIDIフォーマットのデータからのstring_velocity及びstring_idならびにlnotes_arrayからの音符の認証（identity）が含まれる。スイッチステートメントを出る前に、プログラムは、現行主旋律音符を識別するべくcurrent_lead_note_idxをセットし（ステップ215）、hnotes_played変数をゼロに初期化する（ステップ216）。hnotes_played変数は、１つの和音の１部であるものとして資格付与するのに充分なほどに最後の事象に時間的に近い時点で発生する次の事象に応えて、和音のどの音符を生成すべきかを決定する。
current_frame_idx変数によって識別されたフレームが現行フレームでない場合（ステップ218）、割込みルーチンは、last_time変数内に記憶されたような最後のON事象の時刻と現行時刻の間の計算された差異が、SIMULTAN_THRESHOLD変数によって特定されるような予め選択されたしきい値よりも大きいか否かを検査する（ステップ220及び222）。記述されている実施形態においては、予め選択された時間は、和音内の事象（すなわちほぼ同時の事象）と異なる和音の一部である事象を区別するのに充分な長さ（例えば約20ミリセカンド）をもつものとなるようにセットされる。
計算された時間差が予め選択されたしきい値よりも短かい場合、弦ON事象は、使用された最後の主旋律音符を含む「かき鳴らし」又は「同時」グループ分けの一部として処理される。この場合lnote_idx指標を用いて割込みルーチンは、harmony_notesアレイ内の適切なブロックを見い出し、又、hnotes_played変数の値を用いてそのブロックのh_notesアレイ内に関連するエントリを発見する。これは次に以下の情報をシンセサイザに渡す（ステップ224）。
string_velocity
string_id
hnotes_array〔current_lead_note_idx〕．hnotes〔hnotes_played++〕
この情報により、シンセサイザはその和声音符のための適切なサウンドを生成することになる。次のON事象が最後のON事象の予め選択された時間内に発生すると仮定してこのON事象がhnote〔〕アレイ内の次の音符をアクセスするような形で、hnotes_played変数も増分されるということに留意されたい。
計算された時間差が予め選択されたしきい値よりも長い場合には、弦事象は、先行ON事象を含んだ和音の一部分として処理されない。むしろ、それは、lead_note arry内の次の主旋律音符にマッピングされる。割込みルーチンは、lead_noteアレイ内の次の主旋律音符にcurrent_lead_note_idx指標をセットし、そのトーンの生成を開始する（ステップ226）。これは又、その主旋律音符に付随する和声音符が存在する場合にそれをアクセスするための準備としてhnotes_played変数を０にセットする（ステップ228）。
MIDIギター事象がOFF STRING EVENTである場合、割込みルーチンは、その弦についてのサウンド生成をオフ切換えするunsound_note（）ルーチンを呼出す（ステップ230）。これは、OFF事象を報告するMIDI事象パケットからstring_idを獲得し、これをunsound_note（）ルーチンに渡す。unsound_noteルーチンは次に、識別された弦の上でこのOFF事象に先行していたはずのON事象についてどのトーンが生成されつつあるかをルックアップし、その弦についてのトーン生成をオフに切換える。
MIDIギター事象がTREMOLO事象である場合、MIDIギターからのトレモロ情報は、適切なトレモロを生成するシンセサイザチップへと直接渡される（ステップ232）。
入力装置
ここで記述される発明においては、MIDIギターに代って、内部衝撃感応式スイッチを伴うギターピックが用いられる図11Ａ及びＢに示されているピック300は、中に衝撃感応式スイッチ304が取付けられている中空の内部303の備わったプラスチック製ハウジング302を含んでいる。密封されたハウジングの外周上には、ピック要素として作用する一体化されたプラスチックフィン306が存在する。ハウジング302の片端には、ハウジングから離れるように延びる緩衝部分307がある。
衝撃感応式スイッチ304は、ユーザーがピックを１つの物体と接触させたときに起こるような減速を検知する任意の装置である。記述された実施形態においては、スイッチ304には、各々それぞれ対応する可とう性アーム314及び316の端部にある２つの接点310及び312が含まれている。アームは、ばね鋼といったような金属で作られ、休止状態にあるときに接点を閉鎖位置で偏向させるように配置されている。同様に接点310及び312から反対の側でアーム314及び316に対しその自由端で取りつけられているのは、おもり315及び317である。おもり315及び317の慣性により、バネアーム314及び316は、ピックが加速又は減速のいずれかを受けた時点で（つまりピックを他の物体に対し打ちつけることによりひき起こされる衝撃）、屈曲する。
アーム314及び316に接続されているのは、ハウジングの端部で緩衝部分を通過しかつ例えば、MIDIギターが接続されていたコンピュータに接続するワイヤ318及び320である。
ピックがギターの弦を横断してかさらに言うと何らかの物体を横断して一振りされると、ピックの内側の衝撃感応式スイッチのアーム314及び316は、その静的休止位置から離れるように屈曲し、分離した開回路を作り出し、かくして接点の間の抵抗を著しく増大させることになる。バネアームが接点をその休止位置まで復帰させた時点で、接点は、それが最終的にその休止位置に戻るまで互いに対して反復的にはね返し合うことになる。MIDIインターフェイス回路は、図12に示されているように、接点が短絡した場合のゼロと接点が開放した場合のいずれかの正の電圧の間で、スイッチの出力ラインを横断する電圧信号が振動するのを観測する。
MIDIインターフェイスボードは、１つの事象としてスイッチの最初の開放（すなわちゼロから何れかの正の電圧までの遷移）を検出し、前述の割込みルーチンを呼出す割込みを生成する。ソフトウェアは、最初の割込みの後予め定められた時間にさらなる割込みの生成を防ぐ又は無効化する入力信号に対するデバウンシング機能を実行するべく、MIDIギター用のものから修正される。記述された実施形態においては、予め定められた時間は約150msecである。この時間中、MIDIインターフェイスボードは、スイッチ接点で発生する振動のためスイッチにより生成されるその後のあらゆる事象を無視する。
ギターピックによって生成される唯一の入力信号は、スイッチの開閉によって生成される単一の信号であることから、この実施形態では、MIDIインターフェイスボードは、全ての弦が活動化された時点でMIDIギターから通常受信されるようなMIDI信号を生成するように修正される。すなわち、各々のstring_idについて、MIDIインターフェイスは１つのON事象を生成し、string_velocityを或る予め定められた値にセットする。システムにはユーザーが同じ力でギターの６本の弦全てをかき鳴らしたようにみえる。
短かい遅延時間の経過後（すなわち150msec）、ソフトウェアはユーザーによる次の活動化事象をいつでも検出できる状態となる。より長い遅延時間の後、MIDIインターフェイスは、活動化された各々の弦についてOFF事象を生成する。
その他全ての方法において、システムは、MIDIギターを使用した前述の実施形態と全く同じように作動する。換言すると、修正されたギターピックにより、ユーザーは、MIDIギターを使用さらには所有する必要なく前述の仮想楽器のケイパビリティにアクセスできるようになる。単なるテニスラケットでも、ギターピックをかき鳴らさせることのできる対象物体として作用することになる。実際には、スイッチ内のアームの偏向が充分に軽いものである場合には、単に完全に架空のギター「すなわち「エアー」ギター」を演奏する動作を行なうことによって、事象の生成を引き起こすことが可能である。すなわち、架空のギターを演奏するふりをすることによってひき起こされるピックの加速及び／又は減速は、接点を開かせるのに充分なものとなる。
上述の衝撃感応式スイッチにおいては、接点は通常閉じていた。通常開放している接点をもつ衝撃感応式スイッチが使用されてもよい。さらにその他のタイプの衝撃感応式スイッチ（例えば加速度計）が使用されてもよい。さらに、完全に異なるタイプのスイッチも使用できたということも理解すべきである。例えば、ユーザーがギターピックで１つの物体に接触した場合につねにそれを検出する単純な接点スイッチを使用することが可能である。
その上、このコンセプトは、ギターピックのような手持ち式付属備品を使用する及び／又は使用するように修正できるその他の楽器にまで容易に拡張できる。例えば、それが別の物体を打撃させられた時点でつねにドラム事象を生成する衝撃感応式スイッチをドラムスティックに付加することによって、このスティックを修正することができる。又はピアノの場合には、ユーザーは、指の中に単数又は複数のスイッチが取りつけられている手袋をはめることができる。ユーザーが適切な指の動きを行なうことによってピアノを弾くふりをする毎に、スイッチはピアノ又はギター事象を生成することになり、これは、前述のようにソフトウェアを通して記憶された音楽の音符にアクセスすることになる。
このように本発明の実施例について記述してきたが、当業者にとっては、さまざまな変更、修正、及び改良を容易に加えることができるということは明白であろう。このような明白な変更、修正及び改良は、以上で明示的に記述していないが、それでもなお暗に意味するものと考えられ、本発明の精神及び範囲内に入るものである。従って、以上の論述は例示的なものにすぎず、制限的意味をもたない；本発明は以下のクレーム及びそれと等価のものによってのみ制限され定義づけされる。
【図１】
0003841828.tif 000002
【図２】
0003841828.tif 000003
【図３】
0003841828.tif 000004
【図４】
0003841828.tif 000005
【図５】
0003841828.tif 000006
【図６】
0003841828.tif 000007
【図７Ａ】
0003841828.tif 000008
【図７Ｂ】
0003841828.tif 000009
【図８】
0003841828.tif 000010
【図９】
0003841828.tif 000011
【図１０】
0003841828.tif 000012
【図１１Ａ】
0003841828.tif 000013
【図１１Ｂ】
0003841828.tif 000014
【図１２】
0003841828.tif 000015