JP7332002B2 - 電子楽器、方法及びプログラム - Google Patents

電子楽器、方法及びプログラム Download PDF

Info

Publication number
JP7332002B2
JP7332002B2 JP2022125980A JP2022125980A JP7332002B2 JP 7332002 B2 JP7332002 B2 JP 7332002B2 JP 2022125980 A JP2022125980 A JP 2022125980A JP 2022125980 A JP2022125980 A JP 2022125980A JP 7332002 B2 JP7332002 B2 JP 7332002B2
Authority
JP
Japan
Prior art keywords
event
sounding
performance data
processing
polyphony
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.)
Active
Application number
JP2022125980A
Other languages
English (en)
Other versions
JP2022140812A (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.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
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
Priority claimed from JP2018054604A external-priority patent/JP7124370B2/ja
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2022125980A priority Critical patent/JP7332002B2/ja
Publication of JP2022140812A publication Critical patent/JP2022140812A/ja
Application granted granted Critical
Publication of JP7332002B2 publication Critical patent/JP7332002B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、電子楽器、方法及びプログラムに関する。
電子鍵盤楽器等を用いた自動演奏装置において、波形再生用バッファの容量を増大させずに、キーオン時のレスポンスを良くし、且つ自動演奏に際して楽音情報の音色割当を効率的に行なうための技術が提案されている。(例えば、特許文献1)
前記特許文献に記載された技術も含めて一般に電子楽器においては、ハードウェア回路での性能に対する制約から、同時発音数が有限である。加えて、ミュージックシーケンサや自動伴奏機能を有する自動演奏装置等では、演奏者の鍵盤演奏に比して遙かに多くのノートを含む演奏が可能である。そのため、自動再生する演奏データの状況と演奏者による演奏の状況とによっては、音源の同時発音数が最大に達することも容易に起こり得る。
そして、音源の同時発音数が最大に達している状態から、さらに発音数を増やすような状況となった場合には、増やすことになった発音数分だけ、その時点ですでに発音しているものの中からいずれかを消音させる必要がある。
特開平 6- 27943号公報
しかしながら、音源による発音の一部を消音させる場合、瞬時にその音圧レベルを落とすとクリックノイズが発生してしまう。そのため、再生音上での違和感をなくすべく、当該音圧レベルを一定時間、例えば2~3[ミリ秒]程度をかけて徐々に下げる必要が生じる。したがって、実時間上においては前記消音処理で無視できない時間を要するため、例えば押鍵情報に対するレスポンスが悪化するなど、演奏性や再生される音楽の質が犠牲となるという可能性がある。。
本発明は前記のような実情に鑑みてなされたもので、その目的とするところは、音源の同時発音数が上限に達する状態を事前に把握して、さらなる発音に対処する場合の処理を円滑に実行することが可能な電子楽器、方法及びプログラムを提供することにある。
本発明の一態様の電子楽器は、自動演奏データを読み込んで、前記自動演奏データの発音タイミングを設定された遅延時間が経過するまで遅延させた発音タイミングでいずれかの発音チャンネルより順次発音させるディレイ発音処理と、演奏操作子への操作に対しては、前記設定された遅延時間分遅らせないタイミングでいずれかの発音チャンネルより発音させるリアルタイム発音処理と、読み込んだ前記自動演奏データ及び、前記演奏操作子への操作に応じて取得される操作信号に基づいて、同時発音数を取得する同時発音数取得処理と、取得された前記同時発音数が設定数に達する場合に、発音中のいずれかの発音チャンネルに対する消音処理と、を実行する。
本発明によれば、音源の同時発音数が上限に達する状態を事前に把握して、さらなる発音に対処する場合の処理を円滑に実行することが可能となる。
本発明の一実施形態に係る電子鍵盤楽器の外観構成を示す平面図。 同実施形態に係るハードウェア上の回路構成を示すブロック図。 同実施形態に係るデータ処理上の機能構成を示すブロック図。 同実施形態に係るシーケンサに記録されるシーケンスデータのフォーマット構成を示す図。 同実施形態に係る実際のイベントの発生タイミングとこれに対応するイベントデータの例を示す図。 同実施形態に係るイベント・ディレイ・バッファが取り扱うデータのフォーマット構成を示す図。 同実施形態に係るメインルーチンの処理内容を示すフローチャート。 同実施形態に係るシーケンサ再生時のサブルーチンを示すフローチャート。 同実施形態に係るイベント・ディレイ・バッファでのサブルーチンを示すフローチャート。 同実施形態に係る同時発音数管理部での第1の処理のサブルーチンを示すフローチャート。 同実施形態に係る同時発音数の管理上で使用する重み付けの具体例を示す図。 同実施形態に係る同時発音数管理部での第2の処理のサブルーチンを示すフローチャート。
本発明を、自動伴奏機能を有する電子鍵盤楽器に適用した場合の一実施形態について、以下に図面を参照して詳細に説明する。
図1は、この電子鍵盤楽器10の外観構成を示す平面図である。同図において、電子鍵盤楽器10は、薄板状筐体の上面に、発生すべき楽音の音高を指定する、演奏操作子としての複数の鍵からなる鍵盤11と、楽音の音色を選択するための音色選択ボタン部(TONE)12と、自動伴奏機能に関する各種選択設定のためのシーケンサ操作ボタン部(SEQUENCER)13と、ピッチベンドやトレモロ、ビブラート等の各種モジュレーション(演奏効果)を付加するベンダ/モジュレーションホイール14と、各種設定情報等を表示する液晶表示部15と、演奏により生成された楽音を放音する左右のスピーカ16,16等とを備える。
前記音色選択ボタン部12は、例えばピアノや電子ピアノ、オルガン、電気ギター1,2、アコースティックギター、サクソフォン、ストリングス、シンセサイザ1,2、クラリネット、ビブラフォン、アコーディオン、ベース、トランペット、クワイヤ等の選択ボタンを有する。
前記シーケンサ操作ボタン部13は、例えばトラックを選択する「トラック1」~「トラック4」、ソングメモリを選択する「ソング1」~「ソング4」、一時停止(PAUSE)、再生(PLAY)、録音(REC)、曲頭戻し、巻き戻し、早送り、テンポダウン(TEMPO DOWN)、テンポアップ(TEMPO UP)等の選択ボタンを有する。
図2は、ハードウェア上の回路構成を示すブロック図である。電子鍵盤楽器10では、CPU(中央演算処理装置)21、RAM(ランダムアクセスメモリ)22、ROM(リードオンリメモリ)23、音源LSI(大規模集積回路)24、入出力(I/O)コントローラ25が、それぞれバスBを介して接続される。
CPU21は、機器全体の処理を行なうメインプロセッサである。RAM22は、例えばSRAM(Static RAM)で構成され、CPU21のワークメモリとして機能する。ROM23は、CPU21の動作プログラムや該動作プログラムで使用する各種固定データ等を格納していると共に、この電子鍵盤楽器10に装着されるメモリカードを含み、当該メモリカードには、演奏データを記録させ、あるいは記録されている自動演奏データを読み出して再生させることが可能であるものとする。
音源LSI24は、多数の楽音波形データを記憶した波形ROM26が接続され、この波形ROM26に記憶された楽音波形データを用いてデジタル楽音波形データを生成し、D/Aコンバータ27へ出力する。
D/Aコンバータ27は、デジタルの楽音波形データをアナログの楽音波形信号に変換する。変換により得られたアナログの楽音波形信号は、さらにアンプ28により増幅された後に、前記スピーカ16,16で可聴周波数範囲の楽音として拡声出力されるか、または前記図1では示さなかった出力端子より出力される。
前記入出力コントローラ25は、前記バスBと周辺接続されるデバイスとのインタフェイスを行なうもので、LCDコントローラ29、キースキャナ30、A/Dコンバータ31を接続する。
LCDコントローラ29は、前記図1の液晶表示部(LCD)15を接続し、入出力コントローラ25、バスBを介してCPU21の制御の下に、与えられる各種動作状態等を示す情報を液晶表示部15により表示出力させる。
キースキャナ30は、前記鍵盤11や、前記音色選択ボタン部12及びシーケンサ操作ボタン部13を含むスイッチパネルでのキー操作状態を走査して、その走査結果を入出力コントローラ25を介してCPU21へ通知する。
A/Dコンバータ31は、前記ベンダ/モジュレーションホイール14や、この電子鍵盤楽器10の外付けオプション装備となるダンパペダル等の各操作位置を示すアナログ信号を受付け、当該操作量をデジタルデータに変換した上で、前記CPU21へ通知する。
次に図3により、CPU21の制御の下に実行される処理上の機能構成を示すブロック図についても説明しておく。
同図において、この電子鍵盤楽器10の演奏者による、前記音色選択ボタン部12での音色選択操作に対応した操作信号、鍵盤11での操作に伴うノート情報のオン/オフ信号、及び、ベンダ/モジュレーションホイール14やオプションとなるダンパペダルでの操作による操作信号が、シーケンサ42、第1イベントバッファ45、及び第2イベントバッファ46に入力される。
また前記シーケンサ42には、シーケンサ操作ボタン部13での操作信号と、ソングメモリ41からの自動演奏データとが入力される。ソングメモリ41は、複数曲、例えば4曲分の自動演奏データを記憶しており、選択した1曲分の自動演奏データをシーケンサ42に読み出す。
シーケンサ42は、図示するように4トラック(「Track1」~「Track4」)の構成となっており、前記ソングメモリ41から選択して読み出される1曲の自動演奏データを用いて演奏や録音を行なうことができる。
録音時には、いずれかの録音対象トラックを選択して演奏者の演奏を記録することが可能となる。また再生時には、4つのトラックを同期させて、出力する演奏データをミックスした状態で出力する。
このシーケンサ42から出力される最大4トラック分の演奏データが、イベント・ディレイ・バッファ44、及び前記第2イベントバッファ46へ送出される。この電子鍵盤楽器10を操作する演奏者は、シーケンサ操作ボタン部13において必要なボタンを操作することにより、それらの動作を選択して指示する。
イベント・ディレイ・バッファ44は、前記図2のRAM22のワーク領域に形成されたリングバッファで構成され、イベント・タイム・ジェネレータ43から与えられる現在時刻情報Tに基づいて、シーケンサ42から送られてきた演奏データを予め設定された一定時間、例えば50[ミリ秒]だけ遅延した後に前記第1イベントバッファ45へ送出する。そのため、イベント・ディレイ・バッファ44は、前記一定時間に発生し得るイベントを保持できるだけの容量が確保されている。
前記第2イベントバッファ46は、前記図2のRAM22のワーク領域に形成され、前記鍵盤11、音色選択ボタン部12、ベンダ/モジュレーションホイール14等から送られてくる操作信号と、前記シーケンサ42から送られてくる演奏データとを保持し、その保持内容を同時発音数管理部47へ送出する。
同時発音数管理部47は、後述する第1及び第2の同時発音数管理処理により、同時発音数をこの電子鍵盤楽器10の最大同時発音数に制限した演奏データを前記第1イベントバッファ45へ送出する。
第1イベントバッファ45は、前記図2のRAM22のワーク領域に形成され、前記鍵盤11、音色選択ボタン部12、ベンダ/モジュレーションホイール14等から送られてくる操作信号と、前記イベント・ディレイ・バッファ44で遅延された演奏データと、前記同時発音数管理部47で最大同時発音数に制限された演奏データとを保持し、その保持内容を音源ドライバ48へ送出する。
音源ドライバ48は、前記図2の音源LSI24をコントロールするインタフェイスであり、第1イベントバッファ45から与えられる入力に基づいて、最大同時発音数の範囲内でデジタルの楽音データを発生させる。
次に前記実施形態の動作について説明する。
図4は、前記シーケンサ42に記録されるシーケンスデータのフォーマットを示す図である。同図に示すように、イベントデータ長L(LENGTH)、イベント内容E(EVENT)、及び次のイベントまでの時間間隔を示すインターバルI(INTERVAL)の3つのフィールドを1組のデータとして、各トラック毎にこれらのデータの複数の組がそれぞれ羅列される。
イベントデータ長Lのフィールドは、続くイベント内容Eの長さを定義するもので、8ビットの固定語長で「0」~「255」の値域となるため、実際のデータ長を「-1」した値をとる。
イベント内容Eのフィールドは、1バイト乃至256バイトの可変となる語長をとり、16進数で先頭の2桁が「00H」~「7FH」で始まる場合はコントロールイベントである一方、「90H」~「FFH」で始まる場合はMIDI(Musical Instruments Digital Interface)イベントとなる。
前記コントロールイベントとしては、例えばトラックの先頭やインターバルタイムが655535足りないときにダミーイベントとして使用する「NOP(Non OPeration)」イベント、トラックの最後に配置する「EOT(End Of Track)」イベント、テンポを設定するための「TEMPO」イベント等が存在する。
前記「TEMPO」イベントは、トラック1のみでしか配置、認識することができず、トラック1の記録(録音)中にシーケンサ操作ボタン部13のテンポボタンを操作することで記録される。前記「TEMPO」イベントでは、分解能を例えば0.1[BPM]単位で設定する。
インターバルIのフィールドは、16ビットの固定長で「0」~「65535」の値域となり、1拍を480分割したTickという単位で次のイベントまでの時間間隔を表現する。もし16ビットの最大値である「65535」Tick以上の時間間隔が発生した場合には、コントロールイベントである前記「NOP」イベントを使ってダミーとなるイベントを必要なだけ繋げることで、長時間を表現する。
図5は、実際のイベントの発生タイミング(図5(A))と、これに対応するイベントデータ(図5(B))の例を示す図である。
図5(A)に示すように、開始時のTEMPOイベント、押鍵(NOTE ON)イベント、離鍵(NOTE OFF)イベント、‥‥、ピッチベンドイベントを経てトラック終了のEOTイベントとなる一連の流れを例示している。
同図中、Kはノート番号(音階)、Vは音の強さ、Pbはピッチベンド、T1~Tnはインターバルの時間間隔を示している。
次に図6により、前記イベント・ディレイ・バッファ44で取り扱うデータのフォーマット構成について説明する。上述した如くイベント・ディレイ・バッファ44は、演奏データを一定時間だけ遅延させるための回路である。
ここで取扱うデータのフォーマット構成は、前記図4に示したシーケンスデータのフォーマット構成に比して、インターバルIのフィールドを廃し、代わって先頭にタイムTのフィールドを設けて、タイムT、イベントデータ長L、及びイベント内容Eの3つのフィールドを1組のデータとして、複数のデータの組を羅列する構成となる。
タイムTのフィールドは、32ビットの固定語長で「0H」~「FFFFFFFFH」の値域となり、当該イベントが処理されるべき時刻を定義する。
続くイベントデータ長Lのフィールド、及びイベント内容Eのフィールドは、前記図4で示したシーケンサのイベントデータと同様の内容となる。
自動演奏用の演奏データを、このイベント・ディレイ・バッファ44で一定時間だけ遅延させる。そのため、前記音源ドライバ48においては、遅延させた遅延演奏データを複数の発音チャンネル(波形データ発生装置又はオシレータともいう)にてそれぞれ発振させることで発音を行ない、遅延演奏データを発振中の複数の発音チャンネルのなかのいずれかの発音チャンネルに対して、遅延させる前の演奏データを元に消音処理を行なうので、消音処理が必要と予想された演奏データに対する消音処理を発音の直前に実行する必要がなくなり、クリックノイズが発生するような事態を回避できるものである。
前記遅延時間は、上述した如く例えば50[ミリ秒]に設定するもので、シーケンサ操作ボタン部13でのボタン操作に対応して遅延を行なうもので、実際に演奏される楽曲音声に合わせて、この電子鍵盤楽器10の使用者が前記鍵盤11を用いて行なう演奏には何ら影響しない。
イベント・タイム・ジェネレータ43は、前記遅延時間の基準となる計時回路であり、最大値FFFFFFFFHの次に0Hに戻る32ビットのフリーランニングタイマで構成される。イベント・タイム・ジェネレータ43は、1[ミリ秒]毎に1づつ計時値をインクリメントする。
イベント・ディレイ・バッファ44は、前記Tickがテンポに依存するので遅延時間の基準とはなり得ないため、上述した如くイベント・タイム・ジェネレータ43の計時値に基づいて、保持内容を遅延して出力する。
イベント・ディレイ・バッファ44では、シーケンサ42の出力する演奏データが入力された際、イベント・タイム・ジェネレータ43の計時する時刻Tを読み取り、その値に遅延時間に相当する50を加算した時刻情報を当該演奏データに付加しておく。
イベント・ディレイ・バッファ44は、読み出しポイントに待機しているイベントに付加されている時刻情報が、イベント・タイム・ジェネレータ43の計時値と一致するか、または経過した時点で当該イベントを読み出して第1イベントバッファ45へ送出する。
以下、前記同時発音数管理部47における基本的な動作を説明する。
本電子鍵盤楽器10での最大同時発音数を「256」とする。この同時発音数は、電子鍵盤楽器10の演奏者による前記鍵盤11を用いた演奏と、遅延前のシーケンサ42での演奏とを合算したものから判断して予想を行なう。
これらの演奏データは、第2イベントバッファ46によってミックスされて、同時発音数管理部47に入力される。同時発音数管理部47では、演奏データを音源ドライバ48に送出する前の段階で、各演奏ノートと実際の発音チャンネルへの割り当てシミュレーションを行ない、その時点での同時発音数を算出する。
算出した同時発音数が最大値256を超えている場合、同時発音数管理部47は音源ドライバ48で発音中のチャンネルのいずれかを消音させるために「消音イベント」を発生させ、第1イベントバッファ45にイベントデータを入力させる。
この消音イベントは、MIDI規格では定義されていないが、通常は00H~7FHの範囲であるノートオフメッセージのベロシティ値をFFHとして送る。
例えば、「80 3C FF」(H)とすることで、C4(88鍵盤における中央のド(C))で発音しているノートを従来の離鍵よりも速い速度でダンプ(無段階に減衰)させることができる。
本実施形態では、減衰時にクリックノイズが発生するのを避けるために、最大振幅から一定時間、例えば2[ミリ秒]の時間をかけて無段階に減衰させるものとする。
以下、前記CPU21が実行する動作プログラムについて説明する。
図7は、CPU21が実行するメインルーチンの処理内容を示すフローチャートである。電子鍵盤楽器10の電源を投入して本メインルーチンを開始し、CPU21はまず回路内の各部を初期化する(ステップS101)。この初期化に関する処理は、詳細を後述する同時発音数管理機能で使用するシミュレート用の発音チャンネルの情報などの初期化も含む。
初期化完了後にCPU21は、鍵盤11等での押鍵、離鍵操作に対する鍵盤処理や音色選択ボタン部12、シーケンサ操作ボタン部13でのボタン操作に対するスイッチ処理を含むイベント処理(ステップS102)、シーケンサ42での演奏データの再生や停止中を行なうシーケンサ処理(ステップS103)、イベント・ディレイ・バッファ44でのイベントデータに対するディレイ処理や同時発音数管理部47で定期的に実行する処理などを含む周期処理(ステップS104)を順次繰返して実行する。
前記ステップS102におけるイベント処理中、鍵盤11での押鍵イベントがあった場合、CPU21は押鍵された鍵盤の位置に応じたノート番号と押鍵時の強さに応じたベロシティとを含む鍵盤発音イベントを生成し、生成した発音イベントを第2イベントバッファ46及び第1イベントバッファ45に送信する。
同様にイベント処理中、鍵盤11での離鍵イベントがあった場合、CPU21は離鍵された鍵盤の位置に応じたノート番号と離鍵時の強さに応じたベロシティとを含む鍵盤消音イベントを生成し、生成した消音イベントを第2イベントバッファ46及び第1イベントバッファ45に送信する。
第1イベントバッファ45にイベントが送信された場合、音源ドライバ48は第1イベントバッファ45に保持されているイベントを取得した上で、音源LSI24による発音や消音の処理を実行する。
図8は、前記ステップS103のシーケンサ処理で実行される、シーケンサ再生時のサブルーチンのフローチャートである。電子鍵盤楽器10の演奏者がシーケンサ操作ボタン部13の再生(PLAY)を操作した場合、CPU21によりこの図8の処理が起動される。
処理当初には、まず再生開始からのTickを更新した上で(ステップS201)、更新したTickで処理するイベントがあるか否かを判断する(ステップS202)。
処理するイベントがあると判断した場合(ステップS202のYes)、まず第2イベントバッファ46に送信を行ない(ステップS203)、次にイベント・タイム・ジェネレータ43から現在の時刻情報Tを取得する(ステップS204)。
CPU21は、この取得した時刻情報Tに、一定の遅延時間50[ミリ秒]を加算した時刻をイベントの時刻TIMEとして当該イベントデータに付加した上で(ステップS205)、前記のようにイベント・ディレイ・バッファ44に送信して保持させる(ステップS206)。
その後、前記ステップS202からの処理に戻り、同一のTickで他に処理すべきイベントがあれば、同様の処理を繰返し実行する。
前記ステップS202において、イベントがない、もしくは同一のTickで処理すべきイベントを完了したと判断した場合(ステップS202のNo)、CPU21はこの図8の処理を終了する。
図9は、前記図7のステップS104において、シーケンサ42から送信されてきたイベントデータを保持するイベント・ディレイ・バッファ44で定期的に実行する処理を示すサブルーチンのフローチャートである。
CPU21は、イベント・ディレイ・バッファ44により、まずイベント・タイム・ジェネレータ43から現在の時刻情報Tを取得させる(ステップS301)。
次にCPU21は、イベント・ディレイ・バッファ44の読み出し用のリードポインタに示されるイベントデータに付加されている時間情報TIMEを取得し、取得した時刻情報TIMEが、その直前にイベント・タイム・ジェネレータ43から取得した現在の時刻情報Tと等しいか、あるいは超えているか否かにより、その時点のタイミングで処理すべきイベントデータがあるか否かを判断する(ステップS302)。
ここで取得した時刻情報TIMEが、その直前に取得した現在の時刻情報Tと等しいか、あるいは超えていると判断した場合(ステップS302のYes)、CPU21は、該当するイベントデータをイベント・ディレイ・バッファ44から読み出して第1イベントバッファ45へ送信させる(ステップS303)。
次にCPU21は、前記リードポインタの値を1イベント分更新設定した上で(ステップS304)、再び前記ステップS302からの処理に戻り、まだこのタイミングで他に処理すべきイベントデータがあれば、同様に読み出して第1イベントバッファ45へ送信させる。
そして、前記ステップS302において、イベント・ディレイ・バッファ44の読み出し用のリードポインタに示されるイベントデータに付加されている時間情報TIMEが現在の時刻情報Tに達していないと判断した場合、もしくはイベント・ディレイ・バッファ44から読み出すべきイベントデータがないと判断した場合に(ステップS302のNo)、この図9の処理を終了する。
次に、CPU21が同時発音数管理部47により処理させる、演奏データによる同時発音数の管理処理について説明する。
図10は、同時発音数管理部47にイベントデータが送信されてきた際に、前記図7のステップS104において、CPU21の制御により同時発音数管理部47で処理される第1の同時発音数管理機能の処理内容を示すサブルーチンのフローチャートである。
処理当初にCPU21は、第2イベントバッファ46に送信されてきたイベントデータを取得して(ステップS401)、取得したイベントデータが発音イベントであるか否かを判断する(ステップS402)。
取得したイベントデータが発音イベントであると判断した場合(ステップS402のYes)、CPU21はまず、発音チャンネル比較用の重み付け変数「Weight_Cmp」を初期化して、予め設定されている閾値「1000」を設定する(ステップS403)。
その後、CPU21はチャンネル番号を示す変換数iに初期値「1」を設定した上で(ステップS404)、i番目の発音チャンネルの状態から、使用中であるか否かを判断する(ステップS405)。
ここでi番目の発音チャンネルが使用中であると判断した場合(ステップS405のYes)、CPU21は次にそのi番目の発音チャンネルに設定されている重み付けの値「Weight」を、具体的にはワークメモリであるRAM22から読み出して取得する(ステップS406)。
図11は、このとき各チャンネル毎に重み付けの値「Weight」を算出する基準となる、パート情報、ノート番号、ベロシティ、及び発音状態それぞれについてのポイントを例示するものである。
図11(A)に示すパート情報においては、鍵盤11での演奏及びシーケンサ42でのトラック1をより優先するような重み付けとなっている。
図11(B)に示すノート番号においては、音域「A0」~「B2」のノート番号「21」~「47」を最も優先するような重み付けとなっている。
図11(C)に示すベロシティにおいては、値が大きく、音の強さが高い程優先するような重み付けとなっている。
図11(D)に示す発音状態においては、「ノートオン中」が50ポイントであるのに対して、「リリース中」が0ポイントとなるような重み付けとなっている。
以上、パート情報、ノート番号、ベロシティ、及び発音状態の各ポイントの合計値が重み付けの値「Weight」としてチャンネル毎に予め設定されている。
CPU21は、取得したi番目の発音チャンネルの重み付けの値「Weight」と前記比較用の重み付け変数「Weight_Cmp」とを比較し、変数「Weight_Cmp」がi番目の発音チャンネルの重み付けの値「Weight」より大きいか否かを判断する(ステップS407)。
前記変数「Weight_Cmp」がi番目の発音チャンネルの重み付けの値「Weight」より大きいと判断した場合(ステップS407のYes)、CPU21はあらためて前記変数「Weight_Cmp」を再設定するべく、その時点のi番目の発音チャンネルの重み付けの値「Weight」をそのまま前記変数「Weight_Cmp」として設定する(ステップS408)。
その後、CPU21はi番目の発音チャンネルをワークメモリであるRAM22に一旦保存する(ステップS409)。さらにCPU21は、チャンネル番号を示す変数iを「+1」更新設定した上で(ステップS410)、その更新設定後の変数iが上限値「256」を超えた「257」以上となっているか否かにより、必要な全チャンネル分の処理を終えたか否かを判断する(ステップS411)。
更新設定後の変数iが「257」未満であり、必要な全チャンネル分の処理をまだ終えていないと判断した場合(ステップS411のNo)、CPU21は更新設定後の変数iに基づいて前記ステップS405からの処理に戻る。
また前記ステップS407において、前記変数「Weight_Cmp」がi番目の発音チャンネルの重み付けの値「Weight」以下であると判断した場合(ステップS407のNo)、CPU21は、前記ステップS408,S409の処理を省略する。
こうしてCPU21は、変数iで示されるチャンネルが使用中であれば、それぞれその重み付け「Weight」に基づき、必要に応じて適宜変数「Weight_Cmp」を書換えながら、最も重み付け「Weight」のポイントが小さいチャンネルの情報をRAM22に更新しながら保存していく。
256チャンネル分の発音チャンネルについて前記処理を繰返し実行した後、変数iが「257」以上となり、必要な全チャンネル分の処理を終えたと判断した場合(ステップS411のYes)、未使用のチャンネルが1つもなかったこととなる。CPU21は、その時点でRAM22に保存している、256チャンネル中で最も重み付け「Weight」のポイントが小さいと判断した発音チャンネルに基づいて、設定されているパート情報、ノート番号を用い、ベロシティ値を0xFFHとする消音イベントを生成させ(ステップS412)、生成した消音イベントを第1イベントバッファ45へ送信させる(ステップS413)。
その後にCPU21は、その時点のi番目のチャンネル番号の発音チャンネルに発音イベントを割り当てた上で(ステップS414)、前記図11で示したようにパート情報とノート番号、ベロシティ、ノートオン中状態からそれぞれ対応する重み付けポイントを取得し、それらの合計値を重み付けの値「Weight」として当該チャンネルに設定し(ステップS415)、以上で図10の第1の同時発音数管理機能の処理を終了する。
なお前記ステップS405において、その時点のi番目の発音チャンネルの状態から、使用中ではなく未使用の状態であると判断した場合(ステップS405のNo)、CPU21は直接前記ステップS414からの処理に進んで、その未使用の状態の発音チャンネルiに発音イベントを割り当てる。
また前記ステップS402において、第2イベントバッファ46に送信されてきたイベントデータが発音イベントではなかったと判断した場合(ステップS402のNo)、次にCPU21は、そのイベントデータが消音イベントであるか否かを判断する(ステップS416)。
イベントデータが消音イベントでもないと判断した場合(ステップS416のNo)、CPU21はそのまま図10の第1の同時発音数管理機能の処理を終了する。
さらに前記ステップS416において、イベントデータが消音イベントであると判断した場合(ステップS416のYes)、パート情報及びノート番号から、その時点で割り当てられている発音チャンネルの重み付けを、前記図11(D)で示した如く、発音状態を「ノートオン中」の50ポイントから、「リリース」の0ポイントとなるように50ポイント減算するべく更新設定する(ステップS417)。
続いてCPU21は、当該発音チャンネルに設定されている音色のリリースタイム情報から、この発音チャンネルの消音予想時間情報を取得する(ステップS418)。この消音予想時間情報としては、音色の内容によって異なるものの、およそ前記ダンプ(減衰)時間に相当する、2[ミリ秒]に前後する情報が取得されるものとする。
そして、割り当てられている発音チャンネルに、直前の前記ステップS417で更新した重み付けと、前記取得した消音予測時間情報とを設定し(ステップS419)、以上で図10の第1の同時発音数管理機能の処理を終了する。
図12は、前記図7のステップS104の周期処理において、CPU21の制御により同時発音数管理部47で処理される第2の同時発音数管理機能の処理内容を示すサブルーチンのフローチャートである。
処理当初にCPU21は、チャンネル番号を示す変換数iに初期値「1」を設定する(ステップS501)。
その後、CPU21は、当該i番目の発音チャンネルの状態から、使用中であること(ステップS502)、且つそのi番目の発音チャンネルに設定されている発音状態が「リリース中」であること(ステップS503)、且つそのリリース中で設定されている消音予測時間に到達あるいは経過していること(ステップS504)の3条件が重ねて成立するか否かを判断する。
ここで、これら3条件が重ねて成立すると判断した場合にのみ(ステップS502~S504のYes)、CPU21は当該i番目の発音チャネルを未使用の状態に設定する(ステップS506)。
また前記ステップS502において、i番目の発音チャンネルがすでに未使用であると判断した場合(ステップS502のNo)、及び前記ステップS503において、i番目の発音チャンネルに設定されている発音状態が「リリース中」ではなく「ノートオン中」であると判断した場合(ステップS503のNo)、及び前記ステップS504において、リリース中で設定されている消音予測時間に到達も経過もしておらず、未到達であると判断した場合(ステップS504のNo)、CPU21は前記ステップS505における当該i番目の発音チャンネルを未使用の状態に設定する処理を実行しない。
その後にCPU21は、チャンネル番号を示す変数iを「+1」更新設定した上で(ステップS506)、その更新設定後の変数iが上限値「256」を超えた「257」以上となっているか否かにより、必要な全チャンネル分の処理を終えたか否かを判断する(ステップS507)。
更新設定後の変数iが「257」未満であり、必要な全チャンネル分の処理をまだ終えていないと判断した場合(ステップS506のNo)、CPU21は更新設定後の変数iに基づいて前記ステップS502からの処理に戻る。
こうしてCPU21は、ステップS502~S507の処理を全256チャンネルの発音チャンネル分だけ繰返して実行し、未使用であると判断したチャンネルに対してはその設定を実行していく。
そして、全256チャンネルの発音チャンネル分の処理が終了したと判断すると(ステップS507のYes)、CPU21は以上でこの図12の第2の同時発音数管理機能の処理を終了する。
したがって、同時発音数管理部47により使用中のチャンネルであっても、前記図10の処理によりリリース中であり、かつ設定された消音予測時間に到達あるいは経過したチャンネルは、CPU21により即時未使用のチャンネルとして設定されることとなる。
したがって、同時発音数がその上限を超えることが予想されていた場合でも、前記遅延時間(例えば50[ミリ秒])に比して、前記ダンプ(減衰)させる消音予測時間(例えば2[ミリ秒])との差に応じた分だけ、前記図10、図12による処理を実行する時間的な余裕が与えられる。
以上詳述した如く本実施形態によれば、音源の同時発音数が上限に達する状態を事前に把握して、さらなる発音に対処する場合の処理を円滑に実行することが可能となる。
また前記実施形態では、前記消音イベントでダンプ(減衰)させる時間を設定できるため、消音によるクリックノイズの発生を確実に回避できる。
さらに前記実施形態では、消音させる発音チャネルを選択する場合に、演奏のパートの優先順位、音程、及び音の大きさを含む組合わせの合計により重み付けを行なった上で、最も重み付けの結果が小さく、音響上も消音させた場合の影響が最も小さくなる発音チャネルをより簡易な演算工程により選択できる。
この際、重み付けに予め設定した一定値を用いて消音させるチャンネルの閾値とすることにより、消音を行なうか否かの基準を任意に設定できる。
加えて前記実施形態では、鍵盤11での演奏操作による演奏データは、イベント・ディレイ・バッファ44による遅延系の回路系統を経ずに、第2イベントバッファ46から同時発音数管理部47を介して第1イベントバッファ45に供されるため、鍵盤11を操作する演奏者は、自動演奏される演奏データの処理回路上の遅延時間、例えば50[ミリ秒]を意識することなく、自動演奏に合わせてリアルタイムに演奏操作を継続できる。
なお前記実施形態では、鍵盤11とPCM音源とを用いた電子鍵盤楽器10に適用した場合について説明したが、本発明は電子楽器としての種類や音源方式等を限定するものではなく、演奏データの自動再生が可能な電子機器であれば、ソフトウェアを含む各種シンセサイザやタブレット端末、パーソナルコンピュータ等でも同様に適用することが可能となる。
その他、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[請求項1]
演奏データを読み込む読込処理と、
前記読込処理により読み込まれた前記演奏データの再生開始タイミングを遅らせた遅延演奏データを出力する出力処理と、
複数のオシレータのうちのいずれかのオシレータを発振させることにより、前記出力処理により出力された前記遅延演奏データに応じた自動演奏を発音部に発音させる自動演奏処理と、
前記読込処理による前記演奏データの読み込みにより、前記複数のオシレータ中で発振していないオシレータがあるかどうかを判断する判断処理と、
前記判断処理により前記発振していないオシレータがないと判断した場合に、発振中のいずれかのオシレータの発振を中止させる消音処理と、
を実行する電子楽器。
[請求項2]
前記出力処理は、前記演奏データに含まれる各イベントが発生するタイミングにそれぞれ一定の遅延時間を与える遅延処理を実行することにより前記遅延演奏データを出力する、請求項1に記載の電子楽器。
[請求項3]
前記発音された自動演奏に合わせて演奏操作子が操作されることにより、前記操作に応じた波形データに基づいて、前記複数のオシレータのうちのいずれかのオシレータを発振させることにより、前記波形データに応じた楽音を前記発音部に発音させる演奏処理、をさらに実行する請求項1または2に記載の電子楽器。
[請求項4]
前記判断処理により、前記発振していないオシレータがないと判断した場合に、前記遅延演奏データによる自動演奏に応じて発振しているオシレータに付与されるポイントより前記操作に応じて発振しているオシレータに付与されるポイントを高く設定した第1重み付けと、ある音域を発振しているオシレータに付与されるポイントより前記ある音域より低音域を発振しているオシレータに付与されるポイントを高く設定した第2重み付けと、あるベロシティで発振しているオシレータに付与されるポイントより前記あるベロシティより大きいベロシティで発振しているオシレータに付与されるポイントを高く設定した第3重み付けと、の少なくとも2つの重み付けの合計により前記消音処理させるオシレータを決定する、請求項3に記載の電子楽器。
[請求項5]
電子楽器のコンピュータに、
演奏データを読み込む読込処理と、
前記読込処理により読み込まれた前記演奏データの再生開始タイミングを遅らせた遅延演奏データを出力する出力処理と、
複数のオシレータのうちのいずれかのオシレータを発振させることにより、前記出力処理により出力された前記遅延演奏データに応じた自動演奏を発音部に発音させる自動演奏処理と、
前記読込処理による前記演奏データの読み込みにより、前記複数のオシレータのなかに発振していないオシレータがあるかどうかを判断する判断処理と、
前記判断処理により前記発振していないオシレータがないと判断した場合に、発振中のいずれかのオシレータの発振を中止させる消音処理と、
を実行させる方法。
[請求項6]
電子楽器のコンピュータに、
演奏データを読み込む読込処理と、
前記読込処理により読み込まれた前記演奏データの再生開始タイミングを遅らせた遅延演奏データを出力する出力処理と、
複数のオシレータのうちのいずれかのオシレータを発振させることにより、前記出力処理により出力された前記遅延演奏データに応じた自動演奏を発音部に発音させる自動演奏処理と、
前記読込処理による前記演奏データの読み込みにより、前記複数のオシレータのなかに発振していないオシレータがあるかどうかを判断する判断処理と、
前記判断処理により前記発振していないオシレータがないと判断した場合に、発振中のいずれかのオシレータの発振を中止させる消音処理と、
を実行させるプログラム。
10…電子鍵盤楽器、
11…鍵盤、
12…音色選択ボタン部(TONE)、
13…シーケンサ操作ボタン部(SEQUENCER)、
14…ベンダ/モジュレーションホイール、
15…液晶表示部、
16…スピーカ、
21…CPU、
22…RAM、
23…ROM、
24…音源LSI、
25…入出力(I/O)コントローラ、
26…波形ROM、
27…D/Aコンバータ、
28…アンプ、
29…LCDコントローラ、
30…キースキャナ、
31…A/Dコンバータ、
41…ソングメモリ、
42…シーケンサ、
43…イベント・タイム・ジェネレータ、
44…イベント・ディレイ・バッファ、
45…第1イベントバッファ、
46…第2イベントバッファ、
47…同時発音数管理部、
48…音源ドライバ、
B…バス

Claims (6)

  1. 自動演奏データを読み込んで、前記自動演奏データの発音タイミングを設定された遅延時間が経過するまで遅延させた発音タイミングでいずれかの発音チャンネルより順次発音させるディレイ発音処理と、
    演奏操作子への操作に対しては、前記設定された遅延時間分遅らせないタイミングでいずれかの発音チャンネルより発音させるリアルタイム発音処理と、
    読み込んだ前記自動演奏データ及び、前記演奏操作子への操作に応じて取得される操作信号に基づいて、同時発音数を取得する同時発音数取得処理と、
    取得された前記同時発音数が設定数に達する場合に、発音中のいずれかの発音チャンネルに対する消音処理と、
    を実行する制御部を備える電子楽器。
  2. 前記演奏操作子への操作に応じて発生するイベントと、前記自動演奏データを遅延させたイベントを記憶する第1イベントバッファと、
    前記演奏操作子への操作に応じて発生するイベントと、前記自動演奏データを遅延させていないイベントを記憶する第2イベントバッファと、
    音源ドライバと、
    を備え、
    前記制御部は、前記第1イベントバッファに記憶されるイベントを前記音源ドライバに送出する、
    請求項1に記載の電子楽器。
  3. 前記同時発音数取得処理は、前記第2イベントバッファに記憶されるイベントに基づいて前記同時発音数を取得する、
    請求項2に記載の電子楽器。
  4. 前記消音処理させる発音チャンネルは、発音チャンネルごとに対応付けられている重み付け値に基づいて決定される、
    請求項1乃至3のいずれかに記載の電子楽器。
  5. 電子楽器のコンピュータに、
    自動演奏データを読み込んで、前記自動演奏データの発音タイミングを設定された遅延時間が経過するまで遅延させた発音タイミングでいずれかの発音チャンネルより順次発音させるディレイ発音処理と、
    演奏操作子への操作に対しては、前記設定された遅延時間分遅らせないタイミングでいずれかの発音チャンネルより発音させるリアルタイム発音処理と、
    読み込んだ前記自動演奏データ及び、前記演奏操作子への操作に応じて取得される操作信号に基づいて、同時発音数を取得する同時発音数取得処理と、
    取得された前記同時発音数が設定数に達する場合に、発音中のいずれかの発音チャンネルに対する消音処理と、
    を実行させる方法。
  6. 電子楽器のコンピュータに、
    自動演奏データを読み込んで、前記自動演奏データの発音タイミングを設定された遅延時間が経過するまで遅延させた発音タイミングでいずれかの発音チャンネルより順次発音させるディレイ発音処理と、
    演奏操作子への操作に対しては、前記設定された遅延時間分遅らせないタイミングでいずれかの発音チャンネルより発音させるリアルタイム発音処理と、
    読み込んだ前記自動演奏データ及び、前記演奏操作子への操作に応じて取得される操作信号に基づいて、同時発音数を取得する同時発音数取得処理と、
    取得された前記同時発音数が設定数に達する場合に、発音中のいずれかの発音チャンネルに対する消音処理と、
    を実行させるプログラム。
JP2022125980A 2018-03-22 2022-08-08 電子楽器、方法及びプログラム Active JP7332002B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022125980A JP7332002B2 (ja) 2018-03-22 2022-08-08 電子楽器、方法及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018054604A JP7124370B2 (ja) 2018-03-22 2018-03-22 電子楽器、方法及びプログラム
JP2022125980A JP7332002B2 (ja) 2018-03-22 2022-08-08 電子楽器、方法及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018054604A Division JP7124370B2 (ja) 2018-03-22 2018-03-22 電子楽器、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2022140812A JP2022140812A (ja) 2022-09-27
JP7332002B2 true JP7332002B2 (ja) 2023-08-23

Family

ID=87576974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022125980A Active JP7332002B2 (ja) 2018-03-22 2022-08-08 電子楽器、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7332002B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000276149A (ja) 1999-03-24 2000-10-06 Yamaha Corp 楽音生成方法、楽音生成装置および記録媒体

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2753765B2 (ja) * 1990-07-05 1998-05-20 ローランド株式会社 電子楽器
JP3346710B2 (ja) * 1996-09-13 2002-11-18 ローランド株式会社 発音指示処理方法および発音指示処理装置
JP3409642B2 (ja) * 1997-05-20 2003-05-26 ヤマハ株式会社 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000276149A (ja) 1999-03-24 2000-10-06 Yamaha Corp 楽音生成方法、楽音生成装置および記録媒体

Also Published As

Publication number Publication date
JP2022140812A (ja) 2022-09-27

Similar Documents

Publication Publication Date Title
JP4107107B2 (ja) 鍵盤楽器
CN110299128B (zh) 电子乐器、方法、存储介质
US11893968B2 (en) Electronic musical instrument, electronic keyboard musical instrument, and method of generating musical sound
JP3915807B2 (ja) 奏法自動判定装置及びプログラム
JP7332002B2 (ja) 電子楽器、方法及びプログラム
JP7124370B2 (ja) 電子楽器、方法及びプログラム
JP5305483B2 (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
US5854438A (en) Process for the simulation of sympathetic resonances on an electronic musical instrument
CN113140201A (zh) 伴奏音生成装置、电子乐器、伴奏音生成方法及伴奏音生成程序
CN112447159A (zh) 共鸣音信号发生方法、共鸣音信号发生装置、记录介质及电子音乐装置
JP3518716B2 (ja) 楽音合成装置
JP4785052B2 (ja) 楽音発生装置
JP5754404B2 (ja) Midi演奏装置
JP4238807B2 (ja) 音源用波形データの決定装置
JP2023045356A (ja) 情報処理装置、方法及びプログラム
JPH10171475A (ja) カラオケ装置
JP3716701B2 (ja) 発音チャンネル割り当て方法及び装置
JP2000056765A (ja) 電子楽器
JP2000181460A (ja) 楽音生成装置および方法、並びに提供媒体
JP2002041041A (ja) 電子楽器、発音指示方法及び記録媒体
JP2002215154A (ja) 電子楽音発生装置
JPH04242794A (ja) 電子音楽再生装置
JPH05307389A (ja) 電子楽器
JP2000163056A (ja) 自動演奏装置及び自動演奏方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220829

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230629

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: 20230711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230724

R150 Certificate of patent or registration of utility model

Ref document number: 7332002

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150