(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】電子楽器、データ処理方法及びデータ処理プログラム
(51)【国際特許分類】
G10H 1/24 20060101AFI20240910BHJP
【FI】
G10H1/24
(21)【出願番号】P 2021194314
(22)【出願日】2021-11-30
【審査請求日】2022-12-05
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100182936
【氏名又は名称】矢野 直樹
(72)【発明者】
【氏名】佐藤 博毅
【審査官】佐久 聖子
(56)【参考文献】
【文献】特開2009-222772(JP,A)
【文献】国際公開第2015/107823(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G10H 1/00- 7/12
G10G 1/00- 7/02
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサを備え、
前記少なくとも1つのプロセッサは、
電子楽器で処理可能な、
実体データを持たないデータ参照型
及び実体データを持つデータ包含型を含む複数のデータ型を有するレジストレーションデータとしての第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付け、
前記選択操作により選択されたデータ型が、前記第2データを参照するための参照情報を含む前記第1データが前記第2データを参照する
内容保証参照型としての第2のデータ参照型のとき、前記第2のデータ参照型で参照される第2データが変更される場合、変更前の前記第2データを複製し、
複製された前記第2データを、前記第2のデータ参照型の前記第1データが参照するように、前記参照情報を変更し、
前記参照情報が変更された前記第1データを記憶部に記憶
し、
前記選択操作により選択されたデータ型が、前記第1データが前記第2データの実体データを含む前記データ包含型のとき、第2データが変更される場合、変更前の前記第2データを複製しない、
電子楽器。
【請求項2】
前記複数のデータ型のうちの1つは、前記第1データが前記第2データを参照する
内容依存参照型としての第1のデータ参照型であり、
前記第1のデータ参照型の前記第1データは、前記第2データを参照するための参照情報を含
み、
前記選択操作により選択されたデータ型が、前記第1のデータ参照型のとき、第2データが変更される場合、変更前の前記第2データを複製しない、
請求項1に記載の電子楽器。
【請求項3】
前記少なくとも1つのプロセッサは、前記ユーザによる所定の操作に応じて、前記記憶部に記憶された、前記データ参照型の前記第1データを、前記データ包含型に変換して外部記憶媒体に保存する、
請求項
1に記載の電子楽器。
【請求項4】
前記少なくとも1つのプロセッサは、
前記外部記憶媒体に記憶された、前記データ包含型の前記第1データに含まれる前記第2データが、前記記憶部に記憶されているか否かを判定し、
前記第2データが前記記憶部に記憶されている場合、前記外部記憶媒体に記憶された、前記データ包含型の前記第1データを、前記記憶部に記憶されている前記第2データを参照する前記データ参照型に変換して、前記記憶部に記憶する、
請求項
3に記載の電子楽器。
【請求項5】
前記第2データはトーンデータである、
請求項1から請求項
4の何れか一項に記載の電子楽器。
【請求項6】
コンピュータに、
電子楽器で処理可能な、
実体データを持たないデータ参照型
及び実体データを持つデータ包含型を含む複数のデータ型を有するレジストレーションデータとしての第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付けさせ、
前記選択操作により選択されたデータ型が、前記第2データを参照するための参照情報を含む前記第1データが前記第2データを参照する
内容保証参照型としての第2のデータ参照型のとき、前記第2のデータ参照型で参照される第2データが変更される場合、変更前の前記第2データを複製
させ、
複製された前記第2データを、前記第2のデータ参照型の前記第1データが参照するように、前記参照情報を変更
させ、
前記参照情報が変更された前記第1データを記憶部
へ記憶させ
、
前記選択操作により選択されたデータ型が、前記第1データが前記第2データの実体データを含む前記データ包含型のとき、第2データが変更される場合、変更前の前記第2データを複製させない、
方法。
【請求項7】
コンピュータに、
電子楽器で処理可能な、
実体データを持たないデータ参照型
及び実体データを持つデータ包含型を含む複数のデータ型を有するレジストレーションデータとしての第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付けさせ、
前記選択操作により選択されたデータ型が、前記第2データを参照するための参照情報を含む前記第1データが前記第2データを参照する
内容保証参照型としての第2のデータ参照型のとき、前記第2のデータ参照型で参照される第2データが変更される場合、変更前の前記第2データを複製させ、
複製された前記第2データを、前記第2のデータ参照型の前記第1データが参照するように、前記参照情報を変更させ、
前記参照情報が変更された前記第1データを記憶部
へ記憶させ
、
前記選択操作により選択されたデータ型が、前記第1データが前記第2データの実体データを含む前記データ包含型のとき、第2データが変更される場合、変更前の前記第2データを複製させない、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書の開示は、電子楽器、データ処理方法及びデータ処理プログラムに関する。
【背景技術】
【0002】
電子楽器で取り扱われるデータには階層構造を持つものがある。この種のデータの一例として、レジストレーションデータが知られている(例えば特許文献1参照)。
【0003】
レジストレーションデータには、例えばトーンデータと呼ばれる音色を示すデータが含まれる。ユーザは、レジストレーションデータを選択し、選択されたレジストレーションデータに従って設定された音色で電子楽器を演奏することができる。
【0004】
レジストレーションデータには、レジストレーションデータ自体がトーンの実体データを含むデータ包含型、及びレジストレーションデータ自体がトーンの実体データを含まないデータ参照型がある。データ参照型のレジストレーションデータには、参照先のトーンデータの番号が記述される。電子楽器は、参照先のトーンデータを読み込んで、レジストレーションデータに従った音色に設定する。データ参照型では、トーンの実体データが含まれない分、レジストレーションデータのデータサイズが小さく抑えられる。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
データ参照型では、複数のレジストレーションデータが1つのトーンデータを共有して参照する。そのため、このトーンデータが変更されると、このトーンデータを参照する全てのレジストレーションデータで音色が変更されることとなる。しかし、この全てのレジストレーションデータで音色が変更されることが望まれているとは限らない。ユーザは、変更された全てのレジストレーションデータを探し出し、対象となるレジストレーションデータの1つ1つに対して意図せずに音色が変更されないようレジストレーションデータを編集する必要がある。このような作業はユーザに大きな負担を強いる。
【0007】
データ包含型では、上記のような意図しない音色の変更は発生しない。しかし、音色を変更する場合、ユーザは、対象のトーンデータを1つ1つ変更する必要がある。このような作業もユーザに大きな負担を強いる。
【0008】
本発明は上記の事情に鑑みてなされたものであり、その目的とするところは、階層構造を持つデータを取り扱いやすくすることができる電子楽器、データ処理方法及びデータ処理プログラムを提供することである。
【課題を解決するための手段】
【0009】
本発明の一実施形態に係る電子楽器は、少なくとも1つのプロセッサを備える。前記少なくとも1つのプロセッサは、電子楽器で処理可能な、実体データを持たないデータ参照型及び実体データを持つデータ包含型を含む複数のデータ型を有するレジストレーションデータとしての第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付け、前記選択操作により選択されたデータ型が、前記第2データを参照するための参照情報を含む前記第1データが前記第2データを参照する内容保証参照型としての第2のデータ参照型のとき、前記第2のデータ参照型で参照される第2データが変更される場合、変更前の前記第2データを複製し、複製された前記第2データを、前記第2のデータ参照型の前記第1データが参照するように、前記参照情報を変更し、前記参照情報が変更された前記第1データを記憶部に記憶し、前記選択操作により選択されたデータ型が、前記第1データが前記第2データの実体データを含む前記データ包含型のとき、第2データが変更される場合、変更前の前記第2データを複製しない。
【発明の効果】
【0010】
本発明の一実施形態によれば、階層構造を持つデータを取り扱いやすくすることができる電子楽器、データ処理方法及びデータ処理プログラムが提供される。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態に係る電子楽器の外観を示す図である。
【
図2】本発明の一実施形態に係る電子楽器の構成を示すブロック図である。
【
図3】レジストレーションデータとトーンデータを説明するための図である。
【
図4】レジストレーションデータのデータ型を例示する図である。
【
図5】レジストレーションディレクトリの一例を示す図である。
【
図6】本発明の一実施形態において電子楽器のプロセッサにより実行されるデータ処理プログラムの処理を示すフローチャートである。
【
図7】
図6のステップS105の編集処理の詳細を示すサブルーチンである。
【
図8】
図6のステップS107の書き込み処理の詳細を示すサブルーチンである。
【
図9】
図6のステップS111の書き込み処理の詳細を示すサブルーチンである。
【
図10】
図6のステップS113の保存処理の詳細を示すサブルーチンである。
【
図11】
図6のステップS115のロード処理の詳細を示すサブルーチンである。
【
図12】
図6のステップS117の自動保存処理の詳細を示すサブルーチンである。
【
図13】
図6のステップS119の自動ロード処理の詳細を示すサブルーチンである。
【発明を実施するための形態】
【0012】
図面を参照して、本発明の一実施形態に係る電子楽器について詳細に説明する。
【0013】
図1は、本発明の一実施形態に係る電子楽器1の外観を示す図である。
図2は、電子楽器1の構成を示すブロック図である。電子楽器1は、例えばシンセサイザ音源を内蔵した電子キーボードである。電子楽器1は、電子キーボード以外の電子鍵盤楽器であってもよく、また、電子打楽器、電子管楽器、電子弦楽器であってもよい。
【0014】
電子楽器1は、ハードウェア構成として、プロセッサ10、RAM(Random Access Memory)11、フラッシュROM(Read Only Memory)12、USB(Universal Serial Bus)インタフェース13、LCD(Liquid Crystal Display)14、LCDコントローラ15、鍵盤16、操作部17、キースキャナ18、パルスカウンタ19、A/Dコンバータ20、音源LSI(Large Scale Integration)21、D/Aコンバータ22、アンプ23及びスピーカ24を備える。電子楽器1の各部は、バス25により接続される。
【0015】
プロセッサ10は、フラッシュROM12に格納されたプログラム及びデータを読み出し、RAM11をワークエリアとして用いることにより、電子楽器1を統括的に制御する。
【0016】
プロセッサ10は、例えばシングルプロセッサ又はマルチプロセッサであり、少なくとも1つのプロセッサを含む。複数のプロセッサを含む構成とした場合、プロセッサ10は、単一の装置としてパッケージ化されたものであってもよく、電子楽器1内で物理的に分離した複数の装置で構成されてもよい。
【0017】
プロセッサ10は、機能ブロックとして、電子楽器で処理可能な複数のデータ型を有する第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付ける選択操作受付部100aと、選択操作により選択されたデータ型に基づいて、第1データを記憶部に記憶するデータ記憶部100bと、を備える。これらの機能ブロックの動作により、電子楽器1において階層構造を持つデータが取り扱いやすくなる。本発明の一実施形態に係るデータ処理方法及びデータ処理プログラムは、プロセッサ10の機能ブロックに各種処理を実行させることで実現される。プロセッサ10は、上記記憶部の一例であるフラッシュROM12にアクセス可能なコンピュータの一例である。
【0018】
RAM11は、データやプログラムを一時的に保持する。RAM11には、フラッシュROM12から読み出されたプログラムやデータ、その他、通信に必要なデータが保持される。
【0019】
フラッシュROM12は、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)等の不揮発性の半導体メモリであり、二次記憶装置又は補助記憶装置としての役割を担う。フラッシュROM12には、データ処理プログラム120をはじめとする、プロセッサ10が各種処理を行うために使用するプログラム及びデータが格納されている。
【0020】
本実施形態において、プロセッサ10の各機能ブロックは、ソフトウェアであるデータ処理プログラム120により実現される。なお、プロセッサ10の各機能ブロックは、一部又は全部が専用の論理回路等のハードウェアにより実現されてもよい。
【0021】
USBインタフェース13は、外部記憶媒体の一例であるUSBフラッシュメモリ2を接続可能なインタフェースである。
【0022】
LCD14は表示装置の一例である。LCD14は、LCDコントローラ15により駆動される。プロセッサ10による制御信号に従ってLCDコントローラ15がLCD14を駆動すると、LCD14に、制御信号に応じた画面が表示される。LCD14は、有機EL(Electro Luminescence)、LED(Light Emitting Diode)等の表示装置に置き換えてもよい。LCD14は、タッチパネルであってもよい。この場合、タッチパネルが入力装置と表示装置を兼ねてもよい。
【0023】
鍵盤16は、複数の演奏操作子として複数の白鍵及び黒鍵を有する鍵盤である。各鍵は、それぞれ異なる音高と対応付けられている。
【0024】
操作部17は、メカニカル方式、静電容量無接点方式、メンブレン方式等のスイッチ、ボタン、ノブ、ロータリエンコーダ、ホイール、タッチパネル等の操作子を含む。
図2では、操作部に含まれる操作子の一例として、スイッチパネル17a、ロータリエンコーダ17b、ホイール17cを示す。
【0025】
より具体的な例として、操作部17には、ピッチベンドホイール、モジュレーションホイール、ボリュームノブ、ファンクションロータリエンコーダ、レイヤロータリエンコーダ、パラメータロータリエンコーダ、データエントリセクション、レジストレーションセクション170が含まれる。
【0026】
ピッチベンドホイールは、ピッチベンド効果を発生させるための操作子である。モジュレーションホイールは、ビブラート等の音の揺れの効果を発生させるための操作子である。ボリュームノブは、音量を調節するための操作子である。ファンクションロータリエンコーダは、設定変更する機能を選択するための操作子である。レイヤロータリエンコーダは、設定変更するレイヤを選択するための操作子である。パラメータロータリエンコーダは、選択された機能の中に含まれるパラメータを選択するための操作子である。データエントリセクションは、選択されたパラメータの値を変更するためのロータリエンコーダ並びに「+(プラス)」キー及び「-(マイナス)」キーを含む。レジストレーションセクション170は、レジストレーションデータを選択するため操作子である。
【0027】
図1の拡大図に示されるように、レジストレーションセクション170は、「BANK+」キー172及び「BANK-」キー174並びに「1」~「9」及び「0」の計10個のナンバボタン176a~176jを備える。
【0028】
本実施形態では、200個のレジストレーションデータがフラッシュROM12に保存されている。200個のレジストレーションデータは、「BANK+」キー172及び「BANK-」キー174により選択可能な計20個のグループに分けられて管理される。各グループには、10個のレジストレーションデータが保存されている。ユーザは、「BANK+」キー172及び「BANK-」キー174を操作することによりグループを選択し、ナンバボタン176a~176jの何れかを押すことにより、選択されたグループのなかから1つのレジストレーションデータを選択することができる。選択されたグループやレジストレーションデータの情報は例えばLCD14に表示される。
【0029】
キースキャナ18は、鍵盤16に対する押鍵及び離鍵並び操作部17に含まれる一部の操作子に対する操作を監視する。キースキャナ18は、例えばユーザによる押鍵操作を検出すると、押鍵イベント情報をプロセッサ10に出力する。押鍵イベント情報には、押鍵操作に係る鍵の音高の情報(キーナンバ)が含まれる。キーナンバは、鍵番号やMIDIキー、ノートナンバと呼ばれることもある。
【0030】
なお、鍵の押鍵速度(ベロシティ値)を計測する手段を別途設け、ベロシティ値を押鍵イベント情報に含ませてもよい。押鍵速度計測手段としては、例えば各鍵について2つ乃至3つの接点スイッチを設け、鍵が押される際の各接点スイッチが導通する時間の差により、計測する手段を採用することができる。ベロシティ値は、押鍵操作の強さを示す値ともいえる。
【0031】
パルスカウンタ19は、各種ロータリエンコーダ(
図2では「ロータリエンコーダ17b」と記す。)の動きを検出するデバイスである。
【0032】
A/Dコンバータ20は、各種ホイール(
図2では「ホイール17c」と記す。)のボリューム位置に対応するアナログ電圧をデジタルデータに変換するデバイスである。
【0033】
プロセッサ10は、フラッシュROM12に記憶された複数の波形データのなかから、対応する波形データの読み出しを音源LSI21に指示する。読み出し対象の波形データは、例えば、ユーザによる操作によって選択された音色及び押鍵イベント情報に応じて決まる。
【0034】
音源LSI21は、プロセッサ10の指示のもと、フラッシュROM12から読み出した波形データに基づいて楽音を生成する。音源LSI21は、例えば128のジェネレータセクションを備えており、最大で128の楽音を同時に発音することができる。なお、本実施形態では、プロセッサ10と音源LSI21とが別々の装置として構成されるが、別の実施形態では、プロセッサ10と音源LSI21とが1つのプロセッサとして構成されてもよい。
【0035】
音源LSI21により生成された楽音のデジタル音声信号は、D/Aコンバータ22によりアナログ信号に変換された後、アンプ23により増幅されて、スピーカ24に出力される。
【0036】
本実施形態では、プロセッサ10の機能ブロックの動作により、電子楽器1において階層構造を持つデータが取り扱いやすくなる。本実施形態では、階層構造を持つデータ(第1データ)の一例として、レジストレーションデータを挙げる。概略的には、レジストレーションデータは、自身よりも下位のデータを使用するように階層構造で記述される。本実施形態では、レジストレーションデータの下位のデータ(第2データ)の一例として、トーンデータを挙げる。フラッシュROM12は、電子楽器1で処理可能なレジストレーションデータを記憶する記憶部として動作する。
【0037】
レジストレーションデータは、演奏や音響の全体の動作に関わる設定をまとめた環境設定データである。本実施形態では、レジストレーションデータにより4つの音色(言い換えると、4つのトーンデータ)を同時に指定することができる。ユーザは、このようなレジストレーションを使用することにより、最大で4つの音色が重なるレイヤ演奏を行うことができる。
【0038】
図3は、レジストレーションデータとトーンデータを説明するための図である。
図3では、ワークエリアであるRAM11に展開された1つのレジストレーションデータ230と、フラッシュROM12に記憶されたデータ群を示す。
【0039】
図3に示されるように、フラッシュROM12に記憶されたデータ群は、トーンディレクトリ200、複数のトーンデータ210、レジストレーションディレクトリ220及び複数のレジストレーションデータ230を含む。
【0040】
トーンデータ210は、音色に関わるパラメータの集まりである。トーンデータ210のデータサイズは、例えば1つ当たり200バイトである。フラッシュROM12に記憶可能なトーンデータ210の数は、例えば最大で1,000である。フラッシュROM12に記憶されるトーンデータ210の数は、新規作成又は複製若しくは削除されることによって増減する。
【0041】
図3に示されるように、RAM11に展開されたレジストレーションデータ230は、共通パラメータ領域CPA、トーンディレクトリ領域TDA、及びレイヤ1~4に対応する、最大で4つのトーンデータの実体データを持つ。以下、便宜上、トーンデータの実体データを「トーン実体データ」と記す。
【0042】
フラッシュROM12には、複数のデータ型のレジストレーションデータ230が記憶される。
図4に、フラッシュROM12に記憶されたレジストレーションデータ230のデータ型を例示する。
【0043】
図4の符号Aに示されるように、フラッシュROM12には、レイヤ1~4に対応する計4つのトーン実体データを持つレジストレーションデータ230が記憶される。トーン実体データを持つレイヤのデータ型を「データ包含型」と記す。便宜上、レイヤ1~4の全てのレイヤに対応するトーン実体データを持つレジストレーションデータ230を「全包括型のレジストレーションデータ230」と記す。
【0044】
全包含型のレジストレーションデータ230をRAM11に展開する場合、プロセッサ10は、レジストレーションデータ230そのものをRAM11に複製する。これにより、ユーザは、レジストレーションデータ230を使用した演奏を行うことができる。
【0045】
図4の符号Bに示されるように、フラッシュROM12には、1つ以上3つ以下のトーン実体データを持つ、データ包含型とデータ参照型とが混在したレジストレーションデータ230が記憶される。データ参照型は、トーン実体データを持たないレイヤのデータ型である。データ参照型では、トーン実体データを持たない代わりに、参照先であるトーンデータ210に割り当てられたトーン番号がトーンディレクトリ領域TDAに記述される。トーンディレクトリ領域TDAに記述されたトーン番号は、第2データの一例であるトーンデータ210を参照するための参照情報である。
【0046】
ここで、トーンディレクトリ領域TDAは、トーン実体データを持つか否か及び参照先のトーンデータ210を示すトーン番号を管理する。具体的には、トーンディレクトリ領域TDAは、レイヤ毎に0~1000の値を対応付けて保持する。値0は、トーン実体データを持つことを示す。値1~1000は、フラッシュROM12に記憶されたトーンデータ210のトーン番号を示す。
【0047】
図4の符号Bの例において、値「00990」がトーンディレクトリ領域TDAに記述されている場合を考える。この値は、レイヤ1~4の情報を順に並べたものとなっている。具体的には、先頭の値0と続く値0は、それぞれ、レイヤ1、2の情報を示す。値99は、レイヤ3の情報を示す。最後の値0は、レイヤ4の情報を示す。この例では、レジストレーションデータ230において、レイヤ1、2及び4に対応するトーン実体データが含まれており、且つ、レイヤ3において参照先がトーン番号99のトーンデータ210であることを示す。
【0048】
このように、
図4の符号Bで示されるレジストレーションデータ230は、データ参照型とデータ包含型とが混在したレジストレーションデータ230となっている。便宜上、このようなレジストレーションデータ230を「混在型のレジストレーションデータ230」と記す。
【0049】
混在型のレジストレーションデータ230をRAM11に展開する場合、プロセッサ10は、レジストレーションデータ230そのものをRAM11に複製する。プロセッサ10は、レジストレーションデータ230の使用中、データ参照型のレイヤについては、トーンデータ210をフラッシュROM12から必要に応じて読み込むこととなる。
【0050】
なお、プロセッサ10は、混在型のレジストレーションデータ230をRAM11に展開する際、トーンディレクトリ領域TDAに記述されたトーン番号が示すトーンデータ210をフラッシュROM12から読み込んで、対応するレイヤに複製してもよい。これにより、RAM11上では、レジストレーションデータ230が全包含型と同じ状態となる。そのため、プロセッサ10は、RAM11に展開されたレジストレーションデータ230を読み込むだけで(別の観点では、フラッシュROM12を読み込むことなく)レジストレーションデータ230を使用することができる。この結果、処理が高速化する。
【0051】
図4の符号Cに示されるように、フラッシュROM12には、トーン実体データを1つも持たない、データ参照型のみのレジストレーションデータ230が記憶される。便宜上、データ参照型のみのレジストレーションデータ230を「全参照型のレジストレーションデータ230」と記す。
【0052】
全参照型のレジストレーションデータ230をRAM11に展開する場合、プロセッサ10は、レジストレーションデータ230そのものをRAM11に複製する。プロセッサ10は、レジストレーションデータ230の使用中、各レイヤについて、トーンデータ210をフラッシュROM12から必要に応じて読み込むこととなる。
【0053】
トーン実体データを幾つ持つかによって、レジストレーションデータ230のデータサイズは異なる。すなわち、レジストレーションデータ230は、可変長のデータである。例示的には、トーン実体データを1つも持たない全参照型のレジストレーションデータ230のデータサイズは100バイトである。トーン実体データを4つ持つ全包括型のレジストレーションデータ230のデータサイズは900バイトである。
【0054】
本実施形態では、フラッシュROM12に割り当てられたレジストレーションデータ230の領域は、100,000バイトである。そのため、全てのレジストレーションデータ230が全包含型である場合、フラッシュROM12には最大で111個のレジストレーションデータ230が記憶可能である。但し、データの効率化に鑑みて、データ参照型が適用されるケースも多いと考えられる。そのため、本実施形態では、フラッシュROM12に記憶可能なレジストレーションデータ230の最大数を200個とし、全てのレジストレーションデータ230に含ませることができるトーン実体データの最大数を400個とする。最大で100個の全包括型のレジストレーションデータ230をフラッシュROM12に記憶させることができる。
【0055】
フラッシュROM12では、全てのデータがファイルシステムによって管理される。そのため、複数のトーンデータ210の各々は1つのファイルとして扱われる。複数のレジストレーションデータ230の各々も1つのファイルとして扱われる。すなわち、これらのデータは、アドレスでなくファイル名で管理される。
【0056】
トーンディレクトリ200は、各トーンデータ210に割り当てられたトーン番号とファイル名とを関連付けるためのディレクトリである。レジストレーションディレクトリ220は、各レジストレーションデータ230に割り当てられた番号(以下「レジストレーション番号」と記す。)とファイル名とを関連付けるためのディレクトリである。
【0057】
図5は、レジストレーションディレクトリ220の一例を示す図である。レジストレーションディレクトリ220は、レジストレーションデータ230のレジストレーション番号、ファイル名、含まれるトーン実体データ数及びデータサイズ(単位:バイト)を関連付けて管理する。
【0058】
複数のレジストレーションデータ230が共有して参照する1つのトーンデータ210を変更する場合を考える。この場合、変更されるトーンデータ210を参照する全てのレジストレーションデータ230で音色が変更されることとなる。しかし、これらのレジストレーションデータ230のなかには、ユーザが音色を変更したくないものが混じっている場合もある。この場合、ユーザは、変更された全てのレジストレーションデータ230を探し出し、対象となるレジストレーションデータ230の1つ1つに対して意図せずに音色が変更されないようレジストレーションデータ230を編集する必要がある。このような作業はユーザに大きな負担を強いる。
【0059】
レジストレーションデータ230を互換性のある別の電子楽器に複製したり他のユーザに渡したりネットワーク上にアップロードして共有したりする場合を考える。これらの作業を行う際、レジストレーションデータ230が参照するトーンデータ210も漏れなく複製等する必要がある。しかし、ユーザにとっては、このような作業は煩わしい。また、レジストレーションデータ230を使用するためには、別個独立したデータであるトーンデータ210とレジストレーションデータ230とをセットで管理しなければならない。そのため、データ参照型を含む混在型のレジストレーションデータ230や全参照型のレジストレーションデータ230は、ポータビリティの点では使い勝手が悪い。
【0060】
これに対し、全包括型のレジストレーションデータ230では、トーンデータ210を複製等する作業が不要であり、また、別のデータであるトーンデータ210をセットで管理する必要もない。例えば、レジストレーションデータ230単体を別の電子楽器に複製するだけで、そのレジストレーションデータ230を別の電子楽器で使用できる。そのため、全包括型のレジストレーションデータ230は、ポータビリティの点で優れている。
【0061】
しかし、複数のレジストレーションデータ230が1つのトーンデータ210を共有して参照するデータ構造でないことから、例えば、複数のレジストレーションデータ230が同一のトーンデータ210を含む場合や、単一のレジストレーションデータ230が同一のトーンデータ210を複数含む場合もある。そのため、データを効率的に管理するという面では、データ参照型よりも劣る。データサイズが大きいためメモリを圧迫し、また、レジストレーションデータ230の切替時にデータ転送量が多いことによる処理負荷が発生し得る。
【0062】
そこで、本実施形態では、以下に説明されるデータ処理プログラム120を実行する。データ処理プログラム120の実行により、電子楽器1においてレジストレーションデータ230が取り扱いやすくなる。
【0063】
図6は、本発明の一実施形態においてプロセッサ10により実行されるデータ処理プログラム120の処理を示すフローチャートである。例えば、ユーザによりファンクションロータリエンコーダが操作されると、データ処理プログラム120の実行が開始される。
【0064】
プロセッサ10は、ファンクションロータリエンコーダに対する操作により設定された機能を検出する(ステップS101)。
【0065】
プロセッサ10は、ステップS101にて検出された機能がレジストレーションデータ230の選択機能か否かを判定する(ステップS102)。
【0066】
ステップS101にて検出された機能がレジストレーションデータ230の選択機能である場合(ステップS102:YES)、プロセッサ10は、レジストレーションデータ230の選択処理を実行する(ステップS103)。
【0067】
具体的には、プロセッサ10は、レジストレーションセクション170に対する操作を受け付ける。ユーザは、例えば「BANK+」キー172又は「BANK-」キー174を押すことにより、レジストレーションデータ230を管理するバンクを選択することができる。選択中のバンクは、LCD14に表示される。ユーザがナンバボタン176a~176jの何れか1つを押すと、レジストレーションデータ230に対する選択が確定する。
【0068】
レジストレーションデータ230に対する選択が確定すると、プロセッサ10は、対応するレジストレーション番号を取得する。プロセッサ10は、取得されたレジストレーション番号が割り当てられたレジストレーションデータ230(言い換えると、選択操作により選択されたレジストレーションデータ230)をフラッシュROM12から読み込んでRAM11に転送して展開し、本フローチャートの処理を終了させる。
【0069】
ステップS101にて検出された機能がレジストレーションデータ230の編集機能である場合(ステップS104:YES)、プロセッサ10は、レジストレーションデータ230を編集する編集処理を実行する(ステップS105)。編集対象のレジストレーションデータ230は、例えば選択機能で選択されてRAM11上に展開されたレジストレーションデータ230である。
【0070】
ユーザは、操作部17を操作することにより、レジストレーションデータ230の共通パラメータ領域CPAで定義されるパラメータを編集することができる。編集可能なパラメータは、例えば、レジストレーションデータ230のファイル名、モード、トーン番号である。
【0071】
共通パラメータ領域CPAでは、各レイヤ1~4のモードが定義される。各レイヤ1~4のモードは、各レイヤ1~4に対応するトーンのデータ型を示す。モードが示すデータ型には、2つのデータ参照型と1つのデータ包含型がある。データ参照型の1つは、内容依存参照型(第1のデータ参照型)である。もう1つのデータ参照型は、内容保証参照型(第2のデータ参照型)である。モード0は、内容依存参照型を示す。モード1は、内容保証参照型を示す。モード2は、データ包含型を示す。
【0072】
モードの値として「0012」が共通パラメータ領域CPAに記述されている場合を考える。この値は、レイヤ1~4の情報を順に並べたものとなっている。具体的には、先頭の値0と続く値0は、それぞれ、レイヤ1、2の情報を示す。値1は、レイヤ3の情報を示す。値2は、レイヤ4の情報を示す。この例では、レイヤ1及び2が内容依存参照型として定義され、レイヤ3が内容保証参照型として定義され、レイヤ4がデータ包含型として定義される。
【0073】
複数のレジストレーションデータ230が共有して参照するトーンデータ210の内容が変更された場合を考える。この場合、このトーンデータ210を参照先として記述した全てレジストレーションデータ230のレイヤのうち、内容依存参照型として定義されたレイヤに関しては、トーンディレクトリ領域TDAにて参照先として記述されたトーン番号が変更されない。そのため、このようなレイヤを含むレジストレーションデータ230は、トーンデータ210の変更に伴う音色の変更の影響を受ける。
【0074】
これに対し、上記のトーンデータ210を参照先として記述した全てのレジストレーションデータ230のレイヤのうち、内容保証参照型として定義されたレイヤに関しては、トーンディレクトリ領域TDAにて参照先として記述されたトーン番号が書き換えられる。
【0075】
具体的には、トーンデータ210の内容が変更されて保存される際、プロセッサ10は、変更前のトーンデータ210の複製を生成して新たなトーン番号を割り当てて、フラッシュROM12に保存する。内容保証参照型として定義されたレイヤについては、トーンディレクトリ領域TDAに記述されたトーン番号が、複製されたトーンデータ210に割り当てられた新規のトーン番号に書き換えられる。このような書換処理を行うため、内容保証参照型として定義されたレイヤでは、参照先のトーンデータ210の内容が変更前と変わらない。そのため、このようなレジストレーションデータ230では、トーンデータ210の変更に伴う音色の変更の影響を受けない。
【0076】
このように、プロセッサ10は、内容保証参照型(第2のデータ参照型)で参照されるトーンデータ210(第2データ)が変更されると、変更前のトーンデータ210を複製し、複製されたトーンデータ210を、内容保証参照型のレジストレーションデータ230が参照するように、参照先を示すトーン番号(参照情報)を変更する。
【0077】
図7は、
図6のステップS105の編集処理の詳細を示すサブルーチンである。
図7に示されるように、プロセッサ10は、共通パラメータ領域CPAで定義されるパラメータを確認する(ステップS201)。
【0078】
ユーザによりファイル名を変更する操作が行われると(ステップS202:YES)、プロセッサ10は、ファイル名を更新する(ステップS203)。具体的には、ステップS203において、プロセッサ10は、共通パラメータ領域CPAで定義されるファイル名を更新するとともに、レジストレーションディレクトリ220に登録されている編集対象のレジストレーションデータ230のファイル名も更新する。プロセッサ10は、更新されたレジストレーションデータ230をフラッシュROM12に保存して、
図6のフローチャートの処理を終了させる。
【0079】
ユーザによりレイヤのモードを変更する操作が行われると(ステップS202:NO及びステップS204:YES)、プロセッサ10は、データ参照型(内容依存参照型又は内容保証参照型)からデータ包含型への変更操作であるか否かを判定する(ステップS205)。
【0080】
データ参照型からデータ包含型への変更操作である場合(ステップS205:YES)、プロセッサ10は、対応するレイヤをデータ参照型からデータ包含型に変更する(ステップS206)。
【0081】
具体的には、ステップS206において、プロセッサ10は、トーンディレクトリ領域TDAに記述されたトーン番号が示すトーンデータ210をフラッシュROM12から読み込んで、対応するレイヤに複製するとともに、トーンディレクトリ領域TDAに記述された、このレイヤに対応する値をゼロに更新し、且つ変更後のモード(すなわちデータ包含型を示す値2)を共通パラメータ領域CPAに記述する。プロセッサ10は、更新されたレジストレーションデータ230をフラッシュROM12に保存して、
図6のフローチャートの処理を終了させる。
【0082】
データ包含型からデータ参照型への変更操作である場合(ステップS205:NO及びステップS207:YES)、プロセッサ10は、対応するレイヤをデータ包含型からデータ参照型に変更する(ステップS208)。
【0083】
具体的には、ステップS208において、プロセッサ10は、トーンディレクトリ領域TDAに参照先を示すトーン番号を記述するとともに、対応するレイヤのトーン実体データを削除し、且つ変更後のモード(すなわち内容依存参照型を示す値0又は内容保証参照型を示す値1)を共通パラメータ領域CPAに記述する。プロセッサ10は、更新されたレジストレーションデータ230をフラッシュROM12に保存して、
図6のフローチャートの処理を終了させる。なお、トーンディレクトリ領域TDAに記述されるトーン番号は、例えばユーザによる操作で指定される。
【0084】
なお、モードが内容依存参照型から内容保証参照型又は内容保証参照型から内容依存参照型に変更された場合、プロセッサ10は、モードの値を0から1又は1から0に変更してフラッシュROM12に保存し、
図6のフローチャートの処理を終了させる。
【0085】
このように、
図6のステップS105の編集処理において、プロセッサ10は、選択可能な複数の第1データ(レジストレーションデータ230)のデータ型(すなわち、データ包含型、内容依存参照型及び内容保証参照型)のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付ける選択操作受付部100aとして動作し、且つ選択操作により選択されたデータ型に基づいて、第1データ(レジストレーションデータ230)を記憶部の一例であるフラッシュROM12に記憶するデータ記憶部100bとして動作する。
【0086】
ユーザは、モードを変更するという簡単な操作だけで、階層構造を持つ複雑なレジストレーションデータ230を、例えば自身が取り扱いやすいデータ型に変更することができる。
【0087】
ユーザによりトーン番号を変更する操作が行われると(ステップS204:NO及びステップS209:YES)、プロセッサ10は、対応するレイヤのモードがデータ包含型であるか否かを判定する(ステップS210)。データ包含型であれば(ステップS210:YES)、プロセッサ10は、このまま、
図6のフローチャートの処理を終了させる。
【0088】
対応するレイヤのモードがデータ参照型である場合(ステップS210:NO)、ステップS211において、プロセッサ10は、トーンディレクトリ領域TDAに記述された、このレイヤに対応するトーン番号を、変更操作により指定されたトーン番号に更新する。プロセッサ10は、更新されたレジストレーションデータ230をフラッシュROM12に保存して、
図6のフローチャートの処理を終了させる。
【0089】
ファイル名、モード、トーン番号以外のパラメータに対する変更操作が行われると(ステップS209:NO)、ステップS212において、プロセッサ10は、この変更操作に応じた処理を実行して、
図6のフローチャートの処理を終了させる。
【0090】
ここでは、編集処理において、更新後のレジストレーションデータ230をフラッシュROM12に保存することを説明したが、本発明に係る処理はこれに限らない。更新後のレジストレーションデータ230は、次に説明するステップS107の書き込み処理を経て、フラッシュROM12に保存されてもよい。
【0091】
ステップS101にて検出された機能がレジストレーションデータ230の書き込み機能である場合(ステップS106:YES)、プロセッサ10は、レジストレーションデータ230をフラッシュROM12に書き込む書き込み処理を実行する(ステップS107)。書き込み対象のレジストレーションデータ230は、例えば、新規作成等されてRAM11上に保持されたレジストレーションデータ230であったり、ステップS105の編集処理による編集後のレジストレーションデータ230であったりする。
【0092】
図8は、
図6のステップS107の書き込み処理の詳細を示すサブルーチンである。
図8に示されるように、プロセッサ10は、書き込み先のレジストレーション番号を選択する(ステップS301)。レジストレーション番号は、ユーザによる操作で指定された番号であってもよく、また、プロセッサ10が自動的に決めた番号であってもよい。
【0093】
プロセッサ10は、書き込み対象のレジストレーションデータ230に含まれるトーン実体データの数Aを取得する(ステップS302)。
【0094】
プロセッサ10は、書き込み先のレジストレーション番号に対応するレジストレーションデータ230に含まれるトーン実体データの数Bを取得する(ステップS303)。なお、レジストレーション番号に対応するレジストレーションデータ230が登録されていない場合、ここで取得されるトーン実体データの数Bはゼロである。
【0095】
プロセッサ10は、フラッシュROM12全体に記憶されたトーン実体データの数Cを取得する(ステップS304)。
【0096】
プロセッサ10は、ステップS302にて取得された数AとステップS304にて取得された数Cとの合計値からステップS303にて取得された数Bを減算した値が400(すなわち、全てのレジストレーションデータ230に含ませることができるトーン実体データの最大数)を超えるか否かを判定する(ステップS305)。
【0097】
上記の値が400を超えない場合(ステップS305:NO)、プロセッサ10は、書き込み対象のレジストレーションデータ230をフラッシュROM12に保存して(ステップS306)、
図6のフローチャートの処理を終了させる。これにより、書き込み先のレジストレーション番号に対応するレジストレーションデータ230が更新される。
【0098】
上記の値が400を超える場合(ステップS305:YES)、プロセッサ10は、エラーメッセージを表示して(ステップS307)、
図6のフローチャートの処理を終了させる。例示的には、「MEMORY FULL」といったエラーメッセージが表示される。書き込み対象のレジストレーションデータ230を書き込む場合、ユーザは、例えば、フラッシュROM12内の一部のレジストレーションデータ230を外部記憶媒体に移動させることにより、フラッシュROM12に記憶されたトーンデータ210の数を減らす必要がある。
【0099】
ステップS101にて検出された機能がトーンデータ210の編集機能である場合(ステップS108:YES)、プロセッサ10は、トーンデータ210を編集する編集処理を実行する(ステップS109)。編集対象のトーンデータ210は、例えば、選択機能で選択されてRAM11上に展開されたレジストレーションデータ230のなかから、ユーザによる操作で指定されたレイヤに対応するトーンデータ210である。
【0100】
編集対象がトーン実体データとしてレジストレーションデータ230に含まれる場合(すなわちデータ包含型である場合)、プロセッサ10は、このトーン実体データを、ユーザによる操作に応じて変更する。トーン実体データがなく参照先のトーン番号が記述される場合(すなわちデータ参照型である場合)、プロセッサ10は、参照先のトーン番号が示すトーンデータ210をフラッシュROM12から読み込んで、対応するレイヤに複製し、このトーンデータ210を、ユーザによる操作に応じて変更する。プロセッサ10は、変更後のトーンデータ210をフラッシュROM12に保存する。
【0101】
ステップS101にて検出された機能がトーンデータ210の書き込み機能である場合(ステップS110:YES)、プロセッサ10は、トーンデータ210をフラッシュROM12に書き込む書き込み処理を実行する(ステップS111)。書き込み対象のトーンデータ210は、例えば、選択機能で選択されてRAM11上に展開されたレジストレーションデータ230のなかから、ユーザによる操作で指定されたレイヤに対応するトーンデータ210である。
【0102】
図9は、
図6のステップS111の書き込み処理の詳細を示すサブルーチンである。
図9に示されるように、プロセッサ10は、書き込み先のトーン番号を選択する(ステップS401)。トーン番号は、ユーザによる操作で指定された番号であってもよく、また、プロセッサ10が自動的に決めた番号であってもよい。
【0103】
プロセッサ10は、フラッシュROM12に記憶されるトーンデータ210のなかから、ステップS401にて選択されたトーン番号を参照先として記述した内容保証参照型のレイヤを含むレジストレーションデータ230を検索する(ステップS402)。
【0104】
プロセッサ10は、検索の結果、該当するレジストレーションデータ230が見つかったか否かを判定する(ステップS403)。該当するレジストレーションデータ230が見つからなかった場合(ステップS403:NO)、プロセッサ10は、書き込み対象のトーンデータ210をフラッシュROM12に保存して(ステップS404)、
図6のフローチャートの処理を終了させる。これにより、書き込み先のトーン番号に対応するトーンデータ210がフラッシュROM12に保存される。
【0105】
該当するレジストレーションデータ230が見つかった場合(ステップS403:YES)、プロセッサ10は、フラッシュROM12のなかから未使用のトーン番号(すなわち、トーンデータ210が割り当てられていないトーン番号)を検索し、検索の結果見つかったトーン番号を取得する(ステップS405)。取得されたトーン番号は、値Eとして保持される。未使用のトーン番号が見つからなかった場合、値Eは、-1に設定される。
【0106】
値Eが-1でなければ(ステップS406:NO)、プロセッサ10は、ステップS401にて選択されたトーン番号が示すトーンデータ210を複製し、複製したトーンデータ210を、値Eが示すトーン番号のトーンデータ210として、フラッシュROM12に保存する(ステップS407)。
【0107】
プロセッサ10は、ステップS402における検索の結果見つかったレジストレーションデータ230のなかから、該当する全てのレイヤ(すなわち、ステップS401にて選択されたトーン番号を参照先として記述した全ての内容保証参照型のレイヤ)に対し、その参照先のトーン番号を、値Eが示すトーン番号に更新する(ステップS408)。次いで、プロセッサ10は、書き込み対象のトーンデータ210を、ステップS401にて選択されたトーン番号のトーンデータ210として、フラッシュROM12に保存する(ステップS404)。
【0108】
このように、内容保証参照型として定義されたレイヤについては、トーンディレクトリ領域TDAに記述されたトーン番号が、複製されたトーンデータ210に割り当てられた新規のトーン番号に書き換えられる。このような書換処理を行うため、参照先のトーンデータ210の内容が変更前と変わらない。そのため、このようなレジストレーションデータ230では、トーンデータ210の変更に伴う音色の変更の影響を受けない。ユーザは、レジストレーションデータ230に対し、意図しない音色の変更を避けるための煩雑な編集作業を行う必要がない。
【0109】
なお、書き込み対象のトーンデータ210をフラッシュROM12に書き込む結果、トーン実体データが保存可能な最大数である400個を超える場合、プロセッサ10は、ステップS408の処理を実行することなく、
図6のステップS107の書き込み処理と同様に、エラーメッセージを表示して、
図6のフローチャートの処理を終了させる。また、ステップS406において値Eが-1であれば(ステップS406:YES)、プロセッサ10は、書き込み対象のトーンデータ210を書き込む領域がフラッシュROM12にないことを理由にエラーメッセージを表示して(ステップS409)、
図6のフローチャートの処理を終了させる。
【0110】
次に、電子楽器1に接続された外部記憶媒体(例えばUSBフラッシュメモリ2)を使用してトーンデータ210やレジストレーションデータ230を取り扱う際の操作について説明する。
【0111】
ステップS101にて検出された機能がレジストレーションデータ230の保存機能である場合(ステップS112:YES)、プロセッサ10は、フラッシュROM12に記憶されたレジストレーションデータ230を外部記憶媒体に保存する保存処理を実行する(ステップS113)。保存対象のレジストレーションデータ230は、例えばユーザによる操作で指定されたレジストレーションデータ230である。
【0112】
図10は、
図6のステップS113の保存処理の詳細を示すサブルーチンである。
図10に示されるように、プロセッサ10は、保存先の外部記憶媒体に正常にアクセスできるか否かを判定する(ステップS501)。例えば、保存先の外部記憶媒体が電子楽器1に接続されていなければ、正常なアクセスが行えない。この場合(ステップS501:NO)、プロセッサ10は、エラーメッセージを表示して(ステップS502)、
図6のフローチャートの処理を終了させる。
【0113】
保存先の外部記憶媒体に正常にアクセスできる場合(ステップS501:YES)、プロセッサ10は、保存対象のレジストレーションデータ230のファイル名を取得するとともに(ステップS503)レジストレーション番号を取得する(ステップS504)。
【0114】
プロセッサ10は、ステップS504にて取得されたレジストレーション番号が示すレジストレーションデータ230のイメージファイルを、ステップS503にて取得されたファイル名で、外部記憶媒体に保存する(ステップS505)。
【0115】
外部記憶媒体への書き込み中、外部記憶媒体の空き領域が不足すると、エラーが発生する。このようなエラーが発生すると(ステップS506:YES)、プロセッサ10は、エラーメッセージを表示して(ステップS507)、外部記憶媒体への書き込みをキャンセルし、
図6のフローチャートの処理を終了させる。このようなエラーが発生しなければ(ステップS506:NO)、レジストレーションデータ230は、外部記憶媒体に正常に保存される。なお、同一ファイル名のレジストレーションデータ230が外部記憶媒体に既に保存されている場合、上書きで保存される。
【0116】
ユーザは、レジストレーションデータ230の保存機能を利用することにより、フラッシュROM12に記憶されたレジストレーションデータ230を、データ型を維持したまま、外部記憶媒体に保存することができる。一例として、ユーザは、データサイズの小さいデータ参照型のレジストレーションデータ230を、そのままのデータ型で外部記憶媒体に保存することができる。ユーザにとって、データ型が維持される方がレジストレーションデータ230を取り扱いやすい場合、レジストレーションデータ230の保存機能は有用である。
【0117】
ステップS101にて検出された機能がレジストレーションデータ230のロード機能である場合(ステップS114:YES)、プロセッサ10は、外部記憶媒体に記憶されたレジストレーションデータ230をフラッシュROM12に保存するロード処理を実行する(ステップS115)。保存対象のレジストレーションデータ230は、例えばユーザによる操作で指定されたレジストレーションデータ230である。
【0118】
図11は、
図6のステップS115のロード処理の詳細を示すサブルーチンである。
図11に示されるように、プロセッサ10は、保存元の外部記憶媒体に正常にアクセスできるか否かを判定する(ステップS601)。例えば、保存元の外部記憶媒体が電子楽器1に接続されていなければ、正常なアクセスが行えない。この場合(ステップS601:NO)、プロセッサ10は、エラーメッセージを表示して(ステップS602)、
図6のフローチャートの処理を終了させる。
【0119】
保存元の外部記憶媒体に正常にアクセスできる場合(ステップS601:YES)、プロセッサ10は、保存対象のレジストレーションデータ230のファイル名を取得するとともに(ステップS603)、保存先であるフラッシュROM12のレジストレーション番号を取得する(ステップS604)。保存先のレジストレーション番号は、ユーザによる操作で指定された番号であってもよく、また、プロセッサ10が自動的に決めた番号であってもよい。
【0120】
プロセッサ10は、保存対象のレジストレーションデータ230のイメージファイルを、ステップS603にて取得されたファイル名で、ステップS604にて取得されたレジストレーション番号のレジストレーションデータ230として、フラッシュROM12に保存する(ステップS605)。
【0121】
フラッシュROM12への書き込み中、フラッシュROM12の空き領域が不足すると、エラーが発生する。このようなエラーが発生すると(ステップS606:YES)、プロセッサ10は、エラーメッセージを表示して(ステップS607)、フラッシュROM12への書き込みをキャンセルし、
図6のフローチャートの処理を終了させる。このようなエラーが発生しなければ(ステップS606:NO)、レジストレーションデータ230は、フラッシュROM12に正常に保存される。なお、保存先のレジストレーション番号のレジストレーションデータ230は上書きされる。
【0122】
ユーザは、レジストレーションデータ230のロード機能を利用することにより、外部記憶媒体に記憶されたレジストレーションデータ230を、データ型を維持したまま、フラッシュROM12に保存することができる。一例として、ユーザは、データ包含型のレジストレーションデータ230を、そのままのデータ型でフラッシュROM12に保存することができる。ユーザにとって、データ型が維持される方がレジストレーションデータ230を取り扱いやすい場合、レジストレーションデータ230のロード機能は有用である。
【0123】
ステップS101にて検出された機能がレジストレーションデータ230の自動保存機能である場合(ステップS116:YES)、プロセッサ10は、フラッシュROM12に記憶されたレジストレーションデータ230を外部記憶媒体に保存する自動保存処理を実行する(ステップS117)。保存対象のレジストレーションデータ230は、例えばユーザによる操作で指定されたレジストレーションデータ230である。
【0124】
図12は、
図6のステップS117の自動保存処理の詳細を示すサブルーチンである。概略的には、プロセッサ10は、ユーザによる所定の操作(レジストレーションデータ230の自動保存機能を選択する操作)に応じて、記憶部の一例であるフラッシュROM12に記憶された、データ参照型のレジストレーションデータ230(第1データ)を、データ包含型に変換して外部記憶媒体に保存する。
【0125】
具体的には、
図12に示されるように、プロセッサ10は、保存先の外部記憶媒体に正常にアクセスできるか否かを判定する(ステップS701)。保存先の外部記憶媒体に正常にアクセスできない場合(ステップS701:NO)、プロセッサ10は、エラーメッセージを表示して(ステップS702)、
図6のフローチャートの処理を終了させる。
【0126】
保存先の外部記憶媒体に正常にアクセスできる場合(ステップS701:YES)、プロセッサ10は、保存対象のレジストレーションデータ230のファイル名を取得するとともに(ステップS703)レジストレーション番号を取得する(ステップS704)。
【0127】
プロセッサ10は、ステップS704にて取得されたレジストレーション番号が示すレジストレーションデータ230のイメージファイルを、RAM11上に展開する(ステップS705)。
【0128】
図12のフローチャート中、値Lが0に設定されると処理対象がレイヤ1となり、値Lが1に設定されると処理対象がレイヤ2となり、値Lが2に設定されると処理対象がレイヤ3となり、値Lが3に設定されると処理対象がレイヤ4となる。プロセッサ10は、RAM11上に展開されたレジストレーションデータ230のレイヤ1~4のそれぞれに対し、ステップS706の処理を実行する。
【0129】
具体的には、ステップS706において、プロセッサ10は、処理対象のレイヤに対し、共通パラメータ領域CPAに記述されるモードがデータ包含型か否かを判定する(ステップS706)。データ包含型であれば(ステップS706:YES)、プロセッサ10は、処理対象のレイヤに対して特に変更を加えない。データ包含型でなければ(すなわちデータ参照型であれば)(ステップS706:NO)、プロセッサ10は、処理対象のレイヤをデータ包含型に変更する(ステップS707)。具体的には、S707において、プロセッサ10は、参照先のトーン番号が示すトーンデータ210を処理対象のレイヤに複製するとともに、トーンディレクトリ領域TDAに記述された、このレイヤに対応する値をゼロに更新し、且つ変更後のモード(すなわちデータ包含型を示す値2)を共通パラメータ領域CPAに記述する。この処理の実行により、RAM11上に展開されたレジストレーションデータ230がデータ参照型である場合、全包括型に自動的に変換されることとなる。
【0130】
プロセッサ10は、RAM11上に展開されたレジストレーションデータ230を、ステップS703にて取得されたファイル名で、外部記憶媒体に保存する(ステップS708)。
【0131】
外部記憶媒体への書き込み中、外部記憶媒体の空き領域が不足すると、エラーが発生する。このようなエラーが発生すると(ステップS709:YES)、プロセッサ10は、エラーメッセージを表示して(ステップS710)、外部記憶媒体への書き込みをキャンセルし、
図6のフローチャートの処理を終了させる。このようなエラーが発生しなければ(ステップS709:NO)、レジストレーションデータ230は、外部記憶媒体に正常に保存される。なお、同一ファイル名のレジストレーションデータ230が外部記憶媒体に既に保存されている場合、上書きで保存される。
【0132】
ユーザは、レジストレーションデータ230の自動保存機能を利用することにより、フラッシュROM12に記憶されたデータ参照型のレジストレーションデータ230を、ポータビリティの点で優れた全包括型のレジストレーションデータ230に自動変換したうえで、外部記憶媒体に保存することができる。例えば、ユーザは、外部記憶媒体に保存された全包括型のレジストレーションデータ230単体を別の電子楽器に複製するだけで、そのレジストレーションデータ230を別の電子楽器で使用できる。全包括型のレジストレーションデータ230がユーザにとって取り扱いやすい場合、レジストレーションデータ230の自動保存機能は有用である。
【0133】
ユーザは、レジストレーションデータ230の保存機能(
図10参照)と自動保存機能(
図12参照)の何れか一方を選択することにより、レジストレーションデータ230を、データ型を維持したまま外部記憶媒体に保存するか、必要に応じて全包括型に変更したうえで外部記憶媒体に保存するか、を選択することができる。すなわち、レジストレーションデータ230の保存機能と自動保存機能の何れか一方を選択する操作は、選択操作受付部100aが受け付ける操作であって、選択可能な複数の第1データ(レジストレーションデータ230)のデータ型(すなわち、データ包含型、内容依存参照型及び内容保証参照型)のなかから、何れか一つのデータ型を選択する操作の一例である。
【0134】
ステップS101にて検出された機能がレジストレーションデータ230の自動ロード機能である場合(ステップS118:YES)、プロセッサ10は、外部記憶媒体に記憶されたレジストレーションデータ230をフラッシュROM12に保存する自動ロード処理を実行する(ステップS119)。保存対象のレジストレーションデータ230は、例えばユーザによる操作で指定されたレジストレーションデータ230である。
【0135】
図13は、
図6のステップS119の自動ロード処理の詳細を示すサブルーチンである。概略的には、プロセッサ10は、外部記憶媒体に記憶された、レジストレーションデータ230(第1データ)に含まれるトーンデータ210(第2データ)が、記憶部の一例であるフラッシュROM12に記憶されているか否かを判定し、トーンデータ210がフラッシュROM12に記憶されている場合、外部記憶媒体に記憶された、データ包含型のレジストレーションデータ230を、フラッシュROM12に記憶されているトーンデータ210を参照するデータ参照型に変換して、フラッシュROM12に記憶する。
【0136】
具体的には、
図13に示されるように、プロセッサ10は、保存元の外部記憶媒体に正常にアクセスできるか否かを判定する(ステップS801)。保存元の外部記憶媒体に正常にアクセスできない場合(ステップS801:NO)、プロセッサ10は、エラーメッセージを表示して(ステップS802)、
図6のフローチャートの処理を終了させる。
【0137】
保存元の外部記憶媒体に正常にアクセスできる場合(ステップS801:YES)、プロセッサ10は、保存対象のレジストレーションデータ230のファイル名を取得するとともに(ステップS803)、保存先であるフラッシュROM12のレジストレーション番号を取得する(ステップS804)。保存先のレジストレーション番号は、ユーザによる操作で指定された番号であってもよく、また、プロセッサ10が自動的に決めた番号であってもよい。
【0138】
プロセッサ10は、ステップS803にて取得されたファイル名のレジストレーションデータ230を外部記憶媒体から読み込んで、RAM11上に展開する(ステップS805)。
【0139】
プロセッサ10は、RAM11上に展開されたレジストレーションデータ230のレイヤ1~4のそれぞれに対し、ステップS806の処理を実行する。
【0140】
具体的には、ステップS806において、プロセッサ10は、処理対象のレイヤに対し、共通パラメータ領域CPAに記述されるモードがデータ包含型か否かを判定する(ステップS806)。データ包含型であれば(ステップS806:YES)、プロセッサ10は、処理対象のレイヤが持つトーン実体データと、フラッシュROM12に記憶された各トーン番号(値T=1~1,000)が示すトーンデータ210とを比較する(ステップS807)。処理対象のレイヤが持つトーン実体データの内容と比較対象のトーンデータ210の内容が一致する場合(ステップS808:YES)、プロセッサ10は、処理対象のレイヤをデータ包含型から内容保証参照型に変更する(ステップS809)。具体的には、ステップS809において、プロセッサ10は、処理対象のレイヤのモードを内容保証参照型に変更するとともに、処理対象のレイヤに対し、内容が一致するトーンデータ210を示すトーン番号を参照先として記述し、更に、処理対象のレイヤが持つトーン実体データを削除する。なお、データ包含型でなければ(すなわちデータ参照型であれば)(ステップS806:NO)、プロセッサ10は、処理対象のレイヤに対して特に変更を加えない。内容が一致するトーンデータ210がない場合も(ステップS808:NO)、プロセッサ10は、処理対象のレイヤに対して特に変更を加えない。以上の処理の実行により、RAM11上に展開されたレジストレーションデータ230のうち、データ包含型のレイヤが内容保証参照型に自動的に変換されることとなる。
【0141】
プロセッサ10は、RAM11上に展開されたレジストレーションデータ230を、ステップS803にて取得されたファイル名で、ステップS804にて取得されたレジストレーション番号のレジストレーションデータ230として、フラッシュROM12に保存する(ステップS810)。
【0142】
フラッシュROM12への書き込み中、フラッシュROM12の空き領域が不足すると、エラーが発生する。このようなエラーが発生すると(ステップS811:YES)、プロセッサ10は、エラーメッセージを表示して(ステップS812)、フラッシュROM12への書き込みをキャンセルし、
図6のフローチャートの処理を終了させる。このようなエラーが発生しなければ(ステップS811:NO)、レジストレーションデータ230は、フラッシュROM12に正常に保存される。なお、保存先のレジストレーション番号のレジストレーションデータ230は上書きされる。
【0143】
ユーザは、レジストレーションデータ230の自動ロード機能を利用することにより、外部記憶媒体に記憶されたデータ包含型のレジストレーションデータ230を、データサイズの小さいデータ参照型(この例では内容保証参照型)のレジストレーションデータ230に自動変換したうえで、フラッシュROM12に保存することができる。これにより、フラッシュROM12内でレジストレーションデータ230が効率的に管理される。また、内容保証参照型であるため、参照先のトーンデータ210の変更に伴う意図しない音色の変更が生じない。データ参照型のレジストレーションデータ230がユーザにとって取り扱いやすい場合、レジストレーションデータ230の自動ロード機能は有用である。なお、自動ロード機能では、内容保証参照型でなく内容依存参照型に自動変換されてもよい。
【0144】
ユーザは、レジストレーションデータ230のロード機能(
図11参照)と自動ロード機能(
図13参照)の何れか一方を選択することにより、レジストレーションデータ230を、データ型を維持したままフラッシュROM12に保存するか、必要に応じてデータ参照型に変更したうえで外部記憶媒体に保存するか、を選択することができる。すなわち、レジストレーションデータ230のロード機能と自動ロード機能の何れか一方を選択する操作は、選択操作受付部100aが受け付ける操作であって、選択可能な複数の第1データ(レジストレーションデータ230)のデータ型(すなわち、データ包含型、内容依存参照型及び内容保証参照型)のなかから、何れか一つのデータ型を選択する操作の一例である。
【0145】
ステップS101にて検出された機能がトーンデータ210の保存機能である場合(ステップS120:YES)、プロセッサ10は、フラッシュROM12に記憶されたトーンデータ210を外部記憶媒体に保存する保存処理を実行する(ステップS121)。保存対象のトーンデータ210は、例えばユーザによる操作で指定されたトーンデータ210である。
【0146】
プロセッサ10は、保存対象のトーンデータ210のイメージファイルを、保存対象のトーンデータ210のファイル名で、外部記憶媒体に保存する。なお、同一ファイル名のトーンデータ210が外部記憶媒体に既に保存されている場合、上書きで保存される。保存先の外部記憶媒体が電子楽器1に未接続であったり外部記憶媒体の空き領域が不足したりすると、ステップS121の保存処理がエラーとなって終了する。
【0147】
ステップS101にて検出された機能がトーンデータ210のロード機能である場合(ステップS122:YES)、プロセッサ10は、外部記憶媒体に保存されたトーンデータ210をフラッシュROM12に保存するロード処理を実行する(ステップS123)。保存対象のトーンデータ210は、例えばユーザによる操作で指定されたトーンデータ210である。
【0148】
具体的には、ステップS123において、プロセッサ10は、保存対象のトーンデータ210のイメージファイルを、保存対象のトーンデータ210のファイル名で、ユーザによる操作等で指定されたトーン番号のトーンデータ210として、フラッシュROM12に保存する。なお、保存先のトーン番号のトーンデータ210は上書きされる。フラッシュROM12への書き込み中、例えば電子楽器1に対する保存元の外部記憶媒体の接続が切断されると、ステップS123の保存処理がエラーとなって終了する。
【0149】
ステップS101にて検出された機能がこれまで説明した機能以外であれば、プロセッサ10は、当該機能に応じた処理を実行して(ステップS124)、
図6のフローチャートの処理を終了させる。
【0150】
このように、本実施形態によれば、階層構造を持つデータを取り扱いやすくすることができる電子楽器1、コンピュータの一例である電子楽器1のプロセッサ10により実行されるデータ処理方法及びデータ処理プログラム120が提供される。
【0151】
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
【0152】
上記の実施形態において、データ参照型では、常に、フラッシュROM12に記憶されたトーンデータ210が参照先として設定されるが、本発明の構成はこれに限らない。例えば、2つの混在型のレジストレーションデータ230がRAM11上に展開され、且つこれらのレジストレーションデータ230が共通のトーンデータ210を参照するデータ参照型のレイヤを含む場合を考える。この場合、共通のトーンデータ210に関し、一方のレジストレーションデータ230がフラッシュROM12に記憶されたトーンデータ210を参照し、他方のレジストレーションデータ230が、共通のトーンデータ210を参照する一方のレジストレーションデータ230の該当レイヤ(すなわち、RAM11上に展開された一方のレジストレーションデータ230のレイヤ)を参照してもよい。
【0153】
以下、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
少なくとも1つのプロセッサを備え、
前記少なくとも1つのプロセッサは、
電子楽器で処理可能な複数のデータ型を有する第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付け、
前記選択操作により選択されたデータ型に基づいて、前記第1データを記憶部に記憶する、
電子楽器。
[付記2]
前記複数のデータ型のうちの1つは、前記第1データが前記第2データを参照する第1のデータ参照型であり、
前記第1のデータ参照型の前記第1データは、前記第2データを参照するための参照情報を含む、
付記1に記載の電子楽器。
[付記3]
前記複数のデータ型のうちの1つは、前記第1データが前記第2データを参照する第2のデータ参照型であり、
前記第2のデータ参照型の前記第1データは、前記第2データを参照するための参照情報を含み、
前記少なくとも1つのプロセッサは、
前記第2のデータ参照型で参照される第2データが変更されると、変更前の前記第2データを複製し、
複製された第2データを、前記第2のデータ参照型の前記第1データが参照するように、前記参照情報を変更する、
付記1又は付記2に記載の電子楽器。
[付記4]
前記複数のデータ型のうちの1つは、前記第1データが前記第2データの実体データを含むデータ包含型である、
付記1から付記3の何れか一項に記載の電子楽器。
[付記5]
前記少なくとも1つのプロセッサは、前記ユーザによる所定の操作に応じて、前記記憶部に記憶された、前記データ参照型の前記第1データを、前記データ包含型に変換して外部記憶媒体に保存する、
付記2又は付記3を引用する、付記4に記載の電子楽器。
[付記6]
前記少なくとも1つのプロセッサは、
外部記憶媒体に記憶された、前記データ包含型の前記第1データに含まれる前記第2データが、前記記憶部に記憶されているか否かを判定し、
前記第2データが前記記憶部に記憶されている場合、外部記憶媒体に記憶された、前記データ包含型の前記第1データを、前記記憶部に記憶されている前記第2データを参照する前記データ参照型に変換して、前記記憶部に記憶する、
付記2又は付記3を引用する、付記4、若しくは、付記2又は付記3を引用する、付記5に記載の電子楽器。
[付記7]
前記第1データはレジストレーションデータであり、
前記第2データはトーンデータである、
付記1から付記6の何れか一項に記載の電子楽器。
[付記8]
コンピュータに、
電子楽器で処理可能な複数のデータ型を有する第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付けさせ、
前記選択操作により選択されたデータ型に基づいて、前記第1データを記憶部に記憶させる、
方法。
[付記9]
コンピュータに、
電子楽器で処理可能な複数のデータ型を有する第1データであって、自身よりも下位の第2データを使用する階層構造を持つ第1データの、前記複数のデータ型のなかから、何れか一つのデータ型を選択するユーザの選択操作を受け付けさせ、
前記選択操作により選択されたデータ型に基づいて、前記第1データを記憶部に記憶させる、
プログラム。
【符号の説明】
【0154】
1 :電子楽器
2 :USBフラッシュメモリ
10 :プロセッサ
11 :RAM
12 :フラッシュROM
13 :USBインタフェース
14 :LCD
15 :LCDコントローラ
16 :鍵盤
17 :操作部
17a :スイッチパネル
17b :ロータリエンコーダ
17c :ホイール
18 :キースキャナ
19 :パルスカウンタ
20 :A/Dコンバータ
21 :音源LSI
22 :D/Aコンバータ
23 :アンプ
24 :スピーカ
25 :バス
100a :選択操作受付部
100b :データ記憶部
120 :データ処理プログラム