JP4239937B2 - 作曲支援装置、及びプログラム - Google Patents

作曲支援装置、及びプログラム Download PDF

Info

Publication number
JP4239937B2
JP4239937B2 JP2004270273A JP2004270273A JP4239937B2 JP 4239937 B2 JP4239937 B2 JP 4239937B2 JP 2004270273 A JP2004270273 A JP 2004270273A JP 2004270273 A JP2004270273 A JP 2004270273A JP 4239937 B2 JP4239937 B2 JP 4239937B2
Authority
JP
Japan
Prior art keywords
note
data
notes
score
value
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.)
Expired - Fee Related
Application number
JP2004270273A
Other languages
English (en)
Other versions
JP2006084855A (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
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2004270273A priority Critical patent/JP4239937B2/ja
Publication of JP2006084855A publication Critical patent/JP2006084855A/ja
Application granted granted Critical
Publication of JP4239937B2 publication Critical patent/JP4239937B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、楽曲の演奏内容を示す音符の並びである音符列を生成することにより行われる作曲を支援するための技術に関する。
現在では、例えば特許文献1に記載されたように、作曲を自動的に行う自動作曲装置が創案されている。そのような自動作曲装置を利用することにより、音楽の専門知識が少ないような人(以降、便宜的に「初心者」と呼ぶ)でも作曲を楽しむことができる。
上記自動作曲装置では、楽曲の演奏内容を示す音符の並びである音符列を自動的に生成するために、ユーザーである初心者にとっては非常に利便性が高いものとなっている。しかし、その高い利便性のために、自身が作曲を行ったという実感は得にくいのが実情となっている。このことから、その実感をより得られるようにすることも重要であると考えられる。
作曲を支援する作曲支援装置としては、例えば特許文献2に記載されたものがある。その特許文献2に記載された従来の作曲支援装置では、テーブル上に置かれた音符カードの2次元情報を取得することにより、音符カードの配置の仕方によって作曲が行えるようになっている。しかし、初心者の大部分は、音符カードの配置をどのように決定すれば良いか分からないのが実情である。このことから、作曲を行った実感が得られるようにするだけでなく、その作曲が容易に行えるように支援することも重要であると考えられる。
特開昭62−187876号公報 特開2002−196757号公報
本発明の課題は、楽曲の作曲が容易に行えるように支援しつつ、その作曲を行った実感がより得られるようにするための技術を提供することにある。
本発明の作曲支援装置は、楽曲の演奏内容を示す音符の並びである音符列を生成することにより行われる作曲を支援することを前提とし、音符列を構成させる音符単位で、当該音符の種類に対応した乱数をユーザーの指示に応じて発生させるとともに、音符の楽譜上の配置に相当する発音条件に対応した乱数を前記ユーザーの指示とは別のユーザーの指示に応じて発生させ、当該音符の種類に対応した乱数及び音符の楽譜上の配置に相当する発音条件に対応した乱数に基づいて当該音符の種類及び楽譜上の配置に相当する発音条件を選択する音符選択手段と、音符選択手段が選択した音符の種類及び楽譜上の配置に相当する発音条件で指定される音符を有する音符列を生成する音符列生成手段と、を具備する。
なお、作曲支援装置はさらに、音符の種類及び音符の楽譜上の配置に相当する発音条件のうち少なくとも一方において、複数種の指定候補を提示し、ユーザーの指示に応じて該提示させた指定候補のなかから一つを指定するとともに、当該指定された候補を音符選択手段が選択した音符の種類あるいは前記音符の楽譜上の配置相当する発音条件とする音符指定手段を有する、ことが望ましい。また、音符指定手段による指定の対象となる指定候補は変更できる、ことが望ましい。
本発明のプログラムは、上記作曲支援装置が具備する手段を実現させるための機能を搭載している。
本発明は、楽曲の演奏内容を示す音符の並びである音符列を構成させる音符単位に、その音符の種類、及びその音符の楽譜上の配置に相当する発音条件夫々に対応するユーザーの指示に応じて乱数を個別に発生させこの各乱数に基づいて個別に選択された音符種類、及び音符の楽譜上の配置に相当する発音条件で指定される音符を有する音符列を生成することにより、楽曲の作曲を支援する。
音符単位に、その音符の種類、及びその発音条件夫々に対応するユーザーの指示に応じて乱数を個別に発生させ、この各乱数に基づいて個別に選択された音符種類、及び音符の楽譜上の配置に相当する発音条件を選択するようにしたことにより、ユーザーにとっては自身が作曲を行っている実感が持てるようになる。それらを自動的に選択することにより、音楽の専門知識が乏しいものでも作曲を容易に行えるようになる。これらの結果、ユーザーにとっては、楽曲の作曲が容易に行えるように支援されるとともに、その作曲を行った実感がより得られることとなる。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
<第1の実施の形態>
図1は、第1の実施の形態による作曲支援装置の構成を説明する図である。
その作曲支援装置は、図1に示すように、装置全体の制御を行うCPU101と、そのCPU101がワークに用いるRAM102と、CPU101が実行するプログラムや各種制御用データを格納したROM103と、例えば各種キー等の操作子を有するキーボードやポインティングデバイス等である入力装置104と、例えば液晶表示装置である表示装置105と、MIDIデータの入出力を行えるMIDIインターフェース(I/F)106と、を備えて構成されている。
上述したような構成の作曲支援装置は、例えばパーソナルコンピュータ(PC)、或いはPDAといったデータ処理装置である。その作曲支援装置は、後述するような動作を行わせるプログラム(アプリケーション・プログラム。以降「アプリケーション」と略記)をCPU101に実行させることで実現される。ここでは便宜的に、そのアプリケーションはROM103に格納されていることとする。
そのアプリケーションは、起動されると、例えば図9に示すような楽曲データ作成画面を表示装置105に表示させる。その画面には、上部に五線譜(楽譜)が配置され、その下方に、図中、四分音符や八分音符等のシンボル(の画像)を有する円盤(ゲートタイム用ルーレット)、及び図中「ド」や「レ」といった音名を示すシンボル(の画像)を有する円盤(ピッチ用ルーレット)が配置されている。各円盤(ルーレット)の下方には、「スタート」「ストップ」の2つのボタンが配置されている。ボタンとしては他に、音符列(楽曲データ)として加える音符の作成を指示するための「作成」ボタン、作成した音符の確定を指示するための「確定」ボタン、作成された音符列の再生を指示するための「再生」ボタン、その停止を指示するための「停止」ボタン、及びアプリケーションの終了を指示するための「終了」ボタン、が配置されている。
ゲートタイム用ルーレットは、音符の種類選択用であり、ピッチ用ルーレットは、音符の音高(ピッチ(ノート番号))選択用である。各ルーレットは、対応する「スタート」ボタンのクリックにより回転しているように表示される。その後の「ストップ」ボタンのクリックにより、ルーレット上に配置されたシンボルのなかで自動的にシンボルを選択し、選択したシンボルが選択位置となるようにルーレットを停止させる。図9では、ゲートタイム用ルーレットでは四分音符、ピッチ用ルーレットでは音名「レ」がそれぞれ選択位置に位置している。そのようにして、本実施の形態では、音符列に加える音符の種類、及びその音符の音高をそれぞれ別のルーレットによりユーザーに自動的に選択させるようにしている。
音符の種類、及びその音符の音高はそれぞれ別個に自動的に選択されるが、その選択を行わせるためにユーザーは「スタート」「ストップ」ボタンを操作しなければならない。その操作を行うことにより、ユーザーにとっては自身が音符の種類やその音高を決定しているような感覚を持てるようになる。作曲自体は、その操作を順次していくことで行うことができる。これらのことから、音楽の専門知識のない人でも楽曲の作曲は容易に行うことができ、その作曲を行った実感も得られることとなる。ルーレット上に選択候補となる内容を示すシンボルを配置したことは、選択候補のなかの一つを自身が選択しているような感覚をより与えるように作用する。
以降は、図2、及び図3に示す各説明図、及び図4〜図8に示す各種処理のフローチャートを参照しつつ、作曲支援装置の動作について詳細に説明する。
図4は、作曲支援処理のフローチャートである。始めに図4を参照して、その作曲支援処理について詳細に説明する。その支援処理は、CPU101がROM103に格納されたアプリケーションを実行することで実現される。
そのアプリケーションは起動されると、先ず、ステップSA1で変数初期化を行う。続くステップSA2では、図9に示すような楽曲データ作成画面を生成して表示装置105に表示させる。その後に移行するステップSA3では、作成指示がされたか否か判定する。ユーザーが入力装置104を操作して「作成」ボタンをクリックした場合、その入力装置104から送出される信号の解析によってそのことが判明することから、判定はYESとなり、ステップSA4で楽曲データ作成処理を実行した後、ステップSA5に移行する。そうでない場合には、判定はNOとなって次にそのステップSA5に移行する。
ステップSA5では、再生指示がされたか否か判定する。ユーザーが入力装置104を操作して「再生」ボタンをクリックした場合、同様にしてそのことが判明することから、判定はYESとなってステップSA6に移行する。そうでない場合には、判定はNOとなってステップSA9に移行する。
ステップSA6では、ユーザーが作曲した楽曲を対象にした再生処理を実行する。続くステップSA7では、ユーザーが「停止」ボタンをクリックするか、或いは楽曲の再生が終了するのを待つ。そのボタンがクリックされるか、或いは再生が終了すると、判定はYESとなり、再生処理用に起動させた楽曲再生用のルーチン(プログラム)をステップSA8で停止させてからステップSA9に移行する。
ステップSA9では、終了指示がされたか否か判定する。「終了」ボタンをユーザーがクリックした場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなって上記ステップSA3に戻る。それにより、次に行うユーザーの指示に備える。
図5は、上記ステップSA4として実行される楽曲データ作成処理のフローチャートである。次に図5を参照して、その作成処理について詳細に説明する。その作成処理は、上記ルーレットを用いた1音符分の楽曲データの作成を支援するための処理である。
その作成処理の説明を開始する前に、その処理内で参照、或いは生成されるデータについて具体的に説明する。
始めに、楽曲データについて説明する。
その楽曲データは、楽曲の演奏内容を音符単位で示すデータ(以降「音符データ」と呼ぶ)の集合体として構成されている。図2(a)中に括弧を付して表記の「Note」はその音符データを表している。括弧内の数値は、音符データを指定するインデックス(値)である。以降、インデックスが判明している音符データには「Note」、及びそれに続けて括弧内にインデックスを示す数値、或いは変数のシンボルを表記したものを付して例えば「音符データNote[0]」といったように記載し、そのインデックスが判明していない音符データには単に「Note」を付して記載することとする。これは他でも同様である。
その音符データNoteは、「iTime」と表記の発音開始ティック(時刻)、「iGate」と表記のゲートタイム(発音継続時間)、「Pitch」と表記のピッチ(ノート番号)、「Vel」と表記の音量を示すベロシティ(値)、及び「pNext」と表記の次に処理対象となる音符データNoteのインデックス、の各データを備えた構成となっている。
図1に示すRAM102は、例えば不図示のバッテリによって不揮発性化されており、楽曲データはそのRAM102に確保された領域に格納されている。その領域に、楽曲データ作成処理を実行することで音符データNoteが1つ追加される。
図3は、ROM103に格納されたリストデータの構成を説明する図である。次に図3を参照して、そのリストデータについて具体的に説明する。
本実施の形態では、音符の種類(ゲートタイム)、及びその音高をそれぞれルーレットで自動的に選択するようにしている。リストデータは、選択候補のなかから一つを選択できるように用意したものである。そのリストデータは、図3(a)に示すゲートタイム用、図3(b)に示すピッチ用に分けて用意している。
図3(a)に示すゲートタイム用のリストデータは、選択候補毎に用意されたデータ(以降「候補データ」と呼ぶ)から構成されている。図中、括弧を付して表記の「RliG」はその候補データを表している。その候補データRliGは、「iID」と表記のルーレット番号、及び「IGate」と表記のゲートタイム、の各データを備えている。候補データRliGの総数は定数nGateとして用意されている。図3(b)に示すピッチ用のリストデータも同様にして、候補データRltP毎に、「iID」と表記のルーレット番号、及び「IPitch」と表記のピッチ、の各データを備えている。候補データRliPの総数から1を引いた値は定数nPitchとして用意されている。
上記リストデータを参照した候補の選択は、乱数を発生させ、その乱数の値からルーレット番号を求め、そのルーレット番号を持つ候補データに格納されたデータ(データIGate、或いはIPitch)を選択結果とすることで行われる。
図5の説明に戻る。
先ず、ステップSB1では、変数pNotetmpに、音符データNoteを格納する空き位置(楽曲データ格納用に確保した領域内のエリア)を示す値を代入、変数pNoteLastに、最後の音符データNoteが格納された位置を示す値を代入する。続くステップSB2では、ゲートタイム用ルーレットの開始が指示されたか否か判定する。そのルーレット用の「スタート」ボタンをユーザーがクリックしなかった場合、判定はNOとなってステップSB8に移行する。そうでない場合には、判定はYESとなってステップSB3に移行する。
ステップSB3では、ルーレットが回転しているような描画を行う。次のステップSB4では、ルーレットの終了が指示されたか否か判定する。そのルーレット用の「ストップ」ボタンをユーザーがクリックしていない場合、判定はNOとなってステップSB3に戻る。それにより、回転している様子を表現するための描画を継続させる。一方、そうでない場合には、判定はYESとなってステップSB5に移行する。
ステップSB5では、乱数を発生させ、ゲートタイム用のリストデータを構成する候補データRltGの総数である定数nGateでその乱数の値を割って得られる余りを変数idxに代入する。次に移行するステップSB6では、変数pNotetmpの値で指定される音符データNoteのデータIGate(図中「Note[pNotetmp].IGate」と表記。以降、その表記法も併せて用いる。これは他でも同様である)として、候補データRltGのなかでデータiIDとして変数idxの値を格納した候補RltGが持つデータIGateを設定する。その後、ステップSB8に移行する。
ステップSB8では、ピッチ用ルーレットの開始が指示されたか否か判定する。そのルーレット用の「スタート」ボタンをユーザーがクリックしなかった場合、判定はNOとなってステップSB13に移行する。そうでない場合には、判定はYESとなってステップSB9に移行する。
ステップSB9〜SB12では、上記ステップSB3〜SB6と同様の処理が行われる。このことから、ここでは詳細な説明は省略することとする。ステップSB13には、ステップSB12の処理の実行後に移行する。
ステップSB13では、確定処理が指示されたか否か判定する。「確定」ボタンをユーザーがクリックしなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップSB14に移行し、変数pNotetmpの値で指定されるエリアにデータIGate、iPitchが共に格納されているか否か判定する。それらのうちの少なくとも一つが格納されていない場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップSB15に移行し、変数pNoteLastの値で指定されるエリアに、データpNextとして変数pNotetmpの値、変数pNotetmpの値で指定されるエリアに、データITimeとして、変数pNoteLastの値で指定されるエリアに格納されたデータITimeの値にそのエリアのデータIGateの値を加算して得られる値(=直前に発音される楽音の発音終了ティック)を格納する。一連の処理はその後に終了する。
データITimeが格納されていないエリアは、空いていると見なすようにしている。それにより、音符列に新たに追加する音符の種類、及びピッチは何れも、「確定」ボタンをクリックしない限り、何度も修正を行えるようにさせている。
次に図4に示す作成支援処理内でステップSA6として実行される再生処理について、図6に示すそのフローチャートを参照して詳細に説明する。
その再生処理では、図2(b)に示すように、RAM102に再生中データを格納する領域を確保し、発音中の楽音を管理するようにしている。ここでも、括弧を付して表記の「OnBuf」は音符データと呼ぶことにする。その音符データOnBufは、「ITime」と表記の発音開始ティック、「IOffTime」と表記の消音時間(発音終了時刻)、「Pitch」と表記のノート番号、及び「PNote」と表記の楽曲データ中で対応する音符データNoteのインデックス値、の各データから構成される。
先ず、ステップSC1では、変数初期化を行う。次のステップSC2では、変数pNoteProgに、再生開始する音符データNoteのインデックス値を代入する。その後は、ステップSC3で変数IBaseTimeに現在時刻(を示す値)を代入してからステップSC4に移行する。
ステップSC4では、変数pNoteProgの値で指定される音符データNote[「pNoteProg]が存在するか、或いは発音中の楽音が存在するか否か判定する。再生の対象となる音符データNoteが存在するか、或いは発音中の楽音が存在する場合、判定はYESとなってステップSC5に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップSC5では、変数INowTimeに現在時刻を代入する。その後は、ステップSC6で消音タイミングとなった楽音を消音させるノートオフ処理、ステップSC7で発音開始タイミングとなった楽音を発音させるノートオン処理、ステップSC8で再生の進行を楽譜上で通知するための楽譜表示処理をそれぞれ実行してから上記ステップSC4に戻る。
以降は、上記再生処理内で実行されるサブルーチン処理について詳細に説明する。
図7は、上記ステップSC7として実行されるノートオン処理のフローチャートである。最初に図7を参照して、そのノートオン処理について詳細に説明する。
先ず、ステップSD1では、変数pNoteProgの値で指定される音符データNoteが存在しないか否か判定する。その音符データNoteが存在しない場合、変数pNoteProgの値で指定されるエリアにはデータが存在しない(NULL)であることから、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなってステップSD2に移行する。
ステップSD2では、変数pNoteProgの値で指定される音符データNote中のデータITimeの値が変数INowTimeの値以上か否か判定する。その音符データNoteによる楽音の発音を開始すべきタイミングが来ていない場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップSD3に移行する。
ステップSD3では、その音符データNoteが示す楽音の発音を指示するためのMIDIデータを生成して、I/F106から出力させる。その後は、ステップSD4で変数iに0を代入してからステップSD5に移行して、変数iの値で指定される音符データOnBufが存在しないか否か判定する。再生中データにその音符データOnBufが存在する場合、判定はNOとなり、ステップSD6で変数iの値をインクリメントしてから再度、ステップSD5で判定を行う。そうでない場合には、判定はYESとなってステップSD7に移行する。
ステップSD7では、変数iの値で指定されるエリアに、変数pNoteProgの値で指定される音符データNoteのデータITimeをデータITimeとして、その音符データNoteのデータITimeの値にデータIGateの値を加算した値をデータIOffTimeとして、その音符データNoteのデータPitchをデータPitchとして、変数pNoteProgの値をデータpNoteとして、それぞれ代入する。そのようにして、変数iの値で指定される音符データOnBufの各データを格納した後にステップSD8に移行して、変数pNoteProgに、その値で指定される音符データNoteのデータpNextの値を代入する。一連の処理はその後に終了する。
図8は、図6に示す再生処理内でステップSC6として実行されるノートオフ処理のフローチャートである。最後に図8を参照して、そのノートオフ処理について詳細に説明する。
先ず、ステップSE1では、変数iに0を代入する。次のステップSE2では、変数iの値で指定される音符データOnBufが存在するか否か判定する。その音符データOnBufが存在する場合、判定はYESとなってステップSE3に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップSE3では、その音符データOnBufのデータIOffTimeの値が変数INowTimeの値未満か否か判定する。その音符データOnBufで発音を管理する楽音の消音タイミングが来ていない場合、判定はNOとなり、ステップSE4で変数iをインクリメントしてから再度、ステップSE2の処理を実行する。そうでない場合には、判定はYESとなってステップSE5に移行し、その音符データOnBufで発音を管理する楽音の消音を指示するMIDIデータをI/F部106から出力させ、更にステップSE6において、その音符データOnBufより大きい変数iの値で指定されるそれ以降の音符データOnBufが存在する想定で全て1つずつ前に詰める処理を行った後、ステップSE4に移行する。その前に詰める処理を行うことにより、変数iの値で指定される音符データOnBufは消去される。
<第2の実施の形態>
上記第1の実施の形態では、図3に示す各リストデータとしては固定のものを利用している。これに対し、第2の実施の形態は、そのリストデータの内容を変更できるようにさせたものである。
第2の実施の形態における作曲支援装置の構成は、基本的に第1の実施の形態におけるそれと同じである。動作も大部分は同じか、或いは基本的に同じである。このことから、第1の実施の形態で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明する。
第2の実施の形態では、図3に示す各リストデータのオリジナルをROM103からRAM102に確保した領域にコピーし、そのコピーしたリストデータに対して変更を加えるようにしている。音符の種類やピッチの選択は、そのように変更が加えられるリストデータを参照して行うようにしている。それにより、リストデータの変更を通して、作曲される楽曲の演奏内容を変化させられるようにすることにより、作曲を行っている実感をより持てるようにさせている。
図10は、リストデータ変更処理のフローチャートである。
その変更処理は、例えば図4に示す作成支援処理内でステップSA5、或いはSA8の処理から移行して実行され、その実行後はステップSA9に移行するようになっている処理である。その変更処理の実行のために、図9に示す楽曲データ作成画面には、例えばゲートタイム用のリストデータの変更を要求するための「ゲートリストの変更」ボタン、及びピッチ用のリストデータの変更を要求するための「ピッチリストの変更」ボタンが更に配置されている。
先ず、ステップSF1では、「ゲートリストの変更」ボタンがクリックされたか否か判定する。そのボタンをユーザーがクリックしなかった場合、判定はNOとなってステップSF11に移行し、そうでない場合には、判定はYESとなってステップSF2に移行する。
ステップSF2では、変数iに0を代入する。次のステップSF3では、変数iの値が定数nGateより小さいか否か判定する。その値が定数nGateより小さい場合判定はYESとなり、ステップSF4で変数ipに、発生させた欄ステップの値を5で割った余りを代入し、ステップSF5で変数iの値で指定される候補データPltGのデータIGateとして、分解能(4分音符の発音時間)IDivに4を掛けた値を、2を変数ipの値乗にした値で割って得られる値(=IDiv×4/2ip)を新たに設定し、更にステップSF6で変数jに0を代入してからステップSF7に移行する。
ステップSF7では、変数jの値が変数iの値未満か否か判定する。変数jの値が変数iの値未満であった場合、判定はYESとなってステップSF8に移行する。そうでない場合には、判定はNOとなり、ステップSF10で変数iの値をインクリメントした後、上記ステップSF3に戻る。
ステップSF8では、変数i、jの各値でそれぞれ指定される候補データRltGのデータIGateが一致しないか否か判定する。それらのデータIGateが一致していた場合、判定はNOとなって上記ステップSF4に戻り、同じデータIGateを持つ候補データRltGは不要として、データIGateの再設定を行う。そうでない場合には、判定はYESとなり、ステップSF9で変数jの値をインクリメントした後、上記ステップSF7に戻る。
このようにして、ゲートタイム用リストデータの変更は、同じデータIGateを持つ候補データRltGが生じないように行われる。それにより、変更によって演奏内容を変化させられる範囲が変化しないようにさせている。
上記ステップSF1の判定がNOとなって移行するステップSF11では、「ピッチリストの変更」ボタンがクリックされたか否か判定する。そのボタンをユーザーがクリックしなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップSF12に移行する。
ステップSF12〜SF20で実行される処理の内容は、上記ステップSF2〜SF10のそれと基本的に同じである。このことから、それらについての詳細な説明は省略する。
<第3の実施の形態>
上記第1の実施の形態では、音符の種類、及びそのピッチは共に自動的に選択させるようになっている。これに対し、第3の実施の形態は、それらをユーザーが自ら選択することも行えるようにさせたものである。その選択も行えるようにしたことにより、ユーザーは自身の考えをより反映させた作曲がより容易に行えるようになる。
第3の実施の形態における作曲支援装置の構成は、基本的に第1の実施の形態におけるそれと同じである。動作も大部分は同じか、或いは基本的に同じである。このことから、第1の実施の形態で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明する。
第3の実施の形態では、図4に示す作曲支援処理内でステップSA4として実行される楽曲データ作成処理が第1の実施の形態から異なっている。このことから、第3の実施の形態における楽曲データ作成処理について、図11に示すそのフローチャートを参照して詳細に説明する。
先ず、ステップSG1では、変数pNotetmpに、音符データNoteを格納する空き位置(楽曲データ格納用に確保した領域内のエリア)を示す値を代入、変数pNoteLastに、最後の音符データNoteが格納された位置を示す値を代入する。続くステップSG2では、ゲートタイム用ルーレットの開始が指示されたか否か判定する。そのルーレット用の「スタート」ボタンをユーザーがクリックしなかった場合、判定はNOとなってステップSG10に移行する。そうでない場合には、判定はYESとなってステップSG3に移行する。
ステップSG3では、例えば上に配置したシンボルの位置は変えないか、或いは殆ど変えない状態でルーレットが回転しているような描画を行う。次のステップSG4では、ルーレットの終了が指示されたか否か判定する。そのルーレット用の「ストップ」ボタンをユーザーがクリックしていない場合、判定はNOとなってステップSG7に移行する。そうでない場合には、判定はYESとなってステップSG5に移行する。
ステップSG5では、乱数を発生させ、その乱数の値を定数nGateで割って得られる余りを変数idxに代入する。次に移行するステップSG6では、変数pNotetmpの値で指定される音符データNoteのデータIGateとして、候補データRltGのなかでデータiIDとして変数idxの値を格納した候補RltGが持つデータIGateを設定する。その後、ステップSG10に移行する。
一方、ステップSG7では、リストの直接指定がされたか否か判定する。例えばルーレット上のシンボルをクリックしなかったような場合、判定はNOとなって上記ステップSG3に戻る。そうでない場合には、判定はYESとなり、ステップSG8で変数idxにシンボルに割り当てられたルーレット番号(index)を代入し、ステップSG9で変数pNotetmpの値で指定される音符データNoteのデータIGateとして、候補データRltGのなかでデータiIDとして変数idxの値を格納した候補RltGが持つデータIGateを設定する。その後、ステップSG10に移行する。
ステップSG10では、ピッチ用ルーレットの開始が指示されたか否か判定する。そのルーレット用の「スタート」ボタンをユーザーがクリックしなかった場合、判定はNOとなってステップSG18に移行する。そうでない場合には、判定はYESとなってステップSG11に移行する。
ステップSG11〜SG17では、上記ステップSG3〜SG9と同様の処理が行われる。ステップSG18〜SG20では、上記ステップSB13〜SB15と同じ処理が行われる。このことから、ここではそれらの詳細な説明は省略することとする。ステップSG18には、ステップSG14、或いはSG17の処理の実行後に移行する。
<第4の実施の形態>
上記第1の実施の形態では、音符列を構成する音符を先頭から順次、決定していくことで作曲を行うようになっている。これに対し、第4の実施の形態は、作成された音符列の所望の位置に音符を任意に挿入できるようにさせたものである。その挿入が任意に行えるようにしたことにより、ユーザーにとっては利便性がより向上し、自身の考えをより反映させた作曲がより容易に行えるようになる。
第4の実施の形態における作曲支援装置の構成は、基本的に第1の実施の形態におけるそれと同じである。動作も大部分は同じか、或いは基本的に同じである。このことから、第1の実施の形態で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明する。
第4の実施の形態では、図4に示す作曲支援処理内でステップSA4として実行される楽曲データ作成処理が第1の実施の形態から異なっている。このことから、第4の実施の形態における楽曲データ作成処理について、図12に示すそのフローチャートを参照して詳細に説明する。
先ず、ステップSH1では、変数pNotePointに、ユーザーが楽譜上のクリック操作等を行って指定した位置に対応する、楽曲データの音符データNoteを指定するインデックス値を代入する。続くステップSH2では、モードの確認を行う。そのモードとして上書きモードが設定されていた場合、その旨が判定されてステップSH3に移行し、変数pNotetmpに変数pNotePointの値を代入してからステップSH7に移行する。そのモードとして挿入モードが設定されていた場合には、その旨が判定されてステップSH4に移行する。なお、上記モードの設定は、特に詳細な説明は省略するが、例えば図9に示す楽曲データ作成画面に新たに配置されたモード設定用のボタンを操作して行うようになっている。
ステップSH4では、変数pNotetmpに、音符データNoteを格納する空き位置(楽曲データ格納用に確保した領域内のエリア)を示す値を代入、変数pNoteLastに、変数pNotePointの前の値(データpNextが変数pNotePointの値となっている音符データNoteを指定するインデックス値)を代入する。次のステップSH5では、変数pNoteLastの値で指定される音符データNoteのデータpNextとして変数pNotetmpの値を設定し、変数pNotetmpの値で指定される音符データNoteのデータpNextとして変数pNotePointの値を設定する。その後はステップSH6において、変数pNotetmpの値で指定される音符データNoteのデータITimeとして変数pNotePointの値で指定される音符データNoteのデータITimeを設定した後、ステップSH7に移行する。
ステップSH7〜SH12の処理は、図5に示すステップSB2〜SB14と基本的には同じである。このことから、それらステップの処理についての詳細な説明は省略し、ステップSH12の判定がYESとなって移行するステップSH13以降の処理について詳細に説明する。
ステップSH13では、変数pNotetmpの値で指定される音符データNoteのデータpNextがNULLでないか否か判定する。その音符データNoteが最後のものであった場合、データpNextはNULLであることから、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップSH14に移行する。
ステップSH14では、変数pNotetmpの値で指定される音符データNoteのデータpNextをインデックス値とする音符データNoteのデータITimeとして、変数pNotetmpの値で指定される音符データNoteにおけるデータITimeの値とデータIGateの値を加算した値を設定する。次のステップSH15では、変数pNotetmpに、その値で指定される音符データNoteのデータpNextの値を代入する。その代入後はステップSH13に戻る。
上音符列(楽曲データ)中に新たに音符(音符データNote)を挿入する場合、モードが上書きモードであっても、その音符のゲートタイムが前の音符のそれと同じであるとは限らない。このことから、本実施の形態では、ステップSH13〜SH15で形成される処理ループをステップSH13の判定がNOとなるまで繰り返し実行することにより、モードの種類に係わらず、音符を挿入した位置より後にある音符の発音開始ティックは全て更新するようにしている。
なお、本実施の形態(第1〜第4の実施の形態)では、音符の種類(ゲートタイム)、及びそのピッチ(楽譜における上下方向の配置)を自動選択の対象としているが、それ以外のもの、例えば音量、発音開始タイミング(楽譜における横方向の配置)などもその対象としても良い。選択候補(選択肢)は、既に作成された他の部分の演奏内容を考慮して動的に変化させるようにしても良い。このようなことを含め、様々な変形を行うことができる。
上述したような作曲支援装置を実現させるようなプログラムは、CD−ROM、DVD、或いは着脱自在なフラッシュメモリ等の記録媒体に記録させて配布しても良い。公衆網等の通信ネットワークを介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してデータ処理装置にロードすることにより、その装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
第1の実施の形態による作曲支援装置の構成を説明する図である。 第1の実施の形態による作曲支援装置のRAMに格納されるデータの構成を説明する図である。 第1の実施の形態による作曲支援装置のROMに格納されたリストデータの構成を説明する図である。 作曲支援処理のフローチャートである。 楽曲データ作成処理のフローチャートである。 再生処理のフローチャートである。 ノートオン処理のフローチャートである。 ノートオフ処理のフローチャートである。 楽曲データ作成画面を説明する図である。 リストデータ変更処理のフローチャートである。 楽曲データ作成処理のフローチャートである(第3の実施の形態)。 楽曲データ作成処理のフローチャートである(第4の実施の形態)。
符号の説明
101 CPU
102 RAM
103 ROM
104 入力装置
105 表示装置

Claims (4)

  1. 楽曲の演奏内容を示す音符の並びである音符列を生成することにより行われる作曲を支援する装置であって、
    前記音符列を構成させる音符単位で、当該音符の種類に対応した乱数をユーザーの指示に応じて発生させるとともに、前記音符の楽譜上の配置に相当する発音条件に対応した乱数を前記ユーザーの指示とは別のユーザーの指示に応じて発生させ、当該音符の種類に対応した乱数及び音符の楽譜上の配置に相当する発音条件に対応した乱数に基づいて当該音符の種類及び楽譜上の配置に相当する発音条件を選択する音符選択手段と、
    前記音符選択手段が選択した音符の種類及び楽譜上の配置に相当する発音条件で指定される音符を有する前記音符列を生成する音符列生成手段と、
    を具備することを特徴とする作曲支援装置。
  2. 前記作曲支援装置はさらに、前記音符の種類及び前記音符の楽譜上の配置に相当する発音条件のうち少なくとも一方において、複数種の指定候補を提示し、ユーザーの指示に応じて該提示させた指定候補のなかから一つを指定するとともに、当該指定された候補を前記音符選択手段が選択した音符の種類あるいは前記音符の楽譜上の配置相当する発音条件とする音符指定手段を有する、
    ことを特徴とする請求項1記載の作曲支援装置。
  3. 前記音符指定手段による指定の対象となる指定候補は変更できる、
    ことを特徴とする請求項2記載の作曲支援装置。
  4. 楽曲の演奏内容を示す音符の並びである音符列を生成することにより行われる作曲を支援する作曲支援装置に適用されるコンピュータに実行させるプログラムであって、
    前記音符列を構成させる音符単位で、当該音符の種類に対応した乱数をユーザーの指示に応じて発生させるとともに、前記音符の楽譜上の配置に相当する発音条件に対応した乱数を前記ユーザーの指示とは別のユーザーの指示に応じて発生させ、当該音符の種類に対応した乱数及び音符の楽譜上の配置に相当する発音条件に対応した乱数に基づいて当該音符の種類及び楽譜上の配置に相当する発音条件を選択する音符選択手段と、
    前記音符選択手段が選択した音符の種類及び楽譜上の配置に相当する発音条件で指定される音符を有する前記音符列を生成する音符列生成手段と、
    を実現させるためのプログラム。
JP2004270273A 2004-09-16 2004-09-16 作曲支援装置、及びプログラム Expired - Fee Related JP4239937B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004270273A JP4239937B2 (ja) 2004-09-16 2004-09-16 作曲支援装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004270273A JP4239937B2 (ja) 2004-09-16 2004-09-16 作曲支援装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2006084855A JP2006084855A (ja) 2006-03-30
JP4239937B2 true JP4239937B2 (ja) 2009-03-18

Family

ID=36163416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004270273A Expired - Fee Related JP4239937B2 (ja) 2004-09-16 2004-09-16 作曲支援装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP4239937B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4815594B2 (ja) * 2006-05-18 2011-11-16 国立大学法人広島大学 演奏インターフェース
JP5092148B2 (ja) * 2007-10-03 2012-12-05 株式会社河合楽器製作所 楽譜編集装置およびプログラム

Also Published As

Publication number Publication date
JP2006084855A (ja) 2006-03-30

Similar Documents

Publication Publication Date Title
US7091410B2 (en) Apparatus and computer program for providing arpeggio patterns
JP6167542B2 (ja) 電子装置及びプログラム
JP4239937B2 (ja) 作曲支援装置、及びプログラム
JP4192936B2 (ja) 自動演奏装置
JP3500750B2 (ja) 自動伴奏装置
JP2013178509A (ja) 電子装置、及び音声ガイド用プログラム
JP2007248880A (ja) 演奏制御装置、およびプログラム
JP4816930B2 (ja) 演奏支援情報生成装置および演奏支援情報生成プログラム
JP2006284908A (ja) カラオケ装置
JP2004258562A (ja) 歌唱合成用データ入力プログラムおよび歌唱合成用データ入力装置
JP5029770B2 (ja) 演奏支援情報生成装置および演奏支援情報生成プログラム
JP2001265335A (ja) 演奏情報入力装置および演奏情報入力方法
JP2005049628A (ja) 音楽教習装置および音楽教習プログラム
JP3788457B2 (ja) 自動演奏装置
JP3635658B2 (ja) 編集指示装置、方法、および該方法に係るプログラム
JP3760940B2 (ja) 自動演奏装置
JP3945307B2 (ja) 演奏ガイド方法、その装置、及びプログラム
JP2006178268A (ja) 楽音制御装置および楽音制御プログラム
JP4966731B2 (ja) 電子楽器および楽曲データの記憶装置
JP4035715B2 (ja) 伴奏生成装置および伴奏生成プログラム
JPH06149241A (ja) 電子楽器
JP2004240442A (ja) 音楽的アミューズメントシステム
JP4696808B2 (ja) 臨時記号表示装置および臨時記号表示プログラム
JP2006215167A (ja) 演奏練習装置および演奏練習プログラム
JP2012042506A (ja) 電子楽器およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081111

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081215

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees