(57)【特許請求の範囲】
【請求項１】
それぞれ複数種の属性値情報からなる音符情報を複数個有することにより構成される演奏情報を記憶する記憶手段と、
この音符情報を構成する属性値情報から任意の属性値情報を選択する選択手段と、
前記属性値情報の変更量を示す属性値変更量情報を入力する属性値変更量情報入力手段と、
加算及び乗算のいずれか一方の演算を指定する属性値変更方法情報を入力する属性値変更方法情報入力手段と、
前記選択手段により選択された属性値情報に対して、前記属性値変更量情報入力手段により入力された属性値変更量情報を、前記属性値変更方法情報入力手段により入力された属性値変更方法情報により指定された加算及び乗算のいずれか一方で演算することにより、前記選択された属性値情報を書き換える書換手段と、
を有することを特徴とする演奏情報編集装置。
【請求項２】
前記属性値情報は、前記音符情報により発生すべき音の音高を示す音高データと、発音タイミングを示すタイムクロックデータ、及び発音時間長を示すゲートタイムデータであることを特徴とする請求項１記載の演奏情報編集装置。
【請求項３】
前記演奏情報編集装置は、前記書換手段により書き換えられた前記記憶手段から、前記音符情報を順次読み出して発音を指示する発音指示手段を、さらに有することを特徴とする請求項１記載の演奏情報編集装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、予めメモリに記憶された演奏情報を変更する所謂アレンジ機能を有する演奏情報編集装置に関する。
【０００２】
【従来の技術】
従来、記憶されている演奏情報を部分的に変更し得る演奏情報編集装置が知られている。この演奏情報編集装置には、演奏情報を記憶するメモリが設けられており、録音モードを設定して鍵盤で演奏を行うと、押鍵時の音高や発音タイミング、押鍵時点から離鍵時点までの音長等からなる発音情報が順次メモリに記憶される。そして、このように録音モードで複数の発音情報からなる演奏情報をメモリに記憶させた後、所定の指定操作を行って任意の発音情報のみを読み出し、さらに所定の変更操作を行うと、当該発音情報を構成する音高、発音タイミング、音長が変更された後、メモリに再記憶される。したがって、複数の発音情報に対して、所定の指定操作と変更操作とを順次行うことにより、予めメモリに記憶させた演奏情報を部分的に変更した、アレンジを行うことができる。
【０００３】
【発明が解決しようとする課題】
このように、従来のアレンジ機能を有する演奏情報編集装置にあっては、予め記憶されている音符に対応する発音情報を指定する操作と、指定した発音情報の内容を変更する操作とを、変更しようとする発音情報毎に行わなければならない。このため、操作が煩雑であって、アレンジに多大な時間を要してしまうのみならず、各音符に対応する発音情報の内容を各々個別に変更することから、変更内容が不統一となって無秩序的にアレンジがなされしまう。
【０００４】
本発明は、このような従来の課題に鑑みてなされたものであり、簡単な操作によりしかも変更内容を統一化しつつアレンジを行うことのできる演奏情報編集装置を提供することを目的とするものである。
【０００５】
【課題を解決するための手段】
前記課題を解決するために本発明にあっては、それぞれ複数種の属性値情報からなる音符情報を複数個有することにより構成される演奏情報を記憶する記憶手段と、この音符情報を構成する属性値情報から任意の属性値情報を選択する選択手段と、前記属性値情報の変更量を示す属性値変更量情報を入力する属性値変更量情報入力手段と、加算及び乗算のいずれか一方の演算を指定する属性値変更方法情報を入力する属性値変更方法情報入力手段と、前記選択手段により選択された属性値情報に対して、前記属性値変更量情報入力手段により入力された属性値変更量情報を、前記属性値変更方法情報入力手段により入力された属性値変更方法情報により指定された加算及び乗算のいずれか一方で演算することにより、前記選択された属性値情報を書き換える書換手段とを有している。
【０００６】
かかる構成において、記憶手段に記憶されている演奏情報を構成する複数の音符情報から任意の音符情報を指定する。そして選択手段により、この音符情報を構成する属性値情報から任意の属性値情報を選択する。さらに、属性値変更量情報入力手段により、属性値情報の変更量を示す属性値変更量情報を入力するとともに、属性値変更方法情報入力手段により、加算及び乗算のいずれか一方の演算を指定する属性値変更方法情報を入力する。すると、書換手段は、選択された属性値情報に対して、入力された属性値変更量情報を、属性値変更方法情報により指定された加算及び乗算のいずれか一方で演算することにより、前記選択された属性値情報を書き換える。したがって、記憶手段に記憶されている演奏情報は、前記指定手段により指定された音符情報に対応する部分のみが変更されて、アレンジがなされる。このとき指定された各音符情報は、同一の属性値変更量情報と属性値変更方法情報とに基づき変更されることから、変更内容が統一的となり、演奏情報で構成される楽曲は秩序的にアレンジされる。
【０００７】
【発明の実施の形態】
以下、本発明の一実施の形態を図にしたがって説明する。この実施の形態は、本発明を電子楽器に適用したものであり、この電子楽器には、図１のブロック構成に示すように、ＳＷ群１及び鍵盤１が設けられている。ＳＷ群１には、ＳＴＡＲＴ／ＳＴＯＰ  ＳＷ、ＲＥＣ  ＳＷ、編集ＳＷ、音符選択ＳＷ、属性選択ＳＷ、属性値変更ＳＷ、属性値変更方法ＳＷ、指定手段及び入力手段として機能するキー操作子群としてのテンキー、及びその他の機能スイッチが設けられている。なお、各ＳＷ及びキーは、押操作状態においてのみオンとなる常開型のスイッチである。
【０００８】
また、鍵盤２には音高順に配置された複数の鍵と、各鍵毎に配置され押鍵に伴ってオンとなる鍵スイッチとが設けられており、これら鍵盤２とＳＷ群１の操作情報は、ＣＰＵ３に取り込まれる。ＣＰＵ３は、これらの入力情報とＲＯＭ４に記憶されているプログラム等に基づいて動作し、ＲＡＭ５をワークエリアとして使用しつつ、この電子楽器において必要な全ての処理を実行する。すなわち、ＣＰＵ３は、後述するフローに従って処理を実行することにより、この実施の形態において書換手段を構成するものであって、演奏用メモリ６へのデータ書き込み及び書き換え処理、読み出し処理等を実行するとともに、音源７を制御する。この音源７は、ＣＰＵ３から供給される音高データに基づき楽音波形を生成し、この楽音波形がアンプ及びスピーカ等で構成される発音回路８に与えられることにより、該発音回路８から楽音が発生するように構成されている。
【０００９】
前記演奏用メモリ６は、本実施の形態において記憶手段を構成するものであって、図２に示すように、ｎ行３列（但し、第ｎ行目は１列のみ）のワードで構成される演奏データを記憶する記憶エリアが設けられている。この記憶エリアの各行において、１列目にはベロシティデータとともに音高データが格納され、２列目にはクロックタイムデータが格納されるとともに、３列目にはゲートタイムデータが各々格納される。ここで、音高データは発生する楽音の音高を示し、クロックタイムデータは発音タイミングを示す時刻データであり、ゲートタイムデータは音長に対応する発音時間長を示す時間データである。したがって、各行を構成する３ワードのデータにより、１つの音符に対応する音高、発音タイミング、発音時間長からなる発音情報たる音符データを示す。なお、最終アドレスＤ［ｎ］［１］には、演奏データの終わりを示す「ＥＮＤ」が格納される。
【００１０】
次に、以上の構成にかかる本実施の形態の動作を図３以降に示したフローチャートに従って説明する。ＣＰＵ３は、電源の投入に伴って、図３に示すフローに従って動作を開始し、先ずイニシャライズ処理（ＳＡ１）を実行する。このイニシャライズ処理においては、他のフローに示す各種フラグ、レジスタをクリアしあるいは所定の初期値をセットする。引き続き、後述するスイッチ処理（ＳＡ２）、鍵盤処理（ＳＡ３）、再生処理（ＳＡ４）、発音処理（ＳＡ５）、及びこれらの処理以外のその他の処理（ＳＡ６）を実行し、電源がオンとなっている間、ＳＡ２〜ＳＡ６のループを繰り返す。
【００１１】
このメインフローに対しては、図４に示すタイマインタラプトが一定時間間隔で割り込んで実行される。すなわち、スタートフラグＳＴＦがセットされているか否かを判別し（ＳＢ１）、セットされている場合にのみタイマＴをカウントアップさせる（ＳＢ２）。よって、タイマＴはＳＴＦ＝１である場合のみ一定時間間隔でカウントアップして現在時刻を示して行き、ＳＴＦ＝０である場合にはカウントアップを停止している。
【００１２】
また、ＳＢ２に続くＳＢ３では、オンフラグＯＮＦがセットされているか否かを判別し、セットされていない場合には以降の処理を行うことなくリターンする。しかし、ＯＮＦがセットされている場合には、さらにレコードフラグＲＥＣＦがセットされているか否かを判別する（ＳＢ４）。このＲＥＣＦは、後述する図７のＲＥＣ  ＳＷ処理において、録音を開始すべくＲＥＣ  ＳＷが操作された際にセットされるフラグであり、“１”により録音モードであることを示し、“０”により再生モードを示している。そして、このＳＢ４での判別の結果、ＲＥＣＦ＝１であって録音モードの状態であるならば、カウンタＣＴをカウントアップさせ（ＳＢ５）、ＲＥＣＦ＝０であって再生モードの状態であるならば、カウンタＣＴをカウントダウンさせる（ＳＢ６）。したがってＣＴは、ＯＮＦ＝１であって且つ録音モードの場合には一定の時間間隔でカウントアップして行き、ＯＮＦ＝１であって且つ再生モードの場合には一定の時間間隔でカウントダウンして行く。
【００１３】
一方、前記スイッチ処理（ＳＡ２）は、図５に示すフローに従って行われ、ＳＴＡＲＴ／ＳＴＯＰ  ＳＷ処理（ＳＣ１）、ＲＥＣ  ＳＷ処理（ＳＣ２）、編集ＳＷ処理（ＳＣ３）、音符選択ＳＷ処理（ＳＣ４）、属性選択ＳＷ処理（ＳＣ５）、属性値変更ＳＷ処理（ＳＣ６）、属性値変更方法ＳＷ処理（ＳＣ７）、テンキー処理（ＳＣ８）、及びその他のＳＷ処理（ＳＣ９）を順次実行する。
【００１４】
ＳＴＡＲＴ／ＳＴＯＰ  ＳＷ処理（ＳＣ１）は、図６に示すフローに従って行われ、先ずＳＴＡＲＴ／ＳＴＯＰ  ＳＷの操作があったか否かを判別し（ＳＤ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、スタートフラグＳＴＦを反転した後（ＳＤ２）、前記タイマＴをリセットする（ＳＤ３）。したがって、ＳＴＦは、ＳＴＡＲＴ／ＳＴＯＰ  ＳＷの操作毎に、“１”“０”を繰り返し、前述した図４のタイマインタラプトでカウントアップしているタイマＴは、ＳＴＡＲＴ／ＳＴＯＰ  ＳＷの操作毎にリセットされる。
【００１５】
次に、このＳＴＦがセットされているか否かを判別する（ＳＤ４）。このＳＴＦは、“０”でストップを示し、“１”でスタートを示すフラグである。そして、このＳＤ４での判別の結果、ＳＴＦ＝１であってスタートであった場合には、ポインタｎに初期値“１”をセットする（ＳＤ５）。引き続き、このポインタｎの値で示される演奏用メモリ６のアドレスＤ［ｎ］［１］に記憶されているデータ（音高）をバッファＰ２にストアし（ＳＤ６）、アドレスＤ［ｎ］［２］に記憶されているデータ（クロックタイム）をタイマレジスタＴＭにセットするとともに（ＳＤ７）、アドレスＤ［ｎ］［３］に記憶されているデータ（ゲートタイム）をカウンタＣＴにセットする（ＳＤ８）。したがって、ＳＴＦがセットされると、演奏用メモリ６の第１ワードに記憶されている、音高、クロックタイム、ゲートタイムが、Ｐ２，ＴＭ，ＣＴに各々セットされる。引き続き、タイマインタラプト禁止を解除し（ＳＤ９）、よって、ＳＤ３でリセットされたタイマＴがカウントアップを開始する。
【００１６】
他方、ＳＤ４での判別の結果、ＳＴＦ＝０であってストップであるならば、さらにレコードフラグＲＥＣＦがセットされているか否かを判別する（ＳＤ１０）。このＲＥＣＦは、後述する図７のＲＥＣ  ＳＷ処理において、録音を開始すべくＲＥＣ  ＳＷが操作された際にセットされるフラグであり、“１”により録音モードを“０”により再生モードを示している。そして、このＳＤ１０での判別の結果、ＲＥＣＦ＝１であって、録音モードの状態でストップされた場合には、ＲＥＣＦをリセットした後（ＳＤ１１）、ポインタｎをインクリメントし（ＳＤ１２）、このポインタｎの値で示される演奏用メモリ６のアドレスＤ［ｎ］［１］に「ＥＮＤ」を書き込む（ＳＤ１３）。したがって、録音モードでストップの状態になると、図２に示したように、その時点のポインタｎの値により示される演奏用メモリ６のＤ［ｎ］［１］に「ＥＮＤ」が書き込まれることとなる。引き続き、録音をストップすることにより、タイマＴのカウントアップは不要となったことから、タイマインタラプトを禁止する（ＳＤ１４）。また、ＳＤ１０での判別の結果、ＲＥＣＦ＝０であって再生モードでストップとなった場合には、発音を指示するためのフラグであるオンフラグＯＮＦをリセットして（ＳＤ１５）、発音を禁止するとともにタイマインタラプトを禁止する（ＳＤ１４）。
【００１７】
前記ＲＥＣ  ＳＷ処理（ＳＣ２）は、図７に示すフローに従って行われ、先ずＲＥＣ  ＳＷの操作があったか否かを判別し（ＳＥ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、ＲＥＣＦをセットするとともに（ＳＥ２）、タイマＴをリセットし且つポインタｎに初期値“１”をセットする（ＳＥ３）。引き続き、前述のＳＤ１４の処理により禁止されたタイマインタラプトの禁止を解除する（ＳＥ４）。したがって、前述のようにＲＥＣＦは、“１”により、ＲＥＣ  ＳＷが操作されて録音モードが設定されたことを示すとともに、タイマＴは録音モードの設定と同時にカウントアップを開始して、その値を増加させて行く。
【００１８】
前記編集ＳＷ処理（ＳＣ３）は、図８に示すフローに従って行われ、先ず編集ＳＷの操作があったか否かを判別し（ＳＦ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、編集フラグＨＦを反転させた後（ＳＦ２）、この反転させたＨＦがセット状態となっているか否かを判別する（ＳＦ３）。このＨＦは、“１”で編集モードが設定されていることを示し、“０”で編集モードが解除されたことを示すフラグである。そして、このＳＦ３での判別の結果、ＨＦ＝０であって編集モードが解除された場合には、ＳＦ４及びＳＦ５の処理を行うことなく図５のフローに戻る。また、ＨＦ＝１であって編集モードが設定された場合には、ＳＴＦをリセットするとともに（ＳＦ４）、ＲＥＣＦをリセットして（ＳＦ５）、図５のフローに戻る。したがって、ＳＴＦとＲＥＣＦは、編集モードの設定に伴ってリセットされる。
【００１９】
前記音符選択ＳＷ処理（ＳＣ４）は、図９に示すフローに従って行われ、先ず音符選択ＳＷの操作があったか否かを判別し（ＳＧ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、ＨＦがセットされて編集モードが設定されているか否かを判別する（ＳＧ２）。ここで、音符選択ＳＷの操作は、編集モードが設定されている場合にのみ必要な操作であり、よって、編集モードが設定されていない状態での音符選択ＳＷの操作は不必要且つ誤った操作である。したがって、ＳＧ２の判別を行うことにより、編集モードが設定されている状態で音符選択ＳＷが操作された、適正な操作があったか否かを識別することができ、この適正な操作があった場合には、音符選択フラグＯＳＦを反転させる（ＳＧ３）。引き続き、属性選択フラグＺＳＦ、属性値変更フラグＺＨＦ、属性値変更方法フラグＨＨＦをリセットした後（ＳＧ４，ＳＧ５，ＳＧ６）、ポインタｎに初期値“１”をセットして（ＳＧ７）、図５のフローに戻る。
【００２０】
しかし、ＳＧ２の判別の結果、ＨＦ＝０であれば、編集モードが設定されてないにも拘わらず音符選択ＳＷを操作した、不必要且つ誤った操作を行った場合である。この場合には、ＳＧ２からＳＧ８に進んで、警告音フラグＫＦをセットした後、ＯＮＦをセットし（ＳＧ９）、さらにこのときの音源７の状態を所定のバッファＡに退避させておく（ＳＧ１０）。引き続き、警告音用の音高データをＰ３にストアするとともに（ＳＧ１１）、警告音のゲートタイムである所定値をカウンタＣＴにセットし（ＳＧ１２）、さらには警告音の発生時間をカウント可能にすべく、タイマインタラプトの禁止を解除しておく（ＳＧ１３）。
【００２１】
前記属性選択ＳＷ処理（ＳＣ５）は、図１０に示すフローに従って行われ、先ず属性選択ＳＷの操作があったか否かを判別し（ＳＨ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、ＨＦがセットされて編集モードが設定されているか否かを判別する（ＳＨ２）。つまり、前述と同様に属性選択ＳＷの操作は、編集モードが設定されている場合にのみ必要な操作であり、よって、編集モードが設定されていない状態での属性選択ＳＷの操作は不必要且つ誤った操作である。したがって、ＳＨ２の判別を行うことにより編集モードが設定されている状態で属性選択ＳＷが操作された、適正な操作があったか否かを識別することができ、この適正な操作があった場合には、対応する属性選択フラグＺＳＦを反転し（ＳＨ４）、他の音符選択フラグＯＳＦ、属性値変更フラグＺＨＦ、属性値変更方法フラグＨＨＦをリセットする（ＳＨ３，ＳＨ５，ＳＨ６）。しかし、ＳＨ２の判別の結果、ＨＦ＝０であれば、編集モードが設定されてないにも拘わらず音符選択ＳＷを操作した、不必要且つ誤った操作を行った場合である。この場合には、ＳＨ７〜ＳＨ１２により、前述したＳＧ８〜ＳＧ１３と同様の処理を行う。
【００２２】
前記属性値変更ＳＷ処理（ＳＣ６）は、図１１に示すフローに従って行われ、先ず属性値変更ＳＷの操作があったか否かを判別し（ＳＩ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、ＨＦがセットされて編集モードが設定されているか否かを判別する（ＳＩ２）。つまり、前述と同様にして、ＳＩ２の判別を行うことにより編集モードが設定されている状態で属性値変更ＳＷが操作された、適正な操作があったか否かを識別することができ、この適正な操作があった場合には、対応する属性値変更フラグＺＳＦを反転し（ＳＩ５）、他の音符選択フラグＯＳＦ、属性値変更フラグＺＳＦ、属性値変更方法フラグＨＨＦをリセットする（ＳＩ３，ＳＩ４，ＳＩ６）。しかし、ＳＩ２の判別の結果、ＨＦ＝０であれば、編集モードが設定されてないにも拘わらず音符選択ＳＷを操作した、不必要且つ誤った操作を行った場合である。この場合には、ＳＩ７〜ＳＩ１２により、前述したＳＧ８〜ＳＧ１３と同様の処理を行う。
【００２３】
前記属性値変更方法ＳＷ処理（ＳＣ６）は、図１２に示すフローに従って行われ、先ず属性値変更方法ＳＷの操作があったか否かを判別し（ＳＪ１）、操作がない場合には図５のフローに戻る。また、操作があったならば、ＨＦがセットされて編集モードが設定されているか否かを判別する（ＳＪ２）。つまり、前述と同様にして、ＳＪ２の判別を行うことにより編集モードが設定されている状態で属性値変更方法ＳＷが操作された、適正な操作があったか否かを識別することができ、この適正な操作があった場合には、対応する属性値変更方法フラグＨＨＦを反転し（ＳＪ６）、他の音符選択フラグＯＳＦ、属性選択フラグＺＳＦ、属性値変更フラグＺＨＦをリセットする（ＳＪ３，ＳＪ４，ＳＪ５）。しかし、ＳＪ２の判別の結果、ＨＦ＝０であれば、編集モードが設定されてないにも拘わらず音符選択ＳＷを操作した、不必要且つ誤った操作を行った場合である。この場合には、ＳＪ７〜ＳＪ１２により、前述したＳＧ８〜ＳＧ１３と同様の処理を行う。
【００２４】
前記テンキー処理（ＳＣ８）は、図１３及び図１４に示す一連のフローに従って行われる。すなわち、テンキーが操作されたか否かを判別し（ＳＫ１）、操作がない場合には図５のフローに戻る。また、テンキーの操作があったならば、ＨＦがセットされて編集モードが設定されているか否かを判別する（ＳＫ２）。そして、編集モードが設定されているならば、さらにＯＳＦがセットされているか否か、つまり音符選択モードが設定されているか否かを判別する（ＳＫ３）。そして、これらＳＫ１〜ＳＫ３の判別が全てＹＥＳであって、編集モードであって音符選択モードの状態でテンキーが操作された場合には、ポインタｎの値で指定されるｎ番目のレジスタＮ（ｎ）に、テンキーの操作により入力された値を格納する。このとき、ポインタｎには、前述した図９のＳＧ７で、音符選択ＳＷの操作に伴い音符選択モードが設定された時点で、初期値“１”がセットされていることから、ＳＫ４では先ずＮ（１）にユーザーがテンキーの操作により入力された任意の値が格納される。
【００２５】
引き続き、ポインタｎをインクリメントし（ＳＫ５）、しかる後にリターンする。したがって、ユーザーが、編集モードであって音符選択モードの状態でテンキーを操作し、このテンキーの操作により前記演奏用メモリ６に記憶されている各音符データの何番目かを指定することにより、指定された音符データに対応する数値が、順次各レジスタＮ（１）、Ｎ（２）、Ｎ（３）・・・に格納される。これにより、演奏メモリ６に記憶されている演奏データのうち、ユーザーが所望する任意の音符データを任意の数をもって、変更対象として指定することができる。
【００２６】
また、ＳＫ３での判別の結果、ＯＳＦ＝０であって音符選択モードが設定されてない場合には、ＳＫ３からＳＫ６に進み、ＺＳＦがセットされているか否か、つまり属性選択モードが設定されているか否かを判別する。そして、ＳＫ１とＳＫ２及びＳＫ６の判別がＹＥＳであって、編集モードであって属性選択モードの状態でテンキーが操作された場合には、レジスタｍにテンキーの操作により入力された値を格納する（ＳＫ７）。
【００２７】
なお、この編集モードであって属性選択モードでテンキーを操作する場合には、テンキーの“１”“２”“３”のいずれかのキーのみの操作が有効となり、他のキーの操作を無効とする処理が図外のフローで行われる。したがって、編集モードであって属性選択モードでテンキーを操作した場合、ｍには“１”“２”“３”のいずれかの値が格納される。また、これらの値において、“１”は演奏用メモリ６の１列目に記憶されている音高を指定したことを意味し、“２”は２列目に記憶されているクロックタイムを指定したことを意味し、“３”はゲートタイムを指定したことを意味する。
【００２８】
また、ＳＫ６での判別の結果、ＺＳＦ＝０であって属性選択モードが設定されてない場合には、ＳＫ６からＳＫ８に進み、ＺＨＦがセットされているか否か、つまり属性値変更モードが設定されているか否かを判別する。そして、ＳＫ１とＳＫ２及びＳＫ８の判別がＹＥＳであって、編集モードであって属性値変更モードの状態でテンキーが操作された場合には、レジスタａにテンキーの操作により入力された値（変更情報である変更量）を格納する（ＳＫ９）。
【００２９】
次に、ポインタＬに初期値“１”をセットし（ＳＫ１０）、このポインタＬの値で指定されるレジスタＮ（Ｌ）からデータを読み出して、バッファＰに格納する（ＳＫ１１）。したがって、このＳＫ１１の処理が１回目に行われた時点では、前記ＳＫ４の処理により、Ｎ（１）に格納されているユーザーがピックアップした音符データの番号を示す値がバッファＰに格納されることとなる。
【００３０】
引き続き、ＨＨＦがセットされているか否かを判別する（ＳＫ１２）。この属性値変更方法フラグＨＨＦは、“１”により属性値の変更方法が“乗算”であることを示し、“０”により属性値の変更方法が“加算”であることを示す。そして、ＨＨＦ＝１であって、“乗算”である場合には、Ｄ［Ｐ］［ｍ］×ａを演算して、その演算結果にＤ［Ｐ］［ｍ］のデータを変更する（ＳＫ１３）。ここで、Ｐはユーザーが指定した音符データの番号であり、ｍはＳＫ７で説明したように、“１”“２”“３”のいずれかの値である。したがって、例えばＰ＝１であって、ｍ＝３、ＨＨＦ＝１であったとすると、図２に示した演奏用メモリ６のＤ［１］［３］格納されているゲートタイムがａ倍に修正される。
【００３１】
次に、ポインタＬをインクリメントした後（ＳＫ１５）、このポインタＬの値が、前述のＳＫ５でテンキーの入力がある都度インクリメントされたｎ以上となったか否か、つまりユーザーがピックアップした音符データの数以上となったか否かを判別し（ＳＫ１６）、Ｌ≧ｎとなるまでＳＫ１１からの処理を繰り返す。したがって、前述の例示のように、ｍ＝３、ＨＨＦ＝１であったとすると、演奏用メモリ６に記憶されている複数の音符データで構成される演奏データにおいて、ユーザーが予め任意に指定してピックアップしたｎ個の音符データのゲートタイムが、各々ａ倍に修正される。
【００３２】
すなわち、前述した音符選択モードの状態でテンキーを順次操作して、任意の音符データを任意の数ピックアップした後、属性選択モードの状態でテンキーを操作して、“１”“２”“３”に対応する“音高”“クロックタイム”“ゲートタイム”のいずれか選択し、属性値変更モードの状態でテンキーを操作して任意の値を入力し、しかる後に属性値変更方法ＳＷを操作して、“乗算”を設定する。この一連の操作を行うことにより、予めピックアップした音符データの“音高”“クロックタイム”“ゲートタイム”のいずれかを、任意のａ倍に修正することができる。これにより、各ピックアップした複数の音符データの音高を全てａ倍にし、あるいはクロックタイム（発音時刻）を全てａ倍にし、若しくはゲートタイムを全てａ倍にするアレンジが完了する。
【００３３】
また、ＳＫ１２での判別の結果、ＨＨＦ＝０であって属性値の変更方法として“加算”が設定されている場合には、Ｄ［Ｐ］［ｍ］＋ａを演算して、その演算結果にＤ［Ｐ］［ｍ］のデータを変更する（ＳＫ１４）。しかる後に、前述したＳＫ１５及びＳＫ１６の処理を行って、Ｌ≧ｎとなるまでＳＫ１１からの処理を繰り返す。したがって、例えばｍ＝１、ＨＨＦ＝０であったとすると、演奏用メモリ６に記憶されている複数の音符データで構成される演奏データにおいて、ユーザーが予め任意にピックアップしたｎ個の音符データの音高が、各々＋ａに修正される。
【００３４】
すなわち、前述した音符選択モードの状態でテンキーを順次操作して、任意の音符データを任意の数ピックアップした後、属性選択モードの状態でテンキーを操作して、“１”“２”“３”に対応する“音高”“クロックタイム”“ゲートタイム”を選択し、属性値変更モードの状態でテンキーを操作して任意の値を入力し、しかる後に属性値変更方法ＳＷを操作して、“加算”を設定する。この一連の操作を行うことにより、予めピックアップした音符データの“音高”“クロックタイム”“ゲートタイム”のいずれかを、＋ａに修正することができる。これにより、各ピックアップされた複数の音符データの音高を全て＋ａにし、あるいはクロックタイム（発音時刻）を全て＋ａにし、若しくはゲートタイムを全て＋ａにするアレンジが完了する。
【００３５】
一方、図３のメインフローにおける鍵盤処理（ＳＡ３）は、図１５に示すフローに従って行われ、先ず鍵盤２が操作されたか否かを検出する（ＳＬ１）。そして、鍵盤２が操作されず変化がない場合には、以下の処理を行うことなく、メインフローに戻る。しかし、鍵盤２での操作があり、それが押鍵（ＯＮ）である場合には、操作鍵に対応する音高データを、バッファＰ１にストアしておく（ＳＬ２）。引き続き、押鍵状態にあることを示すフラグＣＦをセットした後（ＳＬ３）、カウンタＣＴをリセットし（ＳＬ４）、発音を指示すべくＯＮＦをセットする（ＳＬ５）。また、鍵盤２での操作があり、それが離鍵（ＯＦＦ）である場合には、ＣＦをリセットするとともに（ＳＬ６）、ＯＮＦをリセットする（ＳＬ７）。
【００３６】
そして、ＳＬ５又はＳＬ６に続くＳＬ８では、ＲＥＣＦがセットされて録音モードが設定されているか否かを判別し、録音モードが設定されていない場合には、以降の処理を行うことなくメインフローに戻る。また、ＲＥＣＦがセットされて録音モードが設定されている場合には、さらにＯＮＦがセットされているか否か、つまり押鍵状態にあるか否かを判別する（ＳＬ９）。この判別の結果、ＯＮＦ＝１であって押鍵状態にあるならば、前述のＳＬ２でバッファＰ１に格納した音高データを、演奏用メモリ６のポインタｎの値で指定されるアドレスＤ［ｎ］［１］に格納する（ＳＬ１０）。さらに、この時点のタイマＴの値を、演奏用メモリ６のポインタｎの値で指定されるアドレスＤ［ｎ］［２］に格納する（ＳＬ１１）。また、ＳＬ９での判別の結果、ＯＮＦ＝０であって離鍵状態となったならば、前述のＳＬ４でのリセットにより、押鍵後の時間をカウントとしているカウンタＣＴの値を、演奏用メモリ６のポインタｎの値で指定されるアドレスＤ［ｎ］［３］に格納する（ＳＬ１２）。しかる後に、ポインタｎをインクリメントし（ＳＬ１３）、メインフローに戻る。
【００３７】
したがって、録音モードを設定して鍵盤２を操作して演奏を行うと、ＳＬ８〜ＳＬ１３が繰り返し実行されることにより、図２に示したように、Ｄ［１］［１］、［２］［１］、［３］［１］・・・には音高データが記憶され、［１］［２］、［２］［２］、［３］［２］・・・には発音タイミングを示すクロックタイムが記憶され、［１］［３］、［２］［３］、［３］［３］・・・には音長を示すゲートタイムが格納されることとなる。また、ＳＴＡＲＴ／ＳＴＯＰ  ＳＷが操作されて録音モードの状態でストップとなった際には、前述の図６におけるＳＤ１３で、演奏用メモリ６のその時点のポインタｎの値で指定されるアドレスに［ｎ］［１］に、「ＥＮＤ」が書き込まれて、録音が終了することになる。
【００３８】
図３のメインフローにおける再生処理（ＳＡ４）は、図１６に示すフローに従って行われる。先ずＳＴＦがセットされているか否かを判別し（ＳＭ１）、ＳＴＦ＝０であってストップの状態にあれば、即時にメインフローに戻る。また、ＳＴＦ＝１であってスタートの状態になると、ＲＥＣＦがセットされているか否かを判別し（ＳＭ２）、ＲＥＣＦ＝１であって録音モードが設定されている場合にも、即時にメインフローに戻る。しかし、ＲＥＣＦ＝０であって再生モードの状態でスタートした場合には、前述した図６のＳＤ３においてスタート時点でリセットしたタイマＴの値が、同図のＳＤ７でタイマレジスタＴＭにストアした時刻情報の示す時刻に到達したか否か、つまり発音タイミングとなったか否かを判別する（ＳＭ３）。そして、Ｔ＝ＴＭとなって、タイマＴの値がＴＭの時刻情報が示す時刻に到達したならば、演奏用メモリ６のポインタｎの値で指定されるアドレスＤ［ｎ］［１］から、データを読み出してバッファＰ２にストアする（ＳＭ４）。
【００３９】
次に、この読み出したデータが「ＥＮＤ」であるか否かを識別する（ＳＭ５）。この識別の結果、読み出した情報が、「ＥＮＤ」ではなく音高データであった場合には、ＯＮＦをセットした後（ＳＭ６）、ポインタｎの値で指定されるアドレスＤ［ｎ］［３］から、ゲートタイムを読み出してカウンタＣＴにセットする（ＳＭ７）。ここで、前述した図４のタイマインタラプトにおいては、ＯＮＦ＝１かつＲＥＣＦ＝０の場合には、ＳＢ６でＣＴがデクリメントされることから、この再生処理のＳＭ７でゲートタイムがセットされたＣＴは一定時間隔で減少して行く。
【００４０】
また、ＳＭ３での判別の結果、Ｔ≠ＴＭであって発音タイミングでない場合には、ＳＭ３からＳＭ８に進み、前述のようにがデクリメントされているＣＴの値が“０”となったか否かを判別する（ＳＭ８）。この判別の結果、ＣＴ≠であれば、今発音中の楽音はその発音時間長を未だ経過してはおらず、この場合にはメインフローにリターンする。また、当該楽音がゲートタイムが示す発音時間長をもって発音されることにより、ＣＴ＝０となると、ＳＭ８からＳＭ９に進み、発音を指示するＯＮＦをリセットした後、ポインタｎをインクリメントする（ＳＭ１０）。引き続き、このインクリメントしたポインタｎの値で指定される、演奏用メモリ６のアドレスＤ［ｎ］［２］から次の発音タイミングを示すクロックタイムを読み出して、ＴＭにセットする（ＳＭ１１）。
【００４１】
つまり、ＣＴにセットされる発音時間長が経過する毎に、次の発音タイミングであるクロックタイムがＴＭにセットされ、このＴＭにセットされた時間に到達する毎に、ＳＭ４で当該次の音高データがバッファＰ２にストアされ、これにより、演奏用メモリ６からの演奏情報の読み出しが進行して行く。そして、演奏用メモリ６から全ての演奏データが読み出されてた後、最終データの「ＥＮＤ」が読み出されると、ＳＭ５からＳＭ１２に進み、ＳＴＦをリセットした後、不要となったタイマインタラプトを禁止して（ＳＭ１３）、メインフローに戻る。
【００４２】
また、前記発音処理（ＳＡ５）においては、図１７に示すように、鍵盤発音処理（ＳＮ１）と、自動演奏処理（ＳＮ２）、及び警告音発音処理（ＳＮ３）とを実行する。鍵盤発音処理（ＳＮ１）は、図１８に示すフローに従って行われ、バッファＰ１の音高データを音源７に供給する（ＳＯ１）。引き続き、ＯＮＦがセットされているか否かを判別し（ＳＯ２）、セットされている場合には発音指令を（ＳＯ３）、リセットされている場合には消音指令を（ＳＯ４）、各々音源７に送出する。すなわち、図９の鍵盤処理で前述したように、鍵盤２での操作があり、それが押鍵（ＯＮ）である場合には、操作鍵に対応する音高データがバッファＰ１にストアされるとともに（ＳＬ２）、ＯＮＦがセットされ（ＳＬ５）、離鍵（ＯＦＦ）である場合には、ＯＮＦがリセットされる（ＳＬ７）。
【００４３】
そこで、ＳＯ１では、このバッファＰ１にストアされている音高データを音源７へ供給し、次のＳＯ２ではＯＮＦがセットされているか否かを判別する。そして、この判別の結果、ＯＮＦがセットされていた場合には、音源７に発音指令を送出する（ＳＯ３）。これにより、音源７は供給された音高データに基づき楽音波形の生成を開始する。この生成された楽音波形がアンプ及びスピーカ等で構成される発音回路８に与えられることにより、該発音回路８からは操作鍵に対応する音高の楽音が発生し始める。
【００４４】
また、ＳＯ２での判別の結果、ＯＮＦがリセットされていた場合には、音源７に消音指令を送出する（ＳＯ４）。これにより、音源７は供給された音高データに対応する楽音波形を急速に減衰させる。この楽音波形の急速な減衰に伴って、発音回路８から発生していた操作鍵に対応する音高の楽音が消音する。つまり、前述した図１５の鍵盤処理とこの図１８に示した鍵盤発音処理とが、メインフローのＳＡ２〜ＳＡ６のループ内で繰り返し実行されることにより、押鍵に伴って操作鍵に対応する音高の楽音が発生し、離鍵に伴って操作鍵に対応する音高の楽音が消音され、これにより、鍵盤２での操作による演奏が可能となる。
【００４５】
他方、自動演奏発音処理（ＳＮ２）は、図１９に示すフローに従って行われ、バッファＰ２の音高データを音源７に供給する（ＳＰ１）。すなわち、図１６の再生処理で前述したように、メインフローのＳＡ２〜ＳＡ６のループが１回実行される都度、順次音高データがバッファＰ２にストアされて行く（ＳＭ４）。そこで、ＳＰ１では、このバッファＰ２にストアされている音高データを音源７へ供給するとともに、次のＳＰ２ではＯＮＦがセットされているか否かを判別する。そして、この判別の結果、ＯＮＦ＝１であった場合には、音源７に発音指令を送出する（ＳＰ３）。これにより、音源７は供給された音高データに基づき楽音波形の生成を開始し、発音回路８からは音高データに対応する音高の楽音が発生し始める。
【００４６】
また、ＳＰ２での判別の結果、ＯＮＦ＝０であった場合には、音源７に消音指令を送出する（ＳＰ４）。これにより、音源７は供給された音高データに対応する楽音波形を急速に減衰させる。この楽音波形の急速な減衰に伴って、発音回路８から発生していた音高データに対応する音高の楽音が消音する。よって、この自動演奏発音処理の発音指令（ＳＰ３）と消音指令（ＳＰ４）とが、メインフローのＳＡ２〜ＳＡ６のループが繰り返される都度、ＳＡ５の発音処理で実行されることにより、自動演奏が進行する。このとき、前述した図１３及び図１４に示したテンキー処理等が済んでいれば、前述のようにしてアレンジされた音高データが、アレンジされたタイミングで順次バッファＰ２にストアされ、発音及び消音が実行される。なお、前記テンキー処理等によるアレンジがなされていない場合には、録音時に演奏用メモリ６に記憶された演奏情報が示すクロックタムが示すタイミングで順次読み出され、これにより録音時の演奏が自動演奏により再現される。
【００４７】
前記警告音発音処理（ＡＮ３）は、図２０に示すフローに従って行われ、先ず警告音フラグＫＦがセットされているか否かを判別する（ＳＱ１）。この警告音フラグＫＦは、前述した図９の音符選択ＳＷ処理、図１０の属性選択ＳＷ処理、図１１の属性値変更ＳＷ処理、図１２の属性値変更方法ＳＷ処理の各々において、誤った操作がなされた際に、ＯＮＦと共にセットされている。そして、ＳＱ１での判別の結果、誤った操作がなされてＫＦ＝１となっているならば、このときＳＧ１１、ＳＨ１０、ＳＩ１０、ＳＪ１０のいずれかでバッファＰ３にストアされている警告音の音高データを音源７へ供給する（ＳＱ２）。
【００４８】
次に、ＯＮＦがセットされているか否かを判別し（ＳＱ３）、セットされているならばカウンタＣＴが“０”となったか否かを判別する（ＳＱ４）。このＣＴは、誤った操作があった時点で、ＳＧ１２、ＳＨ１１、ＳＩ１１、ＳＪ１１のいずれかで所定値がセットされた後、図４のタイマインタラプトのＳＢ６の処理により、デクリメントされる。そして、ＣＴ≠０であって、ＣＴにセットされた所定値に対応する時間が経過していないならば、発音指令を音源７に送出する（ＳＱ１０）。つまり、ＣＴ＝０となるまで、ＳＱ１０で発音指令が送出される続けることにより、ＳＱ２でセットされた音高データで生成される警告音が発音回路８から発生し続ける。このとき、前述した図１２のＳＪ９で音源の状態をＡに退避させて初期状態にした後、この図２０のＳＱ１０で別途発音指令を行うことから、従前の音源の状態に左右されることなく、確実に警告音を発生させることができる。
【００４９】
そして、この警告音がＣＴにセットされている時間継続してＣＴ＝０になると、音源７に消音指令を送出し（ＳＱ５）、これにより音源回路８から発生していた警告音が消音する。しかる後に、ＯＮＦをリセットするとともに（ＳＱ６）、ＫＦをリセットした後（ＳＱ７）、音源７の状態を変数Ａの状態にする（ＳＱ８）。すなわち、誤った操作がなされてＫＦをセットした際には、前述したＳＧ１０、ＳＨ９、ＳＩ９、ＳＪ９で、このときの音源７の状態を所定のバッファＡに退避させてある。したがって、警告音の発生が完了した際には、バッファＡに退避させておいた変数の状態に音源７を復帰させ、これにより音源７を警告音を発生させる前の状態に戻す。しかる後に、警告音の発生時間をカウントすべく各ステップＳＧ１３、ＳＨ１２、ＳＩ１２、ＳＪ１２で解除したタイマインタラプトは不要となったことからこれを禁止し（ＳＱ９）、図１７のフローを介して、メインフローに戻る。
【００５０】
【発明の効果】
以上説明したように本発明によれば、予め指定した複数の音符情報を同一の属性値変更量情報と属性値変更方法情報とに基づき一括に変更できることから、アレンジを容易かつ短時間で行うことができるとともに、変更内容が統一的となり、演奏情報で構成される楽曲を秩序的にアレンジすることができる。また、属性値変更量は、例えばキー操作子群から数値入力することにより、任意の変更量を容易に入力することができる。
【００５１】
また、さらに、属性値変更方法が加算又は乗算であり、これらのいずれか一方を属性値変更方法情報として入力することにより、加算又は乗算からなる簡易な演算により、演奏情報の編集を行うことができる。また、音符情報が、複数種の属性値情報で構成され、このいずれかを選択する構成により、音符情報を構成する属性値情報毎の変更が可能となり、複数種の属性値情報が、発生する楽音の音高を示す音高データと、発音タイミングを示すタイムクロックデータ、及び発音時間長を示すゲートタイムデータであることにより、音高、発音タイミング、音長の各要素毎に変更が可能となる。さらに、書き換えられた記憶手段から、発音情報を順次読み出して発音を指示する発音指示手段を有する構成により、アレンジされた演奏情報に基づく演奏の再生が可能となる。
【図面の簡単な説明】
【図１】本発明の一実施の形態を適用した電子楽器のブロック構成図である。
【図２】演奏用メモリの記憶内容を示す図である。
【図３】メインフローを示すフローチャートである。
【図４】タイマインタラプトを示すフローチャートである。
【図５】スイッチ処理の内容示すフローチャートである。
【図６】ＳＴＡＲＴ／ＳＴＯＰ処理の内容を示すフローチャートである。
【図７】ＲＥＣ  ＳＷ処理の内容を示すフローチャートである。
【図８】編集ＳＷ処理の内容を示すフローチャートである。
【図９】音符選択ＳＷ処理の内容を示すフローチャートである。
【図１０】属性選択ＳＷ処理の内容を示すフローチャートである。
【図１１】属性値変更ＳＷ処理の内容を示すフローチャートである。
【図１２】属性値変更方法ＳＷ処理の内容を示すフローチャートである。
【図１３】テンキー処理の内容の一部を示すフローチャートである。
【図１４】図１３に続くフローチャートである。
【図１５】鍵盤処理の内容示すフローチャートである。
【図１６】再生処理の内容を示すフローチャートである。
【図１７】発音処理の内容を示すフローチャートである。
【図１８】鍵盤発音処理の内容を示すフローチャートである。
【図１９】自動演奏発音処理の内容を示すフローチャートである。
【図２０】警告音発音処理の内容を示すフローチャートである。
【符号の説明】
１    ＳＷ群
２    鍵盤
３    ＣＰＵ
４    ＲＯＭ
６    演奏用メモリ
７    音源
【図１】
0003567548.tif 000002
【図２】
0003567548.tif 000003
【図３】
0003567548.tif 000004
【図４】
0003567548.tif 000005
【図５】
0003567548.tif 000006
【図６】
0003567548.tif 000007
【図７】
0003567548.tif 000008
【図８】
0003567548.tif 000009
【図９】
0003567548.tif 000010
【図１０】
0003567548.tif 000011
【図１１】
0003567548.tif 000012
【図１２】
0003567548.tif 000013
【図１３】
0003567548.tif 000014
【図１４】
0003567548.tif 000015
【図１５】
0003567548.tif 000016
【図１６】
0003567548.tif 000017
【図１７】
0003567548.tif 000018
【図１８】
0003567548.tif 000019
【図１９】
0003567548.tif 000020
【図２０】
0003567548.tif 000021