IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ローランド株式会社の特許一覧

特開2024-146203電子楽器、自動操作方法および自動操作プログラム
<>
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図1
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図2
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図3
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図4
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図5
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図6
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図7
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図8
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図9
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図10
  • 特開-電子楽器、自動操作方法および自動操作プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024146203
(43)【公開日】2024-10-15
(54)【発明の名称】電子楽器、自動操作方法および自動操作プログラム
(51)【国際特許分類】
   G10H 1/00 20060101AFI20241004BHJP
   G10F 1/02 20060101ALI20241004BHJP
【FI】
G10H1/00 101B
G10F1/02 B
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023058971
(22)【出願日】2023-03-31
(71)【出願人】
【識別番号】000116068
【氏名又は名称】ローランド株式会社
(74)【代理人】
【識別番号】110000534
【氏名又は名称】弁理士法人真明センチュリー
(72)【発明者】
【氏名】須佐美 亮
【テーマコード(参考)】
5D478
【Fターム(参考)】
5D478EB40
(57)【要約】
【課題】電源に対するコストの増大を抑制しつつも、同時に自動操作される鍵が複数となる場合でも鍵の離鍵に対する聴取者の違和感を低減できる電子楽器、自動操作方法および自動操作プログラムを提供すること。
【解決手段】押鍵数Npが最大制御数Mc未満の最大押鍵数Mp以下となるよう鍵2aの押鍵/離鍵が制御されることで、最大制御数Mcのうち離鍵できる鍵2aの数を確保できる。よって、多数の鍵2aの押鍵が指示された場合でも離鍵中の鍵2aの離鍵制御を継続できるので、離鍵に対する聴取者の違和感を低減できる。また、最大制御数Mcの鍵2aのうち、押鍵よりも消費電力が小さい離鍵のみが行われる鍵2aが確保されることで、自動操作させる際に鍵盤2が要する消費電力が小さくなり、電子ピアノ1の電源の容量をより小さくできる。これにより、電子ピアノ1の電源に対するコストの増大を抑制できる。
【選択図】図2
【特許請求の範囲】
【請求項1】
自動操作が可能な鍵を有する鍵盤を備えた電子楽器であって、
前記自動操作において押鍵されている前記鍵の数である押鍵数を取得する押鍵数取得手段と、
前記自動操作において同時に前記鍵を押鍵および離鍵できる最大の数である最大制御数未満の数であって、前記自動操作において押鍵を制御できる前記鍵の最大の数である最大押鍵数を取得する最大押鍵数取得手段と、
前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記押鍵数取得手段で取得された押鍵数が前記最大押鍵数取得手段で取得された最大押鍵数以上の場合に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始する制御入替手段と、を備えていることを特徴とする電子楽器。
【請求項2】
前記自動操作において押鍵または離鍵されている前記鍵の数である制御数を取得する制御数取得手段を備え、
前記制御入替手段は、前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記制御数取得手段で取得された制御数が最大制御数以上で、且つ、前記押鍵数取得手段で取得された押鍵数が前記最大押鍵数取得手段で取得された最大押鍵数以上の場合に、前記自動操作において離鍵されている前記鍵のいずれかに離鍵制御の停止を指示すると共に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始するものであることを特徴とする請求項1記載の電子楽器。
【請求項3】
前記自動操作において押鍵または離鍵されている前記鍵の数である制御数を取得する制御数取得手段を備え、
前記制御入替手段は、前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記制御数取得手段で取得された制御数が最大制御数以上で、且つ、前記押鍵数取得手段で取得された押鍵数が前記最大押鍵数取得手段で取得された最大押鍵数未満の場合に、前記自動操作において離鍵されている前記鍵のいずれかに離鍵制御の停止を指示し、押鍵が指示された前記鍵の押鍵を開始するものであることを特徴とする請求項1記載の電子楽器。
【請求項4】
前記自動操作における前記鍵の押鍵の指示を取得した場合に、その押鍵の指示に基づく楽音の仮想エンベロープを算出するエンベロープ算出手段を備え、
前記制御入替手段は、前記自動操作において押鍵されている前記鍵のそれぞれの、その時点での仮想エンベロープレベルを前記エンベロープ算出手段で算出された仮想エンベロープから取得し、取得された仮想エンベロープレベルが最小値をとる前記鍵に離鍵の指示をするものであることを特徴とする請求項1又は2に記載の電子楽器。
【請求項5】
前記自動操作における前記鍵の押鍵の指示を取得した場合に、その押鍵の指示に基づく楽音の仮想エンベロープを算出するエンベロープ算出手段を備え、
前記制御入替手段は、前記自動操作において離鍵されている前記鍵のそれぞれの、その時点での仮想エンベロープレベルを前記エンベロープ算出手段で算出された仮想エンベロープから取得し、取得された仮想エンベロープレベルが最小値をとる前記鍵に離鍵制御の停止の指示をするものであることを特徴とする請求項2又は3に記載の電子楽器。
【請求項6】
前記エンベロープ算出手段は、前記鍵の押鍵時の時刻およびベロシティと押鍵からの経過時間とに基づいて仮想エンベロープを算出するものである請求項4記載の電子楽器。
【請求項7】
前記エンベロープ算出手段は、前記鍵の押鍵時の時刻およびベロシティと押鍵からの経過時間とに基づいて仮想エンベロープを算出するものである請求項5記載の電子楽器。
【請求項8】
前記エンベロープ算出手段は、前記鍵の押鍵時のベロシティをその押鍵の指示におけるベロシティとし、前記時刻から所定時間後のベロシティを0とした場合を線形で補間したものを仮想エンベロープとして算出するものであることを特徴とする請求項6記載の電子楽器。
【請求項9】
前記エンベロープ算出手段は、前記鍵の押鍵時のベロシティをその押鍵の指示におけるベロシティとし、前記時刻から所定時間後のベロシティを0とした場合を線形で補間したものを仮想エンベロープとして算出するものであることを特徴とする請求項7記載の電子楽器。
【請求項10】
前記最大押鍵数は、前記最大制御数の2分の1よりも大きい数であることを特徴とする請求項1記載の電子楽器。
【請求項11】
自動操作が可能な鍵を有する鍵盤を備えた電子楽器で実行される自動操作方法であり、
前記自動操作において同時に押鍵されている前記鍵の数である押鍵数を取得する押鍵数取得ステップと、
前記自動操作において同時に前記鍵を押鍵および離鍵できる最大の数である最大制御数未満の数であって、前記自動操作において押鍵を制御できる前記鍵の最大の数である最大押鍵数を取得する最大押鍵数取得ステップと、
前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記押鍵数取得ステップで取得された押鍵数が前記最大押鍵数取得ステップで取得された最大押鍵数以上の場合に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始する制御入替ステップと、を備えていることを特徴とする自動操作方法。
【請求項12】
自動操作が可能な鍵を有する鍵盤を備えたコンピュータに、前記鍵盤の鍵の自動操作処理を実行させる自動操作プログラムであり、
前記自動操作において同時に押鍵されている前記鍵の数である押鍵数を取得する押鍵数取得ステップと、
前記自動操作において同時に前記鍵を押鍵および離鍵できる最大の数である最大制御数未満の数であって、前記自動操作において押鍵を制御できる前記鍵の最大の数である最大押鍵数を取得する最大押鍵数取得ステップと、
前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記押鍵数取得ステップで取得された押鍵数が前記最大押鍵数取得ステップで取得された最大押鍵数以上の場合に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始する制御入替ステップと、を前記コンピュータに実行させることを特徴とする自動操作プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子楽器、自動操作方法および自動操作プログラムに関するものである。
【背景技術】
【0002】
特許文献1には、外部記憶装置81に記憶される曲データからキーオンデータ及びキーオフデータを取得し、取得されたキーオンデータ及びキーオフデータを用いて、音源回路66及びサウンドシステム69で楽音を生成して出力すると共に、ソレノイド52の駆動により鍵11を押鍵または離鍵させる電子楽器が開示されている。鍵11の離鍵時にもソレノイド52の駆動させることで、鍵11が離鍵される速度を重力に基づく速度よりも低減できるので、鍵11が押鍵する前の元の位置に戻った際の衝撃が緩和され、鍵11が元の位置に戻った際に機械的な騒音が発生するのを抑制できる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008-233828号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の電子楽器においては、搭載される電源の容量に基づき同時に押鍵または離鍵できる数である最大制御数が10個に制限されている。ある鍵11で押鍵が完了し、離鍵制御が開始されたばかりの状態で、新たに鍵11の押鍵の指示が10個追加された場合、押鍵または離鍵させる鍵11の数が最大制御数の10を超えてしまう。この場合、出力される楽音と鍵11の動作とのずれを抑制するため鍵11の押鍵が優先されるので、離鍵制御が開始されたばかりの鍵11の離鍵制御が停止されてしまう。これによって、直前まで押鍵され、離鍵を開始したばかりの鍵11の速度がソレノイド52の駆動力で抑えられていた状態から重力に基づく速度となり、当該鍵11が元の位置に戻った際の衝撃で機械的な騒音が発生し、聴取者が違和感を覚える虞がある。一方で、同時に押鍵または離鍵できる鍵11の数を増加させるべく最大制御数を増加させるには、電子楽器に容量の大きな電源を搭載する必要があり、電子楽器の電源に対するコストが増大するという問題点がある。
【0005】
本発明は、上述した問題点を解決するためになされたものであり、電源に対するコストの増大を抑制しつつ、同時に自動操作される鍵が複数となる場合でも鍵の離鍵に対する聴取者の違和感を低減できる電子楽器、自動操作方法および自動操作プログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
この目的を達成するために本発明の電子楽器は、自動操作が可能な鍵を有する鍵盤を備えたものであり、前記自動操作において押鍵されている前記鍵の数である押鍵数を取得する押鍵数取得手段と、前記自動操作において同時に前記鍵を押鍵および離鍵できる最大の数である最大制御数未満の数であって、前記自動操作において押鍵を制御できる前記鍵の最大の数である最大押鍵数を取得する最大押鍵数取得手段と、前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記押鍵数取得手段で取得された押鍵数が前記最大押鍵数取得手段で取得された最大押鍵数以上の場合に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始する制御入替手段と、を備えている。
【0007】
本発明の自動操作方法は、自動操作が可能な鍵を有する鍵盤を備えた電子楽器で実行される方法であり、前記自動操作において押鍵されている前記鍵の数である押鍵数を取得する押鍵数取得ステップと、前記自動操作において同時に前記鍵を押鍵および離鍵できる最大の数である最大制御数未満の数であって、前記自動操作において押鍵を制御できる前記鍵の最大の数である最大押鍵数を取得する最大押鍵数取得ステップと、前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記押鍵数取得ステップで取得された押鍵数が前記最大押鍵数取得ステップで取得された最大押鍵数以上の場合に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始する制御入替ステップと、を備えている。
【0008】
また本発明の自動操作プログラムは、自動操作が可能な鍵を有する鍵盤を備えたコンピュータに、前記鍵盤の鍵の自動操作処理を実行させるプログラムであり、前記自動操作において押鍵されている前記鍵の数である押鍵数を取得する押鍵数取得ステップと、前記自動操作において同時に前記鍵を押鍵および離鍵できる最大の数である最大制御数未満の数であって、前記自動操作において押鍵を制御できる前記鍵の最大の数である最大押鍵数を取得する最大押鍵数取得ステップと、前記自動操作における前記鍵の押鍵の指示を新たに取得し、且つ、前記押鍵数取得ステップで取得された押鍵数が前記最大押鍵数取得ステップで取得された最大押鍵数以上の場合に、前記自動操作において押鍵されている前記鍵のいずれかに離鍵の指示をし、押鍵が指示された前記鍵の押鍵を開始する制御入替ステップと、を前記コンピュータに実行させるものである。
【図面の簡単な説明】
【0009】
図1】電子ピアノの外観を表す図である。
図2】(a)は、最大制御数および最大押鍵数と鍵の押鍵/離鍵の状態とを模式的に表す図であり、(b)は、押鍵数が最大押鍵数となる場合を表す図であり、(c)は、押鍵数が最大押鍵数より小さい場合を表す図である。
図3】(a)は、仮想エンベロープを説明する図であり、(b)は、仮想エンベロープレベルを用いた対象の鍵の決定手法を説明する図である。
図4】電子ピアノの機能ブロック図である。
図5】電子ピアノの電気的構成を示すブロック図である。
図6】リソーステーブルを模式的に表す図である。
図7】(a)は、押鍵要求処理のフローチャートであり、(b)は、離鍵要求処理のフローチャートである。
図8】押鍵数制限処理のフローチャートである。
図9】押鍵リソース選定処理のフローチャートである。
図10】タイマー0%割込処理のフローチャートである。
図11】(a)は、タイマー10%割込処理のフローチャートであり、(b)は、タイマー80%割込処理のフローチャートである。
【発明を実施するための形態】
【0010】
以下、好ましい実施例について、添付図面を参照して説明する。まず、図1を参照して本実施形態の電子ピアノ1の概要を説明する。図1は、電子ピアノ1の外観を表す図であり、電子ピアノ1は、ユーザHの演奏に基づいた楽音や、MIDI(Musical Instrument Digital Interface)規格の楽曲データであるMIDIデータに基づいて楽音を発音する電子楽器である。
【0011】
電子ピアノ1には、鍵盤2と、ユーザHからの各種設定が入力される設定キー3と、各種設定の設定状態等が表示されるLCD4とが設けられる。鍵盤2は、ユーザHの演奏による演奏情報を取得するための入力装置である。鍵盤2には、複数の鍵2aが配設され、ユーザHによる鍵2aの押鍵/離鍵操作に応じたMIDI規格の演奏情報が、CPU10(図5参照)へ出力され、楽音として出力される。
【0012】
鍵盤2にはまた、鍵2aのそれぞれを独立して上下に駆動させるソレノイド2bが設けられる。ユーザHによって指定されたMIDIデータから演奏情報のうちのノートオンが取得された場合にソレノイド2bによって鍵2aを下方に駆動させることで、鍵2aの押鍵が実現される。一方で、MIDIデータから演奏情報のうちのノートオフが取得された場合に、ソレノイド2bによって鍵2aを上方に駆動させることで鍵2aの離鍵が実現される。
【0013】
より具体的にソレノイド2bは、Pulse Width Modulation(PWD)制御によって駆動される。本実施形態においては、鍵2aを押鍵させる場合、所定の周期(例えば1ミリ秒間)の80%の期間にソレノイド2bにHigh出力(以下「H出力」と略す)が行われ、これによって鍵2aが下方向に移動される。
【0014】
一方で鍵2aを離鍵させる場合は、所定の周期の10%の期間にソレノイド2bにH出力が行われる。このようなソレノイド2bの駆動力により、押鍵されて下方向に移動された鍵2aが、重力の作用によって急激に上方向へ移動する鍵2aの抵抗力となる。これにより、離鍵中の鍵2aの移動が緩やかになるので、そのまま押鍵される前の元の位置に戻った際の衝撃を緩和できる。よって、離鍵される鍵2aが元の位置に戻った際に発生する機械的な騒音を抑制できる。
【0015】
ユーザHに指定されたMIDIデータに基づくソレノイド2bによる鍵2aの押鍵/離鍵と、当該MIDIデータによる楽音の発音とを同期させることで、ユーザHに電子ピアノ1が自動演奏されているように見せることができる。以下、このようなMIDIデータに基づきソレノイド2bを駆動させ、鍵2aを動作させることを「鍵2aの自動操作」という。
【0016】
なお、楽音の出力および鍵2aを自動操作させるMIDIデータは、電子ピアノ1に予め記憶されているものでも良いし、電子ピアノ1に外部の機器と通信する通信装置を設け、その通信装置を介して他の機器やインターネットからMIDIデータを取得しても良い。また、楽音の出力と鍵2aの自動操作とを、同一のMIDIデータで行うものに限られず、楽音の出力と鍵2aの自動操作とを別々のMIDIデータで行っても良い。
【0017】
このように鍵2aの押鍵および離鍵の両方でソレノイド2bを駆動させているが、本実施形態では、同時に押鍵および離鍵できる鍵2aの数である最大制御数Mcが設けられ、押鍵される鍵2aの数である押鍵数Npと離鍵される鍵2aの数である離鍵数Nrとの合計が、最大制御数Mc以下となるように鍵2aの押鍵/離鍵が制御される。
【0018】
更に、最大制御数Mcよりも小さい数である最大押鍵数Mpを設け、押鍵数Npが最大押鍵数Mp以下となるように、鍵2aの押鍵が制御される。図2を参照して、これら最大制御数Mc及び最大押鍵数Mpを説明する。
【0019】
図2(a)は、最大制御数Mc及び最大押鍵数Mpと鍵2aの押鍵/離鍵の状態とを表す図であり、図2(b)は、押鍵数Npが最大押鍵数Mpとなる場合を表す図であり、図2(c)は、押鍵数Npが最大押鍵数Mpより小さい場合を表す図である。
【0020】
図2(a)に示す通り、本実施形態では、同時に押鍵および離鍵できる最大の鍵2aの数である最大制御数Mcが「12」に設定される。押鍵数Npと離鍵数Nrとの合計が、最大制御数Mc以下となるように鍵2aの押鍵/離鍵が制御される。これにより、押鍵または離鍵により同時に駆動されるソレノイド2bの数が制限されるので、電子ピアノ1の消費電力の増大が抑制され、電子ピアノ1を安定して動作させることができる。
【0021】
更に最大制御数Mcのうち、押鍵できる最大の鍵2aの数である最大押鍵数Mpが「8」に設定される。即ち最大押鍵数Mpが最大制御数Mc未満の数に設定されることで、押鍵数Npが最大押鍵数Mpに達した場合でも、離鍵できる鍵2aの数を少なくとも4個は確保できる。
【0022】
例えば図2(b)のように、3つの鍵2aが離鍵中の状態で、多数の鍵2aの押鍵が指示された場合、押鍵数Npが最大押鍵数Mp以下になるように鍵2aの押鍵が制御される。なお、この際、押鍵数Npが最大押鍵数Mpより大きくなる場合は、押鍵中の鍵2aの中から後述する「対象の鍵2a」が取得され、その対象の鍵2aに対して離鍵が指示され、新たに押鍵が指示された鍵2aの押鍵が開始される。よって、押鍵数Npと離鍵数Nrとの合計を最大制御数Mc以下にできるので、離鍵中の鍵2aのソレノイド2bの駆動(以下「離鍵制御」という)を継続できる。
【0023】
これにより、多数の鍵2aの押鍵が指示された場合でも、離鍵中の鍵2aの離鍵制御が継続され、離鍵中の鍵2aのソレノイド2bの駆動力によって離鍵中の鍵2aの速度を重力に基づく速度よりも抑制された状態を継続できるので、元の位置に戻る際の衝撃を抑制できる。これにより、同時に自動操作される鍵2aが複数となる場合でも離鍵に対する聴取者の違和感を低減できる。
【0024】
ところで、鍵2aを離鍵させる際のソレノイド2bの消費電力は、押鍵させる際の消費電力よりも小さい。これは、上記した所定の周期(1ミリ秒間)において、離鍵は押鍵よりもソレノイド2bの駆動時間が短いためである。本実施形態では、最大制御数Mcから最大押鍵数Mpの鍵2aのうち、最大制御数Mcと最大押鍵数Mpとの差(即ち「4」)の鍵2aが、消費電力が少ない離鍵のみが行われるものとして確保される。よって、最大制御数Mcの鍵2aの全てで押鍵および離鍵できるようにする場合と比較して、自動操作させる際に鍵盤2が要する消費電力を小さくすることができるので、電子ピアノ1をより小さな容量の電源でも安定して動作させることができる。これにより、電子ピアノ1の電源に対するコストの増大を抑制できる。
【0025】
また、最大制御数Mcに12が、最大押鍵数Mpに8がそれぞれ設定され、即ち最大押鍵数Mpには、最大制御数Mcの2分の1より大きな数が設定される。従って、最大制御数Mcまで鍵2aの押鍵または離鍵を行った場合に、押鍵数Npが離鍵数Nrよりも大きくなる。これにより、鍵2aの押鍵が離鍵よりも優先されるため、押鍵が指示されても鍵2aの押鍵がされなかったり、不必要に鍵2aの押鍵から離鍵に変更されたりするのを抑制できる。
【0026】
このような最大制御数Mc及び最大押鍵数Mpは、上記の電子ピアノ1の電源の容量の大きさと、ソレノイド2bの消費電力の大きさとの兼ね合いにより決定される。よって、電源の容量の大きさやソレノイド2bの消費電力の大きさに応じて、最大制御数Mcを12以上または12以下に設定しても良い。同様に、最大押鍵数Mpを8以上または8以下に設定しても良い。この際の最大押鍵数Mpも、最大制御数Mc以下かつ最大制御数Mcの2分の1以上の数であることが好ましい。
【0027】
ここで、押鍵できる鍵2aの数の最大数である最大押鍵数Mpで設定されるのに対し、離鍵できる鍵2aの数の最大数は設定されない。従って、押鍵数Npが最大押鍵数Mpよりも小さい場合に、離鍵数Nrを最大制御数Mcと最大押鍵数Mpとの差(即ち「4」)よりも多くできるように構成される。これは、上記した通り、離鍵は押鍵よりもソレノイド2bの駆動時間が短く、押鍵の代わりに離鍵を行ってもソレノイド2bの消費電力の増加が小さいからである。
【0028】
例えば、6個の鍵2aの押鍵が同時に指示された場合、図2(c)のように、その後に同じ6個の鍵2aに離鍵が指示される。かかる離鍵においても、最大制御数Mcと最大押鍵数Mpとの差以上の鍵2aの離鍵制御が可能となるので、離鍵される6個の鍵2aのうちの一部の鍵2aで離鍵制御が停止されてしまう事態を抑制できる。これにより、鍵2aの離鍵をスムーズに行うことができるので、聴取者の離鍵に対する違和感を抑制できる。
【0029】
ところで、押鍵数Npが最大押鍵数Mpである状態で、新たな鍵2aの押鍵の指示があった場合でも、押鍵数Npを最大押鍵数Mp以下を維持し、且つ、押鍵数Npと離鍵数Nrとの合計を最大制御数Mc以下を維持する必要がある。そのために、押鍵中の鍵2aを離鍵させ、更に離鍵中の鍵2aの離鍵制御を停止させる必要がある。本実施形態では、押鍵中の鍵2aを離鍵させる対象の鍵2aや、離鍵制御を停止させる対象の鍵2aを、押鍵された時のベロシティと押鍵からの経過時間とによる仮想エンベロープEに基づいて決定される。図3を参照して、仮想エンベロープEを説明する。
【0030】
図3(a)は、仮想エンベロープEを説明する図である。図3(a)及び後述の図3(b)においては、横軸は時刻を表し、縦軸はベロシティ又は後述の仮想エンベロープレベルの大きさを表す。仮想エンベロープEは、押鍵の指示により発音された楽音のベロシティが時間経過によって減衰する様子を表す関数である。
【0031】
具体的に仮想エンベロープEは、押鍵が開始された時刻である押鍵開始時刻TsでベロシティVsで発音された音が、押鍵開始時刻TsからΔT(例えば10秒)後の時刻Teでベロシティが0となると仮定した場合の、ベロシティの変化を表す。本実施形態では、押鍵開始時刻TsでのベロシティVsと、時刻Teでのベロシティ「0」とを直線で結ぶ、即ち線形で補間した関数とされる。
【0032】
このような仮想エンベロープEから所望の時刻でのベロシティ、例えば現在の時刻TcでのベロシティVcが取得され、離鍵させる対象の鍵2aや離鍵制御を停止させる対象の鍵2a(以下「対象の鍵2a」と略す)の決定に用いられる。以下、仮想エンベロープEから取得されるVcのようなベロシティのことを「仮想エンベロープレベル」という。図3(b)を参照して、仮想エンベロープレベルを用いた対象の鍵2aの決定手法を説明する。
【0033】
図3(b)は、仮想エンベロープレベルを用いた対象の鍵2aの決定手法を説明する図である。図3(b)においては、押鍵または離鍵している鍵2aが3つあり、この中から、時刻Tcにおいて対象の鍵2aが決定される。3つの鍵のうち、最初に押鍵された鍵2aを第1鍵2a1、2番目に押鍵された鍵2aを第2鍵2a2、3番目に押鍵された鍵2aを第3鍵2a3とする。
【0034】
まず、第1鍵2a1、第2鍵2a2及び第3鍵2a3のそれぞれに対応する、仮想エンベロープEa、仮想エンベロープEb及び仮想エンベロープEcが算出される。具体的に仮想エンベロープEaは、第1鍵2a1の押鍵開始時刻TsaでのベロシティVsaと、押鍵開始時刻TsaからΔT後の時刻Teaでのベロシティ「0」とを直線で結んだ関数として算出される。
【0035】
同様に、仮想エンベロープEbは、第2鍵2a2の押鍵開始時刻TsbでのベロシティVsbと、押鍵開始時刻TsbからΔT後の時刻Tebでのベロシティ「0」とを直線で結んだ関数として算出され、仮想エンベロープEcは、第3鍵2a3の押鍵開始時刻TscでのベロシティVscと、押鍵開始時刻TscからΔT後の時刻Tecでのベロシティ「0」とを直線で結んだ関数として算出される。
【0036】
このように算出された仮想エンベロープEa,Eb,Ecから、対象の鍵2aを決定する時刻Tcにおける仮想エンベロープレベルVca,Vcb,Vccが取得され、更に取得された仮想エンベロープレベルVca,Vcb,Vccのうちの最小値を取る第1鍵2a1が「対象の鍵2a」に決定される。
【0037】
このように対象の鍵2aとして決定される第1鍵2a1は時刻Tcにおける仮想エンベロープレベルが最小なので、同時に押鍵または離鍵されている第1~3鍵2a1~2a3のうちで、押鍵された際のベロシティが小さい鍵2a、又は、押鍵されてから時間が経過していて時刻Tcにおいて最も発音状態との関係が低い鍵2aである。
【0038】
即ち第1鍵2a1は、鍵2a1~2a3のうちで押鍵を離鍵に変更した場合に最も目立ちにくい鍵2aであり、鍵2a1~2a3のうちで離鍵制御を停止した場合でも元の位置に戻った際の機械的な騒音が最も目立ちにくい鍵2aである。このような目立ちにくい第1鍵2a1を「対象の鍵2a」として押鍵から離鍵に変更したり、離鍵制御を停止したりすることで、押鍵から離鍵への変更や、離鍵制御の停止に対する聴取者の違和感を抑制できる。
【0039】
次に、図4を参照して電子ピアノ1の機能を説明する。図4は、電子ピアノ1の機能ブロック図である。図4に示すように、電子ピアノ1は、押鍵数取得手段100と、最大押鍵数取得手段101と、制御入替手段102とを有する。押鍵数取得手段100は、上記の押鍵数Npを取得する手段であり、また、最大押鍵数取得手段101は、上記の最大押鍵数Mpを取得する手段であり、これらは図5で後述のCPU10で実現される。制御入替手段102は、鍵2aの押鍵の指示を新たに取得し、且つ、押鍵数取得手段100で取得された押鍵数Npが最大押鍵数取得手段101された最大押鍵数Mp以上の場合に、押鍵中の鍵2aのいずれかに離鍵の指示をし、押鍵が指示された鍵2aの押鍵を開始する手段であり、CPU10で実現される。
【0040】
即ち制御入替手段102によって、鍵2aの押鍵の指示が新たに取得され、なおかつ、押鍵数Npが最大押鍵数Mp以上の場合に、押鍵中の鍵2aのいずれかに離鍵の指示がされ押鍵が指示された鍵2aの押鍵が開始される。これにより、押鍵される鍵2aの数は、押鍵の指示を取得する前後において最大押鍵数Mp以下を維持できるので、鍵2aの押鍵の指示によって離鍵中の鍵2aの離鍵制御を停止する必要がない。
【0041】
よって、離鍵中の鍵2aの離鍵制御が継続され、当該鍵2aの速度が重力に基づく速度よりも抑制された状態を継続できるので、元の位置に戻る際の衝撃を抑制できる。これにより、同時に自動操作される鍵2aが複数となる場合でも離鍵に対する聴取者の違和感を低減できる。また最大制御数Mcの鍵2aのうち、最大制御数Mcと最大押鍵数Mpとの差の数の鍵2aが、押鍵よりも消費電力が少ない離鍵のみが行われるものとして確保される。よって、最大制御数Mcの鍵2aの全てで押鍵および離鍵できるようにする場合と比較して、自動操作させる際に鍵盤2が要する消費電力を小さくすることができるので、電子ピアノ1をより小さな容量の電源でも安定して動作させることができ、電子ピアノ1の電源に対するコストの増大を抑制できる。
【0042】
次に図5,6を参照して、電子ピアノ1の電気的構成を説明する。図5は、電子ピアノ1の電気的構成を示すブロック図である。電子ピアノ1は、CPU10と、フラッシュROM11と、RAM12と、上記した鍵盤2、設定キー3及びLCD4と、音源13と、Digital Signal Processor14(以下「DSP14」と称す)とを有し、それぞれバスライン15を介して接続される。
【0043】
CPU10は、バスライン15により接続された各部を制御する演算装置である。フラッシュROM11は、CPU10により実行されるプログラムや固定値データ等を格納した書き換え可能な不揮発性の記憶装置であり、制御プログラム11aが記憶される。CPU10によって制御プログラム11aが実行されると、図7(a)の押鍵要求処理や図7(b)の離鍵要求処理が実行される。RAM12は、CPU10がプログラムの実行時に各種のワークデータやフラグ等を書き換え可能に記憶するためのメモリであり、リソーステーブル12aが記憶される。ここで図6を参照して、リソーステーブル12aを説明する。
【0044】
図6は、リソーステーブル12aを模式的に表す図である。リソーステーブル12aは、押鍵または離鍵される鍵2aの情報を管理するデータテーブルである。リソーステーブル12aには、鍵2aの情報として、鍵2aの押鍵・離鍵の状態を表すステータスと、鍵2aに対応するMIDIのノート番号と、鍵2aが押鍵された際のベロシティと、図3で上記した押鍵開始時刻と、鍵2aの離鍵が開始された時刻である離鍵開始時刻とが対応付けられて記憶される。以下、リソーステーブル12aに記憶される鍵2aのステータス、ノート番号、ベロシティ、押鍵開始時刻および離鍵開始時刻のことを「鍵2aのリソース」という。
【0045】
リソーステーブル12aには、最大制御数Mcである12個の鍵2aのリソースが記憶できるように構成される。リソーステーブル12aに記憶されるステータスとして、鍵2aの押鍵が指示されたことを表す「押鍵要求」と、鍵2aが押鍵中であることを表す「押鍵中」と、鍵2aの離鍵が指示されたことを表す「離鍵要求」と、鍵2aが離鍵中であることを表す「押鍵中」と、鍵2aの押鍵および離鍵がいずれもされていないことを表す「OFF」とが設けられる。
【0046】
このようなリソーステーブル12aを用いて、鍵2aの押鍵/離鍵が制御される。特に、リソーステーブル12aにおいて、押鍵要求または押鍵中のものの数が上記した押鍵数Npとされ、この押鍵数Npが上記した最大押鍵数Mp以下となるように鍵2aの押鍵/離鍵が制御される。
【0047】
図5に戻る。音源13は、CPU10から入力される演奏情報に基づく波形データを出力する装置である。DSP14は、音源13から入力された波形データを演算処理するための演算装置である。DSP14には、デジタルアナログコンバータ(DAC)16が接続され、そのDAC16にはアンプ17が接続され、そのアンプ17にはスピーカ18が接続される。
【0048】
次に、図7~11を参照して電子ピアノ1のCPU10で実行される処理を説明する。図7(a)は、押鍵要求処理のフローチャートである。押鍵要求処理は、CPU10に鍵2aを押鍵させる指示である押鍵要求が入力された場合に実行される処理である。押鍵要求処理は、S1の押鍵数制限処理を行い、その後、S2の押鍵リソース選定処理を行う。ここで図8,9を参照して、S1の押鍵数制限処理とS2の押鍵リソース選定処理とを説明する。
【0049】
図8は、押鍵数制限処理のフローチャートである。押鍵数制限処理はまず、離鍵される候補の鍵2aのリソースが記憶される離鍵候補リソースにNULLを設定し、押鍵数に0を設定する(S20)。本実施形態において「NULL」は、鍵2aのリソース、即ち鍵2aのステータス、ノート番号、ベロシティ、押鍵開始時刻および離鍵開始時刻がいずれも未設定の状態のリソースを表すものとする。
【0050】
S20の処理の後、カウンタ変数iに1を設定する(S21)。S21の処理の後、リソーステーブル12aからi番目のリソースを取得する(S22)。S22の処理の後、取得したi番目のリソースのステータスが「押鍵中」かを確認する(S23)。
【0051】
S23の処理において、i番目のリソースのステータスが「押鍵中」の場合は(S23:Yes)、押鍵数に1を加算する(S24)。S24の処理の後、i番目のリソースの押鍵開始時刻およびベロシティから仮想エンベロープEを算出し、算出された仮想エンベロープEから現在時刻における仮想エンベロープレベルを取得する(S25)。
【0052】
S25の処理の後、離鍵候補リソースの押鍵開始時刻およびベロシティから仮想エンベロープEを算出し、算出された仮想エンベロープEから現在時刻における仮想エンベロープレベルを取得する(S26)。なお、離鍵候補リソースがNULLの場合は、押鍵開始時刻およびベロシティが未設定であるので、仮想エンベロープレベルとして仮想エンベロープレベルの最大値である「255」が取得される。
【0053】
S26の処理の後、S25の処理で取得されたi番目のリソースの仮想エンベロープレベルが、S26の処理で取得された離鍵候補リソースの仮想エンベロープレベル以下かを確認する(S27)。S27の処理において、i番目のリソースの仮想エンベロープレベルが離鍵候補リソースの仮想エンベロープレベル以下の場合は(S27:Yes)、離鍵候補リソースにi番目のリソースを設定する(S28)。
【0054】
S23の処理においてi番目のリソースのステータスが「押鍵中」ではない場合(S23:No)、S27の処理においてi番目のリソースの仮想エンベロープレベルが離鍵候補リソースの仮想エンベロープレベルより大きい場合(S27:No)、又は、S28の処理の後、カウンタ変数iに1を加算する(S29)。
【0055】
S29の処理の後、カウンタ変数iが最大制御数Mcより大きいかを確認する(S30)。S30の処理において、カウンタ変数iが最大制御数Mc以下の場合は(S30:No)、S22以下の処理を繰り返す。
【0056】
S30の処理において、カウンタ変数iが最大制御数Mcより大きい場合は(S30:Yes)、押鍵数Npが最大押鍵数Mp以上かを確認する(S31)。S31の処理において、押鍵数Npが最大押鍵数Mp以上の場合は(S31:Yes)、押鍵中の鍵2aの中で最も仮想エンベロープレベルが小さいとされる、離鍵候補リソースに該当する鍵2aを離鍵させる場合である。かかる場合に、リソーステーブル12aにおける離鍵候補リソースに該当するリソースのステータスに「離鍵要求」を、離鍵開始時刻に現在時刻をそれぞれ設定する(S32)。
【0057】
S31の処理において押鍵数が最大押鍵数Mpより小さい場合(S31:No)、又は、S32の処理の後、押鍵数制限処理を終了する。
【0058】
次に図9を参照して、S2の押鍵リソース選定処理を説明する。図9は、押鍵リソース選定処理のフローチャートである。押鍵リソース選定処理はまず、リソーステーブル12aのリソースのうち、新たに押鍵させる鍵2aのリソースを設定するリソースに対応するリソースが記憶される新規押鍵候補リソースにNULLを設定する(S40)。S40の処理の後、カウンタ変数iに1を設定する(S41)。S41の処理の後、リソーステーブル12aからi番目のリソースを取得する(S42)。
【0059】
S42の処理の後、取得したi番目のリソースのステータスが「OFF」かを確認する(S43)。S43の処理において、i番目のリソースのステータスが「OFF」の場合は(S43:Yes)、i番目のリソースは空いている状態なので、新規押鍵候補リソースにそのi番目のリソースを設定する(S44)。
【0060】
一方で、S43の処理において、i番目のリソースのステータスが「OFF」ではない場合は(S43:No)、カウンタ変数iに1を加算し(S45)、そのカウンタ変数iが最大制御数Mcより大きいかを確認する(S46)。S46の処理において、カウンタ変数iが最大制御数Mc以下の場合は(S46:No)、S42以下の処理を繰り返す。
【0061】
S46の処理において、カウンタ変数iが最大制御数Mcより大きい場合は(S46:Yes)、カウンタ変数kに1を設定する(S47)。S47の処理の後、リソーステーブル12aからk番目のリソースを取得する(S48)。S48の処理の後、取得されたk番目のリソースのステータスが「離鍵中」かを確認する(S49)。
【0062】
S49の処理において、k番目のリソースのステータスが「離鍵中」の場合は(S49:Yes)、k番目のリソースの押鍵開始時刻およびベロシティから仮想エンベロープEを算出し、算出された仮想エンベロープEから現在時刻における仮想エンベロープレベルを取得する(S50)。
【0063】
S50の処理の後、新規押鍵候補リソースの押鍵開始時刻およびベロシティから仮想エンベロープEを算出し、算出された仮想エンベロープEから現在時刻における仮想エンベロープレベルを取得する(S51)。なお、S51の処理においても、新規押鍵候補リソースがNULLの場合は仮想エンベロープレベルとして「255」が取得される。
【0064】
S51の処理の後、S50の処理で取得されたk番目のリソースの仮想エンベロープレベルが、S51の処理で取得された新規押鍵候補リソースの仮想エンベロープレベル以下かを確認する(S52)。S52の処理において、k番目のリソースの仮想エンベロープレベルが、新規押鍵候補リソースの仮想エンベロープレベル以下の場合は(S52:Yes)、新規押鍵候補リソースにk番目のリソースを設定する(S53)。
【0065】
S49の処理においてk番目のリソースのステータスが「離鍵中」でない場合(S49:No)、S52の処理においてk番目のリソースの仮想エンベロープレベルが新規押鍵候補リソースの仮想エンベロープレベルより大きい場合(S52:No)、又は、S53の処理の後、カウンタ変数kに1を加算する(S54)。S54の処理の後、カウンタ変数kが最大制御数Mcより大きいかを確認する(S55)。
【0066】
S55の処理において、カウンタ変数kが最大制御数Mc以下の場合は(S55:No)、S48以下の処理を繰り返す。一方で、S55の処理においてカウンタ変数kが最大制御数Mcより大きい場合(S55:Yes)、又は、S44の処理の後、リソーステーブル12aにおける新規押鍵候補リソースに該当するリソースのステータスに「押鍵要求」を、ノート番号に押鍵要求された鍵2aに該当するノート番号を、ベロシティに押鍵要求された際のベロシティを、押鍵開始時刻に現在時刻をそれぞれ設定する(S56)。これによって、新規押鍵候補リソースに該当する鍵2aが離鍵中の場合はその離鍵制御が停止され、押鍵要求された鍵2aの押鍵が開始される。S56の処理の後、押鍵リソース選定処理を終了する。
【0067】
次に図7(b)を参照して、離鍵要求処理を説明する。図7(b)は、離鍵要求処理のフローチャートである。離鍵要求処理は、CPU10に鍵2aを離鍵させる指示(離鍵要求)が入力された場合に実行される処理である。
【0068】
離鍵要求処理はまず、カウンタ変数iに1を設定する(S10)。S10の処理の後、リソーステーブル12aからi番目のリソースを取得する(S11)。S11の処理の後、離鍵要求されたノート番号が取得したリソースのノート番号と一致するかを確認する(S12)。S12の処理において、離鍵要求されたノート番号が取得したリソースのノート番号と一致する場合は(S12:Yes)、リソーステーブル12aからi番目のリソースのステータスに「離鍵要求」を、離鍵開始時刻に現在時刻をそれぞれ設定する(S13)。
【0069】
S12の処理において離鍵要求されたノート番号が取得したリソースのノート番号と一致しない場合(S12:No)、又は、S13の処理の後、カウンタ変数iに1を加算し(S14)、そのカウンタ変数iが最大制御数Mcより大きいかを確認する(S15)。S15の処理において、カウンタ変数iが最大制御数Mc以下の場合は(S15:No)、S11以下の処理を繰り返す。一方で、S15の処理において、カウンタ変数iが最大制御数Mcより大きい場合は(S15:Yes)、離鍵要求処理を終了する。
【0070】
次に図10,11を参照して、タイマー割込処理を説明する。本実施形態では、所定の周期(1ミリ秒間)の開始のタイミングで実行されるタイマー0%割込処理と、所定の周期の開始後、その周期の10%経過後のタイミングで実行されるタイマー10%割込処理と、所定の周期の開始後、その周期の80%経過後のタイミングで実行されるタイマー80%割込処理とが設けられる。まず図10を参照してタイマー0%割込処理を説明する。
【0071】
図10は、タイマー0%割込処理のフローチャートである。タイマー0%割込処理はまず、カウンタ変数iに1を設定する(S60)。S60の処理の後、リソーステーブル12aからi番目のリソースを取得する(S61)。
【0072】
S61の処理の後、i番目のリソースのステータスが「押鍵要求」かを確認する(S62)。S62の処理において、i番目のリソースのステータスが「押鍵要求」の場合は(S62:Yes)、リソーステーブル12aからi番目のリソースのステータスを「押鍵中」に設定する(S63)。
【0073】
S62の処理においてi番目のリソースのステータスが「押鍵要求」ではない場合(S62:No)、又は、S63の処理の後、i番目のリソースのステータスが「離鍵要求」かを確認する(S64)。S64の処理において、i番目のリソースのステータスが「離鍵要求」の場合は(S64:Yes)、リソーステーブル12aからi番目のリソースのステータスを「離鍵中」に設定する(S65)。
【0074】
S64の処理においてi番目のリソースのステータスが「離鍵要求」ではない場合(S64:No)、又は、S65の処理の後、i番目のリソースのステータスが「離鍵中」かつ離鍵開始時刻から200ミリ秒が経過したかを確認する(S66)。S66の処理において、i番目のリソースのステータスが「離鍵中」且つ離鍵開始時刻から200ミリ秒が経過した場合は(S66:Yes)、i番目のリソースに該当する鍵2aの離鍵制御を停止させるタイミングなので、i番目のリソースのステータスに「OFF」を設定する(S67)。
【0075】
S66の処理においてi番目のリソースのステータスが「離鍵中」ではない若しくは離鍵開始時刻から200ミリ秒が経過していない場合(S66:No)、又は、S67の処理の後、i番目のリソースのステータスが「押鍵中」又は「離鍵中」であるかを確認する(S68)。S68の処理において、i番目のリソースのステータスが「押鍵中」又は「離鍵中」の場合は(S68:Yes)、i番目のリソースのノート番号に該当する鍵2aのソレノイド2bにH出力を行う(S69)。これにより、押鍵制御または離鍵制御のためのソレノイド2bの駆動力が鍵2aに加えられる。
【0076】
S68の処理においてi番目のリソースのステータスが「押鍵中」ではなく且つ「離鍵中」でもない場合(S68:No)、又は、S69の処理の後、カウンタ変数iに1を加算し(S70)、そのカウンタ変数iが最大制御数Mcより大きいかを確認する(S71)。S71の処理において、カウンタ変数iが最大制御数Mc以下の場合は(S71:No)、S61以下の処理を繰り返す。一方で、S71の処理において、カウンタ変数iが最大制御数Mcより大きい場合(S71:Yes)、タイマー0%割込処理を終了する。
【0077】
次に図11(a)を参照して、タイマー10%割込処理を説明する。図11(a)は、タイマー10%割込処理のフローチャートである。タイマー10%割込処理はまず、カウンタ変数iに1を設定する(S80)。S80の処理の後、リソーステーブル12aからi番目のリソースを取得する(S81)。S81の処理の後、i番目のリソースのステータスが「離鍵中」であるかを確認する(S82)。S82の処理において、i番目のリソースのステータスが「離鍵中」の場合は(S82:Yes)、i番目のリソースのノート番号に該当する鍵2aのソレノイド2bにLow出力(L出力)を行う(S83)。
【0078】
即ち離鍵中の鍵2aのソレノイド2bは、上記のタイマー0%割込処理のS69の処理でH出力がされ、S83の処理でL出力される。これによって、離鍵中の鍵2aのソレノイド2bの駆動力が停止され、当該鍵2aのソレノイド2bは所定の周期の10%の間だけ駆動される。かかるソレノイド2bの駆動力は、鍵2aを下方に移動させる程ではないが、離鍵される鍵2aが重力の作用によって上方に移動する際の抵抗力になり得る。これにより、鍵2aの離鍵が緩やかに行われるので、鍵2aが元の位置に戻った際の衝撃によって機械的な騒音が発生するのを抑制できる。
【0079】
S82の処理においてi番目のリソースのステータスが「離鍵中」ではない場合(S82:No)、又は、S83の処理の後、カウンタ変数iに1を加算し(S84)、そのカウンタ変数iが最大制御数Mcより大きいかを確認する(S85)。S85の処理において、カウンタ変数iが最大制御数Mc以下の場合は(S85:No)、S81以下の処理を繰り返す。一方で、S85の処理において、カウンタ変数iが最大制御数Mcより大きい場合(S85:Yes)、タイマー10%割込処理を終了する。
【0080】
最後に図11(b)を参照して、タイマー80%割込処理を説明する。図11(b)は、タイマー80%割込処理のフローチャートである。タイマー80%割込処理はまず、カウンタ変数iに1を設定する(S90)。S90の処理の後、リソーステーブル12aからi番目のリソースを取得する(S91)。S91の処理の後、i番目のリソースのステータスが「押鍵中」であるかを確認する(S92)。S92の処理において、i番目のリソースのステータスが「押鍵中」の場合は(S92:Yes)、i番目のリソースのノート番号に該当する鍵2aのソレノイド2bにL出力を行う(S93)。
【0081】
即ち押鍵中の鍵2aのソレノイド2bは、上記のタイマー0%割込処理のS69の処理でH出力がされ、S93の処理でL出力される。これによって、押鍵中の鍵2aのソレノイド2bの駆動力が停止され、当該鍵2aのソレノイド2bは所定の周期の80%の間だけ駆動される。鍵2aの押鍵時のソレノイド2bの駆動を所定の周期の80%に限定することで、例えば、ソレノイド2bの駆動を所定の周期の100%にするよりも消費電力と鍵2aの押鍵速度とのバランスの取れた駆動を行うことができる。
【0082】
S92の処理においてi番目のリソースのステータスが「押鍵中」ではない場合(S92:No)、又は、S93の処理の後、カウンタ変数iに1を加算し(S94)、そのカウンタ変数iが最大制御数Mcより大きいかを確認する(S95)。S95の処理において、カウンタ変数iが最大制御数Mc以下の場合は(S95:No)、S91以下の処理を繰り返す。一方で、S95の処理において、カウンタ変数iが最大制御数Mcより大きい場合(S95:Yes)、タイマー80%割込処理を終了する。
【0083】
以上、上記実施形態に基づき説明したが、種々の改良変更が可能であることは容易に推察できるものである。
【0084】
上記実施形態では、仮想エンベロープEを、押鍵開始時刻Tsで発音されたベロシティVsが減衰する様子を表す関数としたが、これに限られない。例えば、仮想エンベロープEを、押鍵開始時刻Tsからの経過時間のみに応じたものとしても良い。この場合、押鍵開始時刻Tsからの経過時間の逆数を仮想エンベロープレベルとして取得しても良い。
【0085】
また、仮想エンベロープEを押鍵開始時刻TsでのベロシティVsと、時刻Teでのベロシティ「0」とを線形で補間したが、これに限られず、例えば2次関数や3次関数、指数関数等の曲線で補間しても良いし、階段状に補間しても良いし、その他の形状で補間しても良い。
【0086】
また、図8のS25~S28や図9のS50~S53の処理において、離鍵候補リソースや新規押鍵候補リソースを選定する際の仮想エンベロープレベルとして、仮想エンベロープEから取得した値をそのまま用いたが、これに限られない。例えば、仮想エンベロープEから取得された値に、押鍵開始時刻Tsからの経過時間の逆数に基づく係数を加算または乗算したものを、離鍵候補リソースや新規押鍵候補リソースを選定する際の仮想エンベロープレベルとしても良い。
【0087】
これにより、押鍵されたばかりの鍵2aの仮想エンベロープレベルを、押鍵されてから時間が経過した鍵2aの仮想エンベロープレベルよりも大きくすることができるので、押鍵されたばかりの鍵2aが離鍵されたり、離鍵制御が停止されたりするのを抑制できるので、聴取者の違和感をより抑制できる。
【0088】
更には、図8のS25~S28及び図9のS50~S53の処理において、仮想エンベロープレベルを用いて離鍵候補リソース及び新規押鍵候補リソースの両方を選定したが、これに限られない。仮想エンベロープレベルを用いて離鍵候補リソースのみを選定し、新規押鍵候補リソースは他の手法により選定しても良いし、仮想エンベロープレベルを用いて新規押鍵候補リソースのみを選定し、離鍵候補リソースは他の手法により選定しても良い。
【0089】
上記実施形態では、鍵2aを押鍵させる場合にソレノイド2bに所定の周期の80%の期間にH出力をしたが、これに限られない。押鍵させる場合のH出力は、所定の周期の80%以上の期間でも良いし、80%以下の期間でも良い。同様に、鍵2aを離鍵させる場合にソレノイド2bに所定の周期の10%の期間にH出力をしたが、これに限られず、離鍵させる場合のH出力は、所定の周期の10%以上の期間でも良いし、10%以下の期間でも良い。
【0090】
上記実施形態では、押鍵要求が入力された場合に、図8のS1の処理によって押鍵中の鍵2aから離鍵候補リソースを選定して該当する鍵2aの離鍵を行い、かつ、図9のS2の処理によって離鍵中の鍵2aから新規押鍵候補リソースを選定して該当する鍵2aの離鍵制御を停止した。しかし、これに限られず、押鍵される指示が入力された場合に、図8のS1の処理のみを行って、押鍵中の鍵2aの離鍵のみを行っても良いし、図9のS2の処理のみを行って、離鍵中の鍵2aの離鍵制御の停止のみを行っても良い。
【0091】
上記実施形態では、最大押鍵数Mpを、最大制御数Mcの2分の1以上の数としたが、これに限られず、最大制御数Mcの2分の1以下の数としても良い。また、上記実施形態では、離鍵できる鍵2aの最大数は設定しなかったが、これに限られず、離鍵できる鍵2aの最大数を設定しても良い。
【0092】
上記実施形態では、図11(a)の処理によって離鍵中の鍵2aのソレノイド2bへの出力を所定の周期の10%のタイミングでH出力からL出力にしたが、これに限られない。離鍵中の鍵2aのソレノイド2bへの出力をH出力からL出力にするタイミングは、所定の周期の10%のタイミングよりも前でも良いし、後でも良い。同様に、図11(b)の処理によって押鍵中の鍵2aのソレノイド2bへの出力を、所定の周期の80%のタイミングでH出力からL出力にしたが、これに限られず、所定の周期の80%のタイミングよりも前でも良いし、後でも良い。
【0093】
上記実施形態では、電子楽器として電子ピアノ1を例示したが、これに限られず、シンセサイザや電子吹奏楽器等、他の電子楽器に本発明を適用しても良い。また、制御プログラム11aをパーソナル・コンピュータや携帯端末等の情報処理装置で実行できるようにしても良い。この場合、パーソナル・コンピュータ等の情報処理装置に鍵盤2を接続すれば良い。
【0094】
上記実施形態では、楽曲データとしてMIDIデータを例示したが、これに限られず、MIDI規格以外の他の楽曲に関するデータを楽曲データとして用いても良い。
【符号の説明】
【0095】
1 電子ピアノ(電子楽器)
11a 制御プログラム(自動操作プログラム)
2 鍵盤
2a 鍵
Np 押鍵数
Mc 最大制御数
Mp 最大押鍵数
Vs ベロシティ
E 仮想エンベロープ
Vc 仮想エンベロープレベル
S31 押鍵数取得手段、最大押鍵数取得手段、押鍵数取得ステップ、最大押鍵数取得ステップ
S32,S56 制御入替手段、制御入替ステップ
S25,S26,S50,S51 エンベロープ算出手段
S42~S46 制御数取得手段
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11