JP2014059435A - 楽音再生装置、楽音再生方法及びプログラム - Google Patents
楽音再生装置、楽音再生方法及びプログラム Download PDFInfo
- Publication number
- JP2014059435A JP2014059435A JP2012204136A JP2012204136A JP2014059435A JP 2014059435 A JP2014059435 A JP 2014059435A JP 2012204136 A JP2012204136 A JP 2012204136A JP 2012204136 A JP2012204136 A JP 2012204136A JP 2014059435 A JP2014059435 A JP 2014059435A
- Authority
- JP
- Japan
- Prior art keywords
- data
- byte
- sound
- musical sound
- time
- 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.)
- Pending
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】楽音の発音から消音までに必要なデータの容量をより少なくする。
【解決手段】CPU11は、楽音データを取得し、当該楽音データのうち、1バイト目のデータに基づいて、ステップタイムを算出し、2バイト目のデータに基づいて、音高を算出し、3バイト目のデータに基づいて、音強を算出し、4バイト目及び5バイト目のデータに基づいて、楽音の発音が継続するゲートタイムを算出し、当該ステップタイムの経過後に、当該ゲートタイムの間、当該音高及び当該音強に基づいて、音源17及び発音回路18に楽音を発音させる。
【選択図】図1
【解決手段】CPU11は、楽音データを取得し、当該楽音データのうち、1バイト目のデータに基づいて、ステップタイムを算出し、2バイト目のデータに基づいて、音高を算出し、3バイト目のデータに基づいて、音強を算出し、4バイト目及び5バイト目のデータに基づいて、楽音の発音が継続するゲートタイムを算出し、当該ステップタイムの経過後に、当該ゲートタイムの間、当該音高及び当該音強に基づいて、音源17及び発音回路18に楽音を発音させる。
【選択図】図1
Description
本発明は、楽音再生装置、楽音再生方法及びプログラムに関する。
従来から、一般的に用いられている音楽フォーマットであるStandard MIDI Fileが知られている(特許文献1参照)。Standard MIDI Fileを用いて、楽音の発音から消音までに必要なデータを作成する場合、最低8バイトのデータが必要である。
しかしながら、特許文献1に記載の技術では、楽音の発音から消音までに必要なデータを作成する場合、8バイトよりデータの容量を少なくすることができなかった。
本発明は、このような状況に鑑みてなされたものであり、楽音の発音から消音までに必要なデータの容量をより少なくすることを目的とする。
上記目的を達成するため、本発明の一態様の楽音再生装置は、
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータが楽音の発音を指示するデータであるか否か判別する判別手段と、
この判別手段により発音を指示するデータであると判別された場合のみ、前記第2のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出手段と、
この算出された待ち時間経過後に、少なくとも前記第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得手段と、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出手段と、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示手段と、
を備える。
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータが楽音の発音を指示するデータであるか否か判別する判別手段と、
この判別手段により発音を指示するデータであると判別された場合のみ、前記第2のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出手段と、
この算出された待ち時間経過後に、少なくとも前記第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得手段と、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出手段と、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示手段と、
を備える。
本発明によれば、楽音の発音から消音までに必要なデータの容量をより少なくすることができる。
以下、本発明の実施形態について、図面を用いて説明する。
図1は、本発明の一実施形態に係る楽音再生装置1のハードウェアの構成を示すブロック図である。
楽音再生装置1は、図1に示すように、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、入力部14と、出力部15と、音源17と、発音回路18と、を備えている。
CPU11は、ROM12に記録されているプログラムに従って各種の処理を実行する。
ROM12は、CPU11が実行するプログラム、自動伴奏用の各種コード進行データ、及び各種制御用データを格納する。
RAM13には、CPU11が各種の処理を実行する上において必要なデータ等も適宜記憶される。
入力部14は、各種釦等で構成され、ユーザの指示操作に応じて各種情報を入力する。
出力部15は、ディスプレイ等で構成され、画像等を出力する。
記憶部16は、ハードディスクあるいはDRAM(Dynamic Random Access Memory)等で構成され、各種データを記憶する。
音源17は、CPU11の指示に従ってデジタル楽音用波形データを生成し出力する。
発音回路18は、音源17が出力する波形データをアナログ波形信号(オーディオ信号)に変換して、出力する。これにより、楽音が発音される。
楽音再生装置1は、図1に示すように、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、入力部14と、出力部15と、音源17と、発音回路18と、を備えている。
CPU11は、ROM12に記録されているプログラムに従って各種の処理を実行する。
ROM12は、CPU11が実行するプログラム、自動伴奏用の各種コード進行データ、及び各種制御用データを格納する。
RAM13には、CPU11が各種の処理を実行する上において必要なデータ等も適宜記憶される。
入力部14は、各種釦等で構成され、ユーザの指示操作に応じて各種情報を入力する。
出力部15は、ディスプレイ等で構成され、画像等を出力する。
記憶部16は、ハードディスクあるいはDRAM(Dynamic Random Access Memory)等で構成され、各種データを記憶する。
音源17は、CPU11の指示に従ってデジタル楽音用波形データを生成し出力する。
発音回路18は、音源17が出力する波形データをアナログ波形信号(オーディオ信号)に変換して、出力する。これにより、楽音が発音される。
図2は、楽音再生装置1により楽音の再生時に使用されるデータ(以下、「楽音データ」と呼ぶ)のデータ構造を示す図である。
楽音データは、原則として5バイトで構成されている。例外として、3バイト目の先頭ビットが「1」である場合、3バイトで構成される。また、3バイト目の先頭ビットが「0」であり、かつ4バイト目の先頭ビットが「1」である場合、4バイトで構成される。したがって、3バイト目と4バイト目の先頭ビットは、フラグとして用いられる。1バイト目には、前回のイベント終了時からの今回のイベント開始時までの発音の停止時間(以下、「ステップタイム」と呼ぶ)が格納されている。本実施形態では、イベントとは、楽音の発音、音高の変更等、楽音再生装置が実行する処理のことをいう。2バイト目には、今回のイベントの種類を表すコマンドが格納されている。3バイト目〜5バイト目には、後述する各種データが格納されている。
楽音が再生されるためには、5バイト(例外として3バイオ又は4バイト)を楽音データの1単位として複数単位を有する複数の楽音データが必要である。ROM12又は記憶部16の所定の領域には、複数の楽音データが連続して格納されている。
楽音データは、原則として5バイトで構成されている。例外として、3バイト目の先頭ビットが「1」である場合、3バイトで構成される。また、3バイト目の先頭ビットが「0」であり、かつ4バイト目の先頭ビットが「1」である場合、4バイトで構成される。したがって、3バイト目と4バイト目の先頭ビットは、フラグとして用いられる。1バイト目には、前回のイベント終了時からの今回のイベント開始時までの発音の停止時間(以下、「ステップタイム」と呼ぶ)が格納されている。本実施形態では、イベントとは、楽音の発音、音高の変更等、楽音再生装置が実行する処理のことをいう。2バイト目には、今回のイベントの種類を表すコマンドが格納されている。3バイト目〜5バイト目には、後述する各種データが格納されている。
楽音が再生されるためには、5バイト(例外として3バイオ又は4バイト)を楽音データの1単位として複数単位を有する複数の楽音データが必要である。ROM12又は記憶部16の所定の領域には、複数の楽音データが連続して格納されている。
図3は、楽音の発音処理が実行される場合に楽音再生装置1に使用される楽音データのデータ構造を示す図である。
1バイト目には、10進数で「128」を表す2進数のデータが格納されている。これは、ステップタイムが128ステップに相当する時間であることを示す。ここで、1ステップとは、96音符で表される時間の長さである。
2バイト目には、10進数で「64」を表す2進数のデータが格納されている。これは、音の高さを表す音高データであるノートナンバが「64」であること示す。ノートナンバは、「0」〜「127」までの数値であり、当該数値が高いほど音が高くなる。本実施形態では、2バイト目に、10進数で「0」〜「127」を表す2進数のデータが格納されている場合、イベントとして楽音の発音が実行される。したがって、2バイト目に格納された、10進数で「0」〜「127」を表す2進数のデータは、音高を表すとともに、楽音が発音されるというコマンドを表す。
3バイト目には、10進数で「127」を表す2進数のデータが格納されている。これは、音の強さを表す音強データであるベロシティが「127」であることを示す。ベロシティは、「0」〜「127」までの数値であり、当該数値が高いほど発音される音が強くなる。なお、上述したように、3バイト目の先頭ビットは、フラグであるため、先頭ビットを除いた下位7ビットでベロシティが表される。
4バイト目には、10進数で「1」を表す2進数のデータが格納されている。また、5バイト目には、10進数で「128」を表す2進数のデータが格納されている。これらは、4バイト目と5バイト目とのデータが一体となって、「384」ステップの時間の間、楽音を発音させることを示す。このとき、1バイト目に格納されたステップタイムの経過後に、2バイト目に格納されたノートナンバで表される音高、及び3バイト目に格納されたベロシティで表される音強で楽音が発音される。
ところで、4バイト目と5バイト目とで表されるステップの算出方法は、次のとおりである。即ち、4バイト目が8ビット左シフトされ、2進数で「100000000」とされる。これは、10進数での「256」である。そして、この「256」に、5バイト目のデータで表現される10進数での「128」が加算され、ステップとして「384」が得られる。なお、上述したように、4バイト目の先頭ビットは、フラグであるため、先頭ビットを除いた下位7ビットが実際に加算対象となる値である。
1バイト目には、10進数で「128」を表す2進数のデータが格納されている。これは、ステップタイムが128ステップに相当する時間であることを示す。ここで、1ステップとは、96音符で表される時間の長さである。
2バイト目には、10進数で「64」を表す2進数のデータが格納されている。これは、音の高さを表す音高データであるノートナンバが「64」であること示す。ノートナンバは、「0」〜「127」までの数値であり、当該数値が高いほど音が高くなる。本実施形態では、2バイト目に、10進数で「0」〜「127」を表す2進数のデータが格納されている場合、イベントとして楽音の発音が実行される。したがって、2バイト目に格納された、10進数で「0」〜「127」を表す2進数のデータは、音高を表すとともに、楽音が発音されるというコマンドを表す。
3バイト目には、10進数で「127」を表す2進数のデータが格納されている。これは、音の強さを表す音強データであるベロシティが「127」であることを示す。ベロシティは、「0」〜「127」までの数値であり、当該数値が高いほど発音される音が強くなる。なお、上述したように、3バイト目の先頭ビットは、フラグであるため、先頭ビットを除いた下位7ビットでベロシティが表される。
4バイト目には、10進数で「1」を表す2進数のデータが格納されている。また、5バイト目には、10進数で「128」を表す2進数のデータが格納されている。これらは、4バイト目と5バイト目とのデータが一体となって、「384」ステップの時間の間、楽音を発音させることを示す。このとき、1バイト目に格納されたステップタイムの経過後に、2バイト目に格納されたノートナンバで表される音高、及び3バイト目に格納されたベロシティで表される音強で楽音が発音される。
ところで、4バイト目と5バイト目とで表されるステップの算出方法は、次のとおりである。即ち、4バイト目が8ビット左シフトされ、2進数で「100000000」とされる。これは、10進数での「256」である。そして、この「256」に、5バイト目のデータで表現される10進数での「128」が加算され、ステップとして「384」が得られる。なお、上述したように、4バイト目の先頭ビットは、フラグであるため、先頭ビットを除いた下位7ビットが実際に加算対象となる値である。
図4は、楽音の発音の停止処理が実行される場合に楽音再生装置1に使用される楽音データのデータ構造を示す図である。
図3と同様に、1バイト目には、10進数で「128」を表す2進数のデータが格納されている。この意味は、図3で説明したとおりである。
図4に戻って、2バイト目には、10進数で「255」を表す2進数のデータが格納されている。これは、1バイト目により算出されるステップタイムに、3バイト目〜5バイト目に基づいて算出されるステップタイムが加算されるというコマンド(以下、「ステップタイムコマンド」と呼ぶ)を表す。
3バイト目には、フラグである先頭ビットを除いた下位7ビットに基づいて、10進数で「2」を表す2進数のデータが格納されている。これは、1バイト目と3バイト目とのデータが一体となって、「640」ステップの時間の間、楽音の発音を停止させることを示す。ところで、この「640」ステップの算出方法は、以下のとおりである。即ち、3バイト目が8ビット左シフトされ、2進数で「1000000000」とされる。これは、10進数での「512」である。そして、この「512」に、1バイト目のデータで表現される10進数での「128」が加算され、ステップタイムとして「640」が得られる。これにより、ステップタイムとして、1バイト(8ビット)で表される最大値である「255(10進数)」を超える値が表現可能とされる。なお、図4では、3バイト目の先頭ビットが「1」であるため、上述したとおり、楽音データは3バイトで構成される。
更に、3バイト目の先頭ビットが「0」であり、かつ4バイト目の先頭ビットが「1」である場合、1バイト目、3バイト目、及び4バイト目のデータに基づいて、ステップタイムが算出される。具体的には、1バイト目の値と、3バイト目の下位7ビットが8ビット左シフトされた値と、4バイト目の下位7ビットが15ビット左シフトされた値と、が加算されることにより当該ステップタイムが算出される。また、この場合、3バイト目の先頭ビットが「0」であり、かつ4バイト目の先頭ビットが「1」であるため、上述したとおり、楽音データは4バイトで構成される。
更に、3バイト目及び4バイト目の先頭ビットがともに「0」である場合、1バイト目、3バイト目、4バイト目、及び5バイト目のデータに基づいて、ステップタイムが算出される。具体的には、1バイト目の値と、3バイト目の下位7ビットが8ビット左シフトされた値と、4バイト目の下位7ビットが15ビット左シフトされた値と、5バイト目が22ビット左シフトされた値と、が加算されることにより当該ステップタイムが算出される。
図3と同様に、1バイト目には、10進数で「128」を表す2進数のデータが格納されている。この意味は、図3で説明したとおりである。
図4に戻って、2バイト目には、10進数で「255」を表す2進数のデータが格納されている。これは、1バイト目により算出されるステップタイムに、3バイト目〜5バイト目に基づいて算出されるステップタイムが加算されるというコマンド(以下、「ステップタイムコマンド」と呼ぶ)を表す。
3バイト目には、フラグである先頭ビットを除いた下位7ビットに基づいて、10進数で「2」を表す2進数のデータが格納されている。これは、1バイト目と3バイト目とのデータが一体となって、「640」ステップの時間の間、楽音の発音を停止させることを示す。ところで、この「640」ステップの算出方法は、以下のとおりである。即ち、3バイト目が8ビット左シフトされ、2進数で「1000000000」とされる。これは、10進数での「512」である。そして、この「512」に、1バイト目のデータで表現される10進数での「128」が加算され、ステップタイムとして「640」が得られる。これにより、ステップタイムとして、1バイト(8ビット)で表される最大値である「255(10進数)」を超える値が表現可能とされる。なお、図4では、3バイト目の先頭ビットが「1」であるため、上述したとおり、楽音データは3バイトで構成される。
更に、3バイト目の先頭ビットが「0」であり、かつ4バイト目の先頭ビットが「1」である場合、1バイト目、3バイト目、及び4バイト目のデータに基づいて、ステップタイムが算出される。具体的には、1バイト目の値と、3バイト目の下位7ビットが8ビット左シフトされた値と、4バイト目の下位7ビットが15ビット左シフトされた値と、が加算されることにより当該ステップタイムが算出される。また、この場合、3バイト目の先頭ビットが「0」であり、かつ4バイト目の先頭ビットが「1」であるため、上述したとおり、楽音データは4バイトで構成される。
更に、3バイト目及び4バイト目の先頭ビットがともに「0」である場合、1バイト目、3バイト目、4バイト目、及び5バイト目のデータに基づいて、ステップタイムが算出される。具体的には、1バイト目の値と、3バイト目の下位7ビットが8ビット左シフトされた値と、4バイト目の下位7ビットが15ビット左シフトされた値と、5バイト目が22ビット左シフトされた値と、が加算されることにより当該ステップタイムが算出される。
[発音制御処理]
続いて、楽音再生装置1が実行する発音制御処理について説明する。
図5は、楽音再生装置1が実行する発音制御処理の流れの一例を示すフローチャートである。
続いて、楽音再生装置1が実行する発音制御処理について説明する。
図5は、楽音再生装置1が実行する発音制御処理の流れの一例を示すフローチャートである。
入力部14を介して楽音の再生を開始させる信号を受信したことに応じて、次のようなステップS11乃至S22の処理が実行される。
ステップS11において、CPU11は、変数step、及び変数nextstepに0を代入することにより、これらの変数の値をクリアする。
ステップS12において、CPU11は、記憶部16から楽音データとして5バイト分の楽音データを取得する。
ステップS13において、CPU11は、ステップS12にて取得した楽音データの1バイト目の値を変数nextstepに加算する。
ステップS12において、CPU11は、記憶部16から楽音データとして5バイト分の楽音データを取得する。
ステップS13において、CPU11は、ステップS12にて取得した楽音データの1バイト目の値を変数nextstepに加算する。
ステップS14において、CPU11は、ステップS12にて取得した楽音データの2バイト目の値がステップタイムコマンドであるか否かを判定する。即ち、CPU11は、当該2バイト目の値が10進数で「255」を表す2進数のデータであるか否かを判定する。当該値がステップタイムコマンドである場合、YESと判定され、CPU11は、処理をステップS18に移行させる。
ステップS18において、CPU11は、ステップS12にて取得した楽音データの3バイト目の下位7ビットを8ビット左シフトさせた値を、変数nextstepに加算する。
ステップS19において、CPU11は、当該3バイト目の先頭ビットのフラグが1か否か判断し、1である場合には、YESと判定され、CPU11は、処理をステップS12に移行させる。この際、4バイト目データは、ステップS12において次に取得される楽音データの1バイト目となり、5バイト目データは、ステップS12において次に取得される楽音データの2バイト目となる。一方、1でない場合には、NOと判定され、CPU11は、処理をステップS20に移行させる。
ステップS20において、CPU11は、ステップS12にて取得した楽音データの4バイト目の下位7ビットを15ビット左シフトさせた値を、変数nextstepに加算する。
ステップS21において、CPU11は、当該4バイト目の先頭ビットのフラグが1か否か判断し、1である場合には、YESと判定され、CPU11は、処理をステップS12に移行させる。この際、5バイト目のデータは、ステップS12において次に取得される楽音データの1バイト目となる。一方、1でない場合には、NOと判定され、CPU11は、処理をステップS22に移行させる。
ステップS22において、CPU11は、ステップS12にて取得した楽音データの5バイト目を22ビット左シフトさせた値を、変数nextstepに加算する。その後、CPU11は、処理をステップS12に移行させる。
ステップS18において、CPU11は、ステップS12にて取得した楽音データの3バイト目の下位7ビットを8ビット左シフトさせた値を、変数nextstepに加算する。
ステップS19において、CPU11は、当該3バイト目の先頭ビットのフラグが1か否か判断し、1である場合には、YESと判定され、CPU11は、処理をステップS12に移行させる。この際、4バイト目データは、ステップS12において次に取得される楽音データの1バイト目となり、5バイト目データは、ステップS12において次に取得される楽音データの2バイト目となる。一方、1でない場合には、NOと判定され、CPU11は、処理をステップS20に移行させる。
ステップS20において、CPU11は、ステップS12にて取得した楽音データの4バイト目の下位7ビットを15ビット左シフトさせた値を、変数nextstepに加算する。
ステップS21において、CPU11は、当該4バイト目の先頭ビットのフラグが1か否か判断し、1である場合には、YESと判定され、CPU11は、処理をステップS12に移行させる。この際、5バイト目のデータは、ステップS12において次に取得される楽音データの1バイト目となる。一方、1でない場合には、NOと判定され、CPU11は、処理をステップS22に移行させる。
ステップS22において、CPU11は、ステップS12にて取得した楽音データの5バイト目を22ビット左シフトさせた値を、変数nextstepに加算する。その後、CPU11は、処理をステップS12に移行させる。
一方、ステップS14において、ステップS12にて取得した楽音データの2バイト目の値がステップタイムコマンドでない場合、NOと判定され、CPU11は、処理をステップS15に移行させる。
ステップS15において、CPU11は、変数stepの値が変数nextstepの値以上であるか否かを判定する。変数stepの値が変数nextstepの値未満である場合、ステップS15においてNOと判定され、CPU11は、変数stepの値を1インクリメントさせる(ステップS16)。このステップS16の処理は、ステップS15において、変数stepの値が変数nextstepの値以上であると判定されるまで、即ちステップS15においてYESと判定されるまで、繰り返して実行される。なお、このステップS16の処理が繰り返されている間の経過時間がステップタイムとなる。
ステップS15においてYESと判定されると、CPU11は、ステップS17に処理を移行させて、図6を参照して後述する発音処理を実行する。この発音処理とは、楽音データに基づいて音源17及び発音回路18に楽音を発音させる処理等である。
ステップS15において、CPU11は、変数stepの値が変数nextstepの値以上であるか否かを判定する。変数stepの値が変数nextstepの値未満である場合、ステップS15においてNOと判定され、CPU11は、変数stepの値を1インクリメントさせる(ステップS16)。このステップS16の処理は、ステップS15において、変数stepの値が変数nextstepの値以上であると判定されるまで、即ちステップS15においてYESと判定されるまで、繰り返して実行される。なお、このステップS16の処理が繰り返されている間の経過時間がステップタイムとなる。
ステップS15においてYESと判定されると、CPU11は、ステップS17に処理を移行させて、図6を参照して後述する発音処理を実行する。この発音処理とは、楽音データに基づいて音源17及び発音回路18に楽音を発音させる処理等である。
[発音処理]
次に、楽音再生装置1が実行する発音処理について説明する。
図6は、楽音再生装置1が実行する発音処理(図5のステップS17の処理)の流れの一例を示すフローチャートである。
次に、楽音再生装置1が実行する発音処理について説明する。
図6は、楽音再生装置1が実行する発音処理(図5のステップS17の処理)の流れの一例を示すフローチャートである。
ステップS31において、CPU11は、図5のステップS12にて取得した楽音データの2バイト目の値がノートデータであるか否かを判定する。即ち、CPU11は、当該2バイト目の値が10進数で「0」〜「127」までの値の2進数のデータであるか否かを判定する。当該2バイト目の値が10進数で「0」〜「127」までの値の2進数のデータでない場合、NOと判定され、CPU11は、ステップS32に処理を移行させる。
ステップS32において、CPU11は、各種のコマンド処理を実行する。その後、CPU11は発音処理を終了させる。コマンド処理には、音色を変更させるプログラムチェンジ、音高を変更させるピッチベンド等の処理がある。
ステップS32において、CPU11は、各種のコマンド処理を実行する。その後、CPU11は発音処理を終了させる。コマンド処理には、音色を変更させるプログラムチェンジ、音高を変更させるピッチベンド等の処理がある。
一方、ステップS31において、CPU11は、図5のステップS12にて取得した楽音データの2バイト目の値が10進数で「0」〜「127」までの値の2進数のデータである場合、当該2バイト目の値がノートデータであると判定されるので、YESと判定され、CPU11は、ステップS33に処理を移行させる。
ステップS33において、CPU11は、図5のステップS12にて取得した楽音データの4バイト目の下位7ビットを8ビット左シフトさせた値と、当該楽音データの5バイト目の値と、を加算して変数gatetimeに代入する。
ステップS34において、CPU11は、当該楽音データの2バイト目の値をノートナンバ(音高)として算出し、当該楽音データの3バイト目の値をベロシティ(音強)として算出して、算出したノートナンバ及びベロシティに基づいて、楽音の発音を、音源17及び発音回路18に開始させる。
ステップS33において、CPU11は、図5のステップS12にて取得した楽音データの4バイト目の下位7ビットを8ビット左シフトさせた値と、当該楽音データの5バイト目の値と、を加算して変数gatetimeに代入する。
ステップS34において、CPU11は、当該楽音データの2バイト目の値をノートナンバ(音高)として算出し、当該楽音データの3バイト目の値をベロシティ(音強)として算出して、算出したノートナンバ及びベロシティに基づいて、楽音の発音を、音源17及び発音回路18に開始させる。
ステップS35において、CPU11は、変数gatetimeの値が0以下であるか否かを判定する。変数gatetimeの値が0より大きい場合、ステップS35において、NOと判定され、CPU11は、変数gatetimeの値を1デクリメントさせる(ステップS36)。このステップS36の処理は、ステップS35において、変数gatetimeの値が0以下であると判定されるまで、即ちステップS35においてYESと判定されるまで、繰り返して実行される。なお、このステップS36の処理が繰り返されている間の経過時間が発音継続時間(「ゲートタイム」ともいう)となる。
ステップS35においてYESと判定されると、CPU11は、ステップS37に処理を移行させて、楽音の発音を、音源17及び発音回路18に停止させる。その後、CPU11は発音処理を終了させる。
ステップS35においてYESと判定されると、CPU11は、ステップS37に処理を移行させて、楽音の発音を、音源17及び発音回路18に停止させる。その後、CPU11は発音処理を終了させる。
[楽音データ生成処理]
次に、楽音再生装置1が実行する楽音データ生成処理について説明する。
図7は、楽音再生装置1が実行する楽音データ生成処理の流れの一例を示すフローチャートである。
この楽音データ生成処理は、図5で説明した発音制御処理において使用される楽音データを生成する処理である。
次に、楽音再生装置1が実行する楽音データ生成処理について説明する。
図7は、楽音再生装置1が実行する楽音データ生成処理の流れの一例を示すフローチャートである。
この楽音データ生成処理は、図5で説明した発音制御処理において使用される楽音データを生成する処理である。
ステップS41において、CPU11は、入力部14からユーザにより入力された楽譜のデータ又は、記憶部16に記憶された楽譜のデータを読み込む。
ステップS42において、CPU11は、ステップS41において読み込まれた楽譜のデータを解析し、解析した結果に基づいて、楽音データを生成する。その後、CPU11は楽音データ生成処理を終了させる。
ステップS42において、CPU11は、ステップS41において読み込まれた楽譜のデータを解析し、解析した結果に基づいて、楽音データを生成する。その後、CPU11は楽音データ生成処理を終了させる。
この楽音データ生成処理によって作成された楽音データは、楽譜のデータに基づいて機械的に作成されたものであるため、何らの修正もされずに図5の発音制御処理に使用されると、音楽的な表現に乏しい演奏となり易い。そこで、より音楽的な表現で演奏されるようにするために、楽音データ生成処理によって作成された楽音データは、ユーザによって適宜修正された後、図5の発音制御処理に使用される。
以上、本実施形態の演奏装置1の構成及び処理について説明した。
本実施形態においては、CPU11は、楽音データを取得し、当該楽音データのうち、1バイト目のデータに基づいて、ステップタイムを算出し、2バイト目のデータに基づいて、音高を算出し、3バイト目のデータに基づいて、音強を算出し、4バイト目及び5バイト目のデータに基づいて、楽音の発音が継続するゲートタイムを算出し、当該ステップタイムの経過後に、当該ゲートタイムの間、当該音高及び当該音強に基づいて、音源17及び発音回路18に楽音を発音させる。
したがって、5バイトのデータを用いることで、所定の音高及び音強に応じた楽音を所定時間発音させ停止させることができる。よって、楽音の発音から消音までに必要なデータの容量をより少なくすることができる。
本実施形態においては、CPU11は、楽音データを取得し、当該楽音データのうち、1バイト目のデータに基づいて、ステップタイムを算出し、2バイト目のデータに基づいて、音高を算出し、3バイト目のデータに基づいて、音強を算出し、4バイト目及び5バイト目のデータに基づいて、楽音の発音が継続するゲートタイムを算出し、当該ステップタイムの経過後に、当該ゲートタイムの間、当該音高及び当該音強に基づいて、音源17及び発音回路18に楽音を発音させる。
したがって、5バイトのデータを用いることで、所定の音高及び音強に応じた楽音を所定時間発音させ停止させることができる。よって、楽音の発音から消音までに必要なデータの容量をより少なくすることができる。
また、本実施形態においては、CPU11は、楽音データのうち2バイト目のデータに基づいて、当該楽音データがステップタイムを表現したデータであるか否かを判定し、当該楽音データがステップタイムを表現したデータであると判定された場合には、1バイト目のデータ、3バイト目のデータ、4バイト目のデータ、及び5のバイト目のデータに基づいて、ステップタイムを算出する。
したがって、ステップタイムを算出する際に、4つのバイトのデータを用いることで、より長いステップタイムを表現できる。
したがって、ステップタイムを算出する際に、4つのバイトのデータを用いることで、より長いステップタイムを表現できる。
また、本実施形態においては、CPU11は、楽音データの3バイト目のデータのうち、先頭ビットのフラグが「1」となっている場合、1バイト目のデータ、及び当該3バイト目のデータに基づいて、ステップタイムを算出する。又は、CPU11は、楽音データの4バイト目のデータのうち、先頭ビットのフラグが「1」となっている場合、1バイト目のデータ、3バイト目のデータ及び当該4バイト目のデータに基づいて、ステップタイムを算出する。
したがって、ステップタイムの長さに応じて、楽音データのバイト数を5バイトより小さくできる。
したがって、ステップタイムの長さに応じて、楽音データのバイト数を5バイトより小さくできる。
また、本実施形態においては、CPU11は、楽譜のデータに基づいて楽音データを生成する。
したがって、入力部14を介してユーザにより楽譜のデータが入力された場合や、記憶部16に楽譜のデータが記憶されている場合等に、当該楽譜のデータを読み出して、楽音データに変換できる。
したがって、入力部14を介してユーザにより楽譜のデータが入力された場合や、記憶部16に楽譜のデータが記憶されている場合等に、当該楽譜のデータを読み出して、楽音データに変換できる。
以上、本発明の実施形態について説明したが、実施形態は例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、更に、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上記実施形態では、楽音データの生成は、楽音再生装置1において実行されるがこれに限られず、図示しない他の装置によって実行されてもよい。
また、楽音データのデータ構造は上記実施形態における説明に限られず、例えば、楽音データの1バイト目にイベントの種類を示すデータが格納され、2バイト目にステップタイムが格納されているようにしてもよい。即ち、楽音データにおけるバイト領域の並び順は任意の順でよく、アルゴリズムを適宜変更させることで、上記実施形態で説明した発音制御処理は実行可能である。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータが楽音の発音を指示するデータであるか否か判別する判別手段と、
この判別手段により発音を指示するデータであると判別された場合のみ、前記第2のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出手段と、
この算出された待ち時間経過後に、少なくとも前記第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得手段と、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出手段と、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示手段と、
を備えた楽音再生装置。
[付記2]
前記楽音のパラメータとして、前記第2のバイト領域にあるデータに基づいて発音すべき楽音の音高を取得するとともに、前記第3のバイト領域にあるデータに基づいて発音すべき楽音のベロシティを取得することを特徴とする付記1記載の楽音再生装置。
[付記3]
前記第2の時間算出手段は、前記第4のバイト領域内の何れかのビットの状態に基づいて、前記第4のバイト領域にあるデータと、当該第4のバイト領域に続く第5のバイト領域にあるデータとに基づいて前記楽音の発音時間を算出することを特徴とする付記1又は2いずれかに記載の楽音再生装置。
[付記4]
前記楽音再生装置はさらに、
前記第2のバイト領域にあるデータに基づいて、前記イベントデータが楽音のパラメータであるか否か判別する判別手段を有し、
前記パラメータ取得手段は、前記判別手段により楽音のパラメータであると判別された場合に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得することを特徴とする付記1乃至3いずれか記載の楽音再生装置。
[付記5]
前記判別手段が、発音を指示するデータであると判別された場合に、少なくとも前記第1のバイト領域及び第3のバイト領域のデータに基づいて、次のイベントデータを取得するまでの待ち時間を算出する第3の時間算出手段を備えたことを特徴とする付記4記載の楽音再生装置。
[付記6]
前記第3の時間算出手段は、前記第3のバイト領域内の何れかのビットの状態に基づいて、前記第1及び第3のバイト領域にあるデータと、当該第3のバイト領域に続く第4のバイト領域にあるデータとに次のイベントデータを取得するまでの待ち時間を算出することを特徴とする付記5記載の楽音再生装置。
[付記7]
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出ステップと、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得ステップと、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出ステップと、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示ステップと、
を備えた楽音再生方法。
[付記8]
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出ステップと、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得ステップと、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出ステップと、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示ステップと、
をコンピュータに実行させるプログラム。
[付記1]
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータが楽音の発音を指示するデータであるか否か判別する判別手段と、
この判別手段により発音を指示するデータであると判別された場合のみ、前記第2のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出手段と、
この算出された待ち時間経過後に、少なくとも前記第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得手段と、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出手段と、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示手段と、
を備えた楽音再生装置。
[付記2]
前記楽音のパラメータとして、前記第2のバイト領域にあるデータに基づいて発音すべき楽音の音高を取得するとともに、前記第3のバイト領域にあるデータに基づいて発音すべき楽音のベロシティを取得することを特徴とする付記1記載の楽音再生装置。
[付記3]
前記第2の時間算出手段は、前記第4のバイト領域内の何れかのビットの状態に基づいて、前記第4のバイト領域にあるデータと、当該第4のバイト領域に続く第5のバイト領域にあるデータとに基づいて前記楽音の発音時間を算出することを特徴とする付記1又は2いずれかに記載の楽音再生装置。
[付記4]
前記楽音再生装置はさらに、
前記第2のバイト領域にあるデータに基づいて、前記イベントデータが楽音のパラメータであるか否か判別する判別手段を有し、
前記パラメータ取得手段は、前記判別手段により楽音のパラメータであると判別された場合に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得することを特徴とする付記1乃至3いずれか記載の楽音再生装置。
[付記5]
前記判別手段が、発音を指示するデータであると判別された場合に、少なくとも前記第1のバイト領域及び第3のバイト領域のデータに基づいて、次のイベントデータを取得するまでの待ち時間を算出する第3の時間算出手段を備えたことを特徴とする付記4記載の楽音再生装置。
[付記6]
前記第3の時間算出手段は、前記第3のバイト領域内の何れかのビットの状態に基づいて、前記第1及び第3のバイト領域にあるデータと、当該第3のバイト領域に続く第4のバイト領域にあるデータとに次のイベントデータを取得するまでの待ち時間を算出することを特徴とする付記5記載の楽音再生装置。
[付記7]
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出ステップと、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得ステップと、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出ステップと、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示ステップと、
を備えた楽音再生方法。
[付記8]
取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出ステップと、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得ステップと、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出ステップと、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示ステップと、
をコンピュータに実行させるプログラム。
1・・・楽音再生装置、11・・・CPU、12・・・ROM、13・・・RAM、14・・・入力部、15・・・出力部、16・・・記憶部、17・・・音源、18・・・発音回路
Claims (8)
- 取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出手段と、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得手段と、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出手段と、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示手段と、
を備えた楽音再生装置。 - 前記楽音のパラメータとして、前記第2のバイト領域にあるデータに基づいて発音すべき楽音の音高を取得するとともに、前記第3のバイト領域にあるデータに基づいて発音すべき楽音のベロシティを取得することを特徴とする請求項1記載の楽音再生装置。
- 前記第2の時間算出手段は、前記第4のバイト領域内の何れかのビットの状態に基づいて、前記第4のバイト領域にあるデータと、当該第4のバイト領域に続く第5のバイト領域にあるデータとに基づいて前記楽音の発音時間を算出することを特徴とする請求項1又は2いずれかに記載の楽音再生装置。
- 前記楽音再生装置はさらに、
前記第2のバイト領域にあるデータに基づいて、前記イベントデータが楽音のパラメータであるか否か判別する判別手段を有し、
前記パラメータ取得手段は、前記判別手段により楽音のパラメータであると判別された場合に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得することを特徴とする請求項1乃至3いずれか記載の楽音再生装置。 - 前記判別手段が、発音を指示するデータであると判別された場合に、少なくとも前記第1のバイト領域及び第3のバイト領域のデータに基づいて、次のイベントデータを取得するまでの待ち時間を算出する第3の時間算出手段を備えたことを特徴とする請求項4記載の楽音再生装置。
- 前記第3の時間算出手段は、前記第3のバイト領域内の何れかのビットの状態に基づいて、前記第1及び第3のバイト領域にあるデータと、当該第3のバイト領域に続く第4のバイト領域にあるデータとに次のイベントデータを取得するまでの待ち時間を算出することを特徴とする請求項5記載の楽音再生装置。
- 取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出ステップと、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得ステップと、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出ステップと、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示ステップと、
を備えた楽音再生方法。 - 取得された少なくとも第1乃至第4のバイト領域を有するイベントデータのうち、第1のバイト領域にあるデータに基づいて待ち時間を算出する第1の時間算出ステップと、
この算出された待ち時間経過後に、前記第2及び第3のバイト領域にあるデータに基づき発音すべき楽音のパラメータを取得するパラメータ取得ステップと、
前記イベントデータのうち、前記第4のデータに基づいて前記楽音の発音時間を算出する第2の時間算出ステップと、
音源に対して、前記取得されたパラメータに基づいた楽音を前記算出された発音時間だけ発音するように指示する発音指示ステップと、
をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012204136A JP2014059435A (ja) | 2012-09-18 | 2012-09-18 | 楽音再生装置、楽音再生方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012204136A JP2014059435A (ja) | 2012-09-18 | 2012-09-18 | 楽音再生装置、楽音再生方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014059435A true JP2014059435A (ja) | 2014-04-03 |
Family
ID=50615960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012204136A Pending JP2014059435A (ja) | 2012-09-18 | 2012-09-18 | 楽音再生装置、楽音再生方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014059435A (ja) |
-
2012
- 2012-09-18 JP JP2012204136A patent/JP2014059435A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255037B2 (en) | Dynamic modification of audio content | |
WO2012111043A1 (ja) | 信号処理方法、信号処理装置、再生装置およびプログラム | |
JP5163100B2 (ja) | 自動伴奏装置及びプログラム | |
JP2017049349A (ja) | 楽音信号発生装置 | |
JPWO2019043797A1 (ja) | 楽曲解析装置および楽曲解析プログラム | |
JP2008145564A (ja) | 自動編曲装置および自動編曲プログラム | |
US9087503B2 (en) | Sampling device and sampling method | |
JP4438766B2 (ja) | 楽音発生装置、及びプログラム | |
JP2010113278A (ja) | 楽曲処理装置およびプログラム | |
JP2007094060A (ja) | コンテンツ再生装置、コンテンツ再生方法、及びコンテンツ再生プログラム | |
EP3373289A1 (en) | Electronic musical instrument, musical sound generating method, and storage medium | |
JP2014059435A (ja) | 楽音再生装置、楽音再生方法及びプログラム | |
KR101580247B1 (ko) | 스트리밍 음원의 리듬분석 장치 및 방법 | |
JP6380305B2 (ja) | データ生成装置、カラオケシステム、及びプログラム | |
JP4236570B2 (ja) | 波形再生装置および波形再生プログラム | |
JP2011197663A (ja) | 電子楽器及びプログラム | |
JP5375869B2 (ja) | 楽曲再生装置、楽曲再生方法及びプログラム | |
JP2012073592A (ja) | 楽音生成装置、楽音生成システム及び楽音生成方法 | |
JP2009122687A (ja) | オーディオ再生装置及びオーディオ再生方法 | |
JP4735221B2 (ja) | 演奏データ編集装置及びプログラム | |
JP2009251044A (ja) | 電子楽器および音量制御方法 | |
JP6597533B2 (ja) | 波形データ選択装置および波形データ選択方法 | |
JP2017032603A (ja) | 楽音信号変換装置および楽音信号変換プログラム | |
JP2009244548A (ja) | 電子楽器および半自動演奏方法 | |
JP5040425B2 (ja) | コンテンツ再生方法、再生装置、及びプログラム |