JP5754404B2 - Midi演奏装置 - Google Patents

Midi演奏装置 Download PDF

Info

Publication number
JP5754404B2
JP5754404B2 JP2012074615A JP2012074615A JP5754404B2 JP 5754404 B2 JP5754404 B2 JP 5754404B2 JP 2012074615 A JP2012074615 A JP 2012074615A JP 2012074615 A JP2012074615 A JP 2012074615A JP 5754404 B2 JP5754404 B2 JP 5754404B2
Authority
JP
Japan
Prior art keywords
midi
sound source
note
software
performance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012074615A
Other languages
English (en)
Other versions
JP2013205621A (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.)
Brother Industries Ltd
Original Assignee
Brother Industries 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 Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2012074615A priority Critical patent/JP5754404B2/ja
Publication of JP2013205621A publication Critical patent/JP2013205621A/ja
Application granted granted Critical
Publication of JP5754404B2 publication Critical patent/JP5754404B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Reverberation, Karaoke And Other Acoustics (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

本発明は、MIDI(Musical Instrument Digital Interface)規格の楽曲データに基づいて演奏を行うカラオケ装置等のMIDI演奏装置における、楽曲のキーの音高を任意に調節可能な音高変更機能に関する。
従来、MIDI規格の楽曲データ(以下、MIDIデータとも称する)に基づいて演奏を行うカラオケ装置が普及している。このようなカラオケ装置には、歌唱者の好みに応じて演奏音のキーの音高を任意に調節可能な音高変更機能が設けられているのが一般的である。
この種のカラオケ装置では、演奏中にキー変更操作が行われた場合、次の楽音の音を鳴らすための、MIDIデータに含まれた演奏制御データ(ノートオンメッセージ)を音源に送出する前に、音階データ(ノートナンバー)を元の音階の値から変更後の音階の値に書替えてから音源に送出することが行われている(例えば、特許文献1参照)。
ところで、業務用のカラオケ装置においては、MIDIデータに基づく楽音を発生させるための音源として、カラオケ装置本体に実装されたハードウェアMIDI音源が一般的に用いられている。ハードウェアMIDI音源とは、MIDI音源にMIDIデータを入力し、MIDI音源からMIDIデータに対応した楽音の音声信号を発生して演奏音とすることに特化した、拡張型の音源モジュールである。ハードウェMIDI音源は、カラオケ装置の本体CPU側で実行されるシーケンサから、演奏制御データを専用のシリアル通信ケーブルを介して受信し、その演奏制御データに対応した楽音の音声信号を発生する。
さらに、近年、業務用のカラオケ装置において、ハードウェアMIDI音源に加えて、ソフトウェアMIDI音源を実装し、これらを同時に使用して複数音源による楽曲の演奏を行うカラオケ装置が実用化されつつある。このようにすることで、より多彩なカラオケ演奏が実現できると期待される。ソフトウェアMIDI音源は、カラオケ装置の本体等のコンピュータ制御用のCPUで実行されるプログラムによってMIDI音源をシミュレートするソフトウェアであり、MIDIデータを楽音のPCM(Pulse Code Modulation)データにソフトウェア変換処理してD/Aコンバータに入力し、D/Aコンバータの出力を楽音とする。そのため、拡張型の音源モジュールを用いなくても、MIDIデータに基づく楽音を発生させ、演奏音とすることができる。
特開平10−187155号公報
ところが、ハードウェアMIDI音源とソフトウェアMIDI音源とを比較した場合、その構造の違いから演奏の制御に対する反応速度が異なる。ソフトウェアMIDI音源は、CPUの負荷に起因する処理速度の変動を緩和するために、演奏制御データを一時的に蓄積するバッファのサイズを大きくする傾向がある。そのため、ソフトウェアMIDI音源はハードウェアMIDI音源と比較して、一般的に、演奏制御データが送出されてから実際に発音されるまでの遅延が長く、演奏の制御に対する反応速度が遅い。
ハードウェアMIDI音源とソフトウェアMIDI音源のように、反応速度の異なる複数の音源を同時に使用する構成において、上述の音高変更機能を使用した場合、音高変更を完了するまでの過程においても、音源ごとの反応速度の違いが発生する。すなわち、音高変更時における、ハードウェアMIDI音源とソフトウェアMIDI音源との処理時間差によって、音高変化の過渡状態が音源ごとに異なる。結果として、全ての音源でキーの音高変更が反映されるまでの間に不協和音が発生する場合がある。特に、ソフトウェアMIDI音源側の反応速度の遅さが、不協和音の発生時間を長引かせる原因となっている。
本発明は、上記問題を解決するためになされたものであり、ハードウェアMIDI音源とソフトウェアMIDI音源とを同時に使用するMIDI演奏装置において、音高変更時における不協和音の発生を抑制するための技術を提供することを目的とする。
上記目的を達成するためになされた請求項1に記載の発明は、ハードウェアMIDI演奏制御手段と、ソフトウェアMIDI演奏制御手段とを備え、ハードウェアMIDI音源とソフトウェアMIDI音源とを同時に使用して楽曲データに基づく楽曲の演奏を行うMIDI演奏装置に関する。
ハードウェアMIDI演奏制御手段は、MIDI規格で作成された楽曲データに基づき、MIDI演奏装置に接続されたハードウェアMIDI音源に対して演奏制御データを送出し、ハードウェアMIDI音源に楽曲の楽音を発生させる。このハードウェアMIDI演奏制御手段は、演奏音のキーの音高を変更するキー変更指示を受付けた場合、次の楽音の音を鳴らすための演奏制御データであるノートオンメッセージを送出する前に、次の楽音の音高にキー変更指示で示される変更値を反映してから、次の楽音のノートオンメッセージをハードウェアMIDI音源に送出する。ソフトウェアMIDI演奏制御手段は、MIDI規格で作成された楽曲データに基づき、コンピュータプログラムによってMIDI音源を実現するソフトウェアMIDI音源の処理プロセスに対して演奏制御データを送出し、ソフトウェアMIDI音源に楽曲の楽音を発生させる。
本発明のMIDI演奏装置は、ソフトウェアMIDI演奏制御手段がキー変更処理手段と、ミュート手段とを備える点で特徴を有する。キー変更処理手段は、楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、まず、その変更時点でのソフトウェアMIDI演奏制御手段による楽曲データの再生位置においてノートオンの最中である全ての楽音を対象楽音として、全ての対象楽音に対するノートオフメッセージを、ソフトウェアMIDI音源の処理プロセスに対して送出する。その後、全ての対象楽音の音高にキー変更指示で示される変更値をそれぞれ反映した修正楽音のノートオンメッセージを、ソフトウェアMIDI音源の処理プロセスに対して送出する。さらに、キー変更処理手段は、各対象楽音の本来のノートオフタイミングで、それぞれの対象楽音に対応する前記修正楽音をノートオフするためのノートオフメッセージを生成する。
本発明では、キー変更指示を受付けた場合、その時点でソフトウェアMIDI演奏制御手段においてノートオンの最中である楽音に対するノートオフメッセージが、本来のタイミングより前倒しで即座に発行される。その代わり、キー変更値を反映した修正楽音のノートオンメッセージが新たに発行される。これにより、キー変更指示を受付けた時点でノートオンになっている全ての楽音がノートオフになってから、キー変更を反映した演奏を開始する処理方法と比較して、キーの音高変更が反映されるまでの時間が短縮され、音高変化の過渡状態の長期化を改善できる。その結果、ハードウェアMIDI音源とソフトウェアMIDI音源との処理時間差に起因する、音高変更時の不協和音の発生期間を短縮できる。
さらにミュート手段は、楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、その変更時点から、キー変更処理手段により送出される修正楽音のノートオンメッセージに従ってソフトウェアMIDI音源から出力される音声信号の発音開始までの遅延時間に前記修正楽音のアタックタイムを少なくとも加えた所定期間、ソフトウェアMIDI音源から出力される音声信号に基づく音声出力をミュートする。
このようすることで、キー変更指示を受付けた時点からキーの音高変更が反映されるまでの間、ソフトウェアMIDI音源から出力される音高変更の過渡状態の音声を消す(ミュートする)ことができる。これにより、音高変更時におけるハードウェアMIDI音源とソフトウェアMIDI音源との不協和音を更に低減できる。また、キー変更処理手段の働きによりキーの音高変更が反映されるまでの時間が短縮されているため、ソフトウェアMIDI音源をミュートする期間も比較的短く済むようになっている。
なお、ソフトウェアMIDI音源からの音声をミュートする期間については、キー変更処理手段により送出された修正楽音の発音開始後を終点としてもよい。より好ましくは、キー変更処理手段により送出された修正楽音のアタックタイム(音が鳴り始めてから音量が最大になるまでの立ち上がり時間)や、ディケイタイム(音量が最大になった時点からある一定の音量になるまでの時間)の経過後をミュート期間の終点とすることが考えられる。後者の場合、修正楽音のアタック・ディケイの過程を鳴らさないことで、音高変更時の違和感を低減できる。また、請求項2に記載のように、ミュート手段は、下記(1),(2),(3)の何れか1つの方法で、修正楽音のアタックタイムを特定するように構成することが考えられる。
(1)ソフトウェアMIDI音源が使用可能な全ての音色の中で、アタックタイムが最大となる音色の値を常に使用する。
(2)音色とアタックタイムとの対応を示す、予め用意されたテーブルを参照し、使用する音色のアタックタイムを取得する。
(3)ソフトウェアMIDI音源のエンジンから、全発音中のアタックフェイズ音数を取得し、アタック期間の終了を判定する。
ところで、音階を持たない打楽器の音色が割当てられた楽音をソフトウェアMIDI音源によって演奏する場合、キーの音高変更は反映されないため、音高変更時に伴う不協和音の発生については考慮する必要がない。そこで、請求項3に記載のように構成することが考えらえる。すなわち、ソフトウェアMIDI演奏制御手段は、楽曲データにおいて音階を持たない打楽器以外の楽器の音色が割当てられた楽音のみを対象に、キー変更処理手段による前述の処理を実行するように構成する。このようにすることで、音高変更時における処理の負荷を低減できる。
実施形態のカラオケ装置1の概略構成を示すブロック図。 ソフトウェアMIDI演奏処理の手順を示すフローチャート。 ノートテーブルの内容を模式的に示す説明図。 ミュート制御処理の手順を示すフローチャート。
以下、本発明の一実施形態を図面に基づいて説明する。なお、本発明は下記の実施形態に何ら限定されるものではなく様々な態様にて実施することが可能である。
[カラオケ装置1の構成の説明]
本発明のMIDI演奏装置の実施形態に相当するカラオケ装置1は、図1に示すように、メイン制御部10、ハードディスクドライブ(HDD)20、音声処理モジュール30、操作処理部40、操作部41、通信インタフェース部42、マイクアンプ43、アナログ−デジタル変換部(ADC)44、映像処理部45等を備える。また、カラオケ装置1には、モニタ50、スピーカアンプ51、スピーカ52、マイクロフォン53が接続されている。
メイン制御部10は、カラオケ装置1全体の制御を司る情報処理デバイスである。メイン制御部10は、CPU、ROM、RAM、I/O等を中心に構成されており、HDD20から読込んだプログラムやデータに基づき、種々の処理を実行する。HDD20は、カラオケの伴奏内容を示す楽曲データや歌詞を示す歌詞データを多数収録したカラオケデータベースや、カラオケ装置1の動作を制御するシステムプログラムやアプリケーションプログラム、各種の情報コンテンツの再生に用いられるデータ等の各種データを記憶する。HDD20が記憶する楽曲データには、MIDI規格で作成された伴奏楽音の演奏データ(MIDIデータ)、及び、伴奏の生音を所定の圧縮音声方式(例えば、AAC:Advanced Audio Coding)によりデジタルデータに変換した圧縮音声データの2種類が用意されている。
メイン制御部10は、カラオケ楽曲の演奏に関する機能的構成として、生音再生処理部11、MIDIシーケンサ12、MIDI演奏制御部13、及び、ソフトウェアMIDI音源部14を備える。これらの構成は、メイン制御部10が実行するプログラムによって具現化される。
このうち、生音再生処理部11は、HDD20から読込まれた圧縮音声データの楽曲データをデコードしてカラオケ楽曲を再生する、いわゆる生音再生を行うための音楽再生機能である。生音再生処理部11から出力される楽曲のデジタル音声信号は、音声処理モジュール30のキーコントロール部31に入力される。
MIDIシーケンサ12は、音声処理モジュール30に実装されたMIDI音源32(本発明のハードウェアMIDIに相当)に対して、MIDIデータに基づく楽曲の演奏をさせるためのソフトウェアシーケンサである。このMIDIシーケンサ12は、HDD20から読込まれたMIDIデータに基づき、音声処理モジュール30のMIDI音源32に対して演奏制御データ(MIDIメッセージ)を送出し、MIDI音源32に楽曲の楽音を発生させる。
MIDI演奏制御部13は、メイン制御部10のソフトウェアMIDI音源部14(本発明のソフトウェアMIDIに相当)に対して、MIDIデータに基づく楽曲の演奏をさせるためのソフトウェアシーケンサである。ソフトウェアMIDI音源部14は、メイン制御部10のCPUで実行されるプログラムによってMIDI音源をシミュレートし、MIDIデータに基づく楽音のデジタル音声信号(PCMデータ等)を出力するソフトウェアである。
MIDI演奏制御部13は、HDD20から読込まれたMIDIデータに基づき、ソフトウェアMIDI音源部14に対して演奏制御データ(MIDIメッセージ)を送出するソフトウェアMIDI演奏処理を実行する。また、楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示をユーザから受付けたときに、ソフトウェアMIDI音源部14から出力される音声信号を、所定期間だけ出力経路上でミュートするミュート制御処理を実行する。これらのソフトウェアMIDI演奏処理及びミュート制御処理の詳細な説明については、後述する。
本実施形態のカラオケ装置1では、圧縮音声データに基づく生音再生、ハードウェアMIDI音源、及びソフトウェアMIDI音源を同時に使用して、複数音源による楽曲の演奏を行うことを想定している。そのため、メイン制御部10は、生音再生処理部11、MIDIシーケンサ12、及びMIDI演奏制御部13の各部の処理を並行して行う。
音声処理モジュール30は、メイン制御部10からの各音源に対応する入力信号、及びカラオケ装置1に接続されたマイクロフォン53を通じて入力された歌唱音声のデジタル音声信号に対して、各種デジタル音声処理する音声制御デバイスである。音声処理モジュール30は、キーコントロール部31、MIDI音源32、ミュートスイッチ部33、エフェクト部34、ミキサ35、デジタルアナログ変換部(DAC)36を備える。
キーコントロール部31は、メイン制御部10の生音再生処理部11から出力された生音再生のデジタル音声信号に対して、操作部41等を介してユーザにより設定された演奏音のキーの音高に合わせて再生音の音高を変更し、ミキサ35に出力する。なお、ハードウェアMIDI音源及びソフトウェアMIDI音源におけるキーの音高の調節は、メイン制御部10のMIDIシーケンサ12及びMIDI演奏制御部13が行う。
MIDI音源32は、MIDIシーケンサ12から送出されるMIDIメッセージに基づいて、楽曲の楽音のデジタル音声信号を生成し、ミキサ35に出力する。MIDI音源32の機能は、カラオケ装置等に実装される周知のハードウェアMIDI音源と同様である。ミュートスイッチ部33は、メイン制御部10のソフトウェアMIDI音源部14から出力されるデジタル音声信号の出力経路の途中にあるスイッチである。ミュートスイッチ部33は、MIDI演奏制御部13からの制御に応じて、ソフトウェアMIDI音源部14からのデジタル音声信号のミキサ35への入力を入り切りする。エフェクト部34は、ADC44によって変換されたマイク入力音のデジタル音声信号に対して、エコー等の音響効果を付加してミキサ35に出力する。
ミキサ35は、キーコントロール部31、MIDI音源32、ミュートスイッチ部33、及びエフェクト部34の各部から入力された複数音源のデジタル音声信号を、音量や音色等のバランスを調節してミキシングし、ミキシングしたデジタル音声信号をDAC36に出力する。DAC36は、ミキサ35によりミキシングされて生成されたデジタル音声信号を、アナログ音声信号に変換する。DAC36により変換されたアナログ音声信号は、カラオケ装置1に接続されたスピーカアンプ51によって増幅され、スピーカアンプ51に接続されたスピーカ52から放音される。
操作部41は、演奏するカラオケ楽曲を指定する操作や、演奏中にキーの音高を変更する操作等の各種操作を行うための入力装置である。操作処理部40は、操作部41からの信号を処理してメイン制御部10に入力する。通信インタフェース部42は、カラオケ装置1をLAN100に接続し、他のカラオケ装置や、リモコン端末、外部のサーバ等の情報処理装置との間で通信を行うための構成である。
マイクアンプ43は、カラオケ装置1に接続されるマイクロフォン53から入力される歌唱者の音声(アナログ音声信号)を増幅する増幅器である。ADC44は、マイクアンプ43からのアナログ音声信号を、デジタル音声信号に変換する変換器である。映像処理部45は、画像情報を映像化するグラフィックエンジンや圧縮形式の映像データを再生するデコーダからなる映像処理装置である。映像処理部45によって映像化された画像情報は、カラオケ装置1に接続されたモニタ50に表示される。なお、カラオケ装置1におけるその他の機能や構成については公知技術に従っているので、ここでの詳細な説明は省略する。
[ソフトウェアMIDI演奏処理の説明]
メイン制御部10が、MIDI演奏制御部13として実行するソフトウェアMIDI演奏処理の手順について、図2のフローチャートを参照しながら説明する。この処理は、ユーザによりリクエストされたカラオケ楽曲のMIDIデータを構成するトラックのうち、ソフトウェアMIDI音源用に割当てられた特定のトラックを演奏するときに実行される。なお、本処理と並行して、ハードウェアMIDI音源用に割当てられたトラックを演奏するための演奏処理が、MIDIシーケンサ12において別途実行される。MIDIシーケンサ12による演奏処理の手順については、従来の演奏動作と同様であるので、説明は省略する。
MIDI演奏制御部13は、S100において、tick(ティック)値のカウンタを0にセットする。tickは、MIDIデータの処理の時間間隔の最小単位である。つぎに、S102では、現時点において設定されているキー値を取得し、取得したキー値を「tick先頭キー値」としてRAMに記憶する。ここでいうキー値とは、演奏中にユーザによって設定されたキーの変更量を示す値であり、キーの音高を原曲から上げる場合は正の数値、キーの音高を原曲から下げる場合は負の数値で表現される。なお、現在のキー値を設定する処理が本処理と並行して別途実行されている。そのため、本処理の手順とは関係なく、現在のキー値は随時変更され得る。
つぎに、S104では、現在のキー値と、メモリに記憶している「tick先頭キー値」とが異なっているか否かを判定する。現在のキー値と「tick先頭キー値」とが異なる場合(S104:YES)、すなわちキー値の変更が行われた場合、S134に進む。一方、現在のキー値と「tick先頭キー値」とが同じ値である場合(S104:NO)、すなわちキー値の変更が行われていない場合、S106に進む。
キー値の変更が行われていない場合に進むS106では、現在のキー値を「tick先頭キー値」としてRAMに記憶する。つぎのS108では、MIDIデータにおける現在の処理位置に該当のイベントが、現tickで処理するものであるか否かを判定する。現在の処理位置に該当のイベントが、現tickで処理するものである場合(S108:YES)、S110に進む。一方、現在位置に該当のイベントが、現tickで処理するものではない場合(S108:NO)、S130に進む。
現在の処理位置に該当のイベントを現tickで処理する場合に進むS110では、処理対象のイベントがノートオンであるか否かを判定する。処理対象のイベントがノートオンである場合(S110:YES)、S112に進む。一方、処理対象のイベントがノートオンでない場合(S110:NO)、S116に進む。
処理対象のイベントがノートオンである場合に進むS112では、このノートオンに対応するノートオフのイベントに関するデータをMIDIデータから先読みして探し出す。そして、このノートオフのデータに記述されている「送出しtick(当該ノートオフを音源に送出するタイミングを示すtick値)」、「チャンネルナンバー」、及び「ノートナンバー」と、メモリに記憶している「tick先頭キー値」とを、ノートテーブル内の未使用レコードに登録する。ノートテーブルは、メイン制御部10のRAM等に記憶される。
ここで、上記のノートテーブルの具体的な内容について図3を参照しながら説明する。ノートテーブルは、現時点でノートオンの最中である楽音に対応するノートオフイベントに関するデータを先読みして、一覧として記述したものである。図3(a)に示すように、ノートテーブルは、「使用有無フラグ」、「送出しtick」、「チャンネルナンバー」、「ノートナンバー」、及び「登録キー値」の各情報で構成されるレコードの集合である。ノートテーブルには、1番からn番まで総数nのレコードを記述するスペースが用意されている。なお、レコードの総数nは、ソフトウェアMIDI音源の同時最大発音数よりも十分大きい数である必要がある。
レコード内の「使用有無フラグ」には、そのレコードが使用中であるか否か、すなわち、ノートオンの最中である楽音に対応するノートオフイベントのデータが登録されているか否かを示す情報が記述される。図3(b)は、ノートオフイベントのデータ登録されていない未使用レコードの一例である。また、図3(c)は、ノートオフイベントのデータ登録されている使用中レコードの一例である。
使用中レコード内の「送出しtick」には、当該レコードに登録されているノートオフイベントに対応するMIDIメッセージを送出すべき本来のタイミングを示すtick値が記述されている。使用中レコード内の「チャンネルナンバー」には、該当するMIDIチャンネルを特定する情報が記述されている。使用中レコード内の「ノートナンバー」には、当該レコードに登録されているノートオフイベントに対応する楽音の元の音高を示す値が記述されている。使用中レコード内の「登録キー値」には、当該レコードを登録した時点、又は、レコードの内容が更新された時点の「tick先頭キー値」が記述されている。
図2のフローチャート説明に戻る。S112でノートテーブルにレコードを登録した後に進むS114では、メモリに記憶している「tick先頭キー値」を、処理対象のノートオンイベントのMIDIデータで示されるノートナンバーに加算し、ノートナンバーを修正する。その上で、ノートナンバーを修正したノートオンメッセージを、ソフトウェアMIDI音源部14のプロセスに対して送出する。ノートオンメッセージの送出後、S126に進む。
一方、S110で処理対象のイベントがノートオンでないと判断した場合に進むS116では、当該イベントがノートオフであるか否かを判定する。処理対象のイベントがノートオフである場合(S116:YES)、S118に進む。一方、処理対象のイベントがノートオフでない場合(S116:NO)、S124に進む。
処理対象のイベントがノートオフである場合に進むS118では、メモリに記憶しているノートテーブルの中から、処理対象のノートオフに対応するレコードを探し出す。処理対象のノートオフに対応するレコードとは、レコード内の「送出しtick」、「チャンネルナンバー」、「ノートナンバー」の各値が、現在のtick値、当該ノートオフのイベントに関するMIDIデータで示されるにおける「チャンネルナンバー」、「ノートナンバー」の各値と一致するレコードである。次のS120では、探し出したレコードから読出した「登録キー値」を、当該レコードから読出した「ノートナンバー」に加算し、ノートナンバーを修正する。その上で、修正したノートナンバーに相当するノートオフメッセージを、ソフトウェアMIDI音源部14のプロセスに対して送出する。そして、S122では、ノートテーブルに対して、送出したノートオフメッセージに該当のレコードの内容をクリアする(未使用にする)。レコードをクリアした後、S126に進む。
一方、S116で処理対象のイベントがノートオフでないと判断した場合に進むS124では、処理対象のイベントに対応するMIDIメッセージを、ソフトウェアMIDI音源部14のプロセスに対して送出する。MIDIメッセージの送出後、S126に進む。
S126では、MIDIデータの現在の処理位置を次のイベントに進める。そして、S128では、処理位置がMIDIデータの終端に到達したか否かを判定する。ここで、処理位置がMIDIデータの終端に到達していない場合(S128:NO)、S108に戻る。
S108で現在位置のイベントを現tickで処理しないと判断した場合に進むS130では、1tick分の時間が経過するまで待機する。1tick分の時間は、楽曲のテンポ及び分解能(1拍あたりのtick数)によって決められる。つぎのS132では、tick値のカウンタに1を加算し、S104に戻る。
S104において、現在のキー値と「tick先頭キー値」とが異なる(すなわち、キー値の変更が行われた)と判定した場合に進むS134では、ノートテーブルに登録されている全ての使用中レコードについて、各レコードから読出した「登録キー値」を、当該レコードから読出した「ノートナンバー」に加算してノートナンバーを修正する。その上で、全ての使用中レコードについて、ノートナンバーを修正したノートオフメッセージを、ソフトウェアMIDI音源部14のプロセスに対して一斉に送出する。S134で送出されるノートオフメッセージによって、キー変更が行われた時点でノートオンの最中である全ての楽音は、本来のノートオフのタイミングより前倒してノートオフされることになる。
つぎのS136では、現在のキー値(変更後)を取得し、取得したキー値を「tick先頭キー値」として記憶する。そして、S138では、ノートテーブルに登録されている全ての使用中レコードの「登録キー値」に、現時点の「tick先頭キー値」をセットし、ノートテーブルを更新する。S140では、ノートテーブルに登録されている全ての使用中レコードについて、各レコードから読出した「登録キー値」を、当該レコードから読出した「ノートナンバー」に加算してノートナンバーを修正する。その上で、全ての使用中レコードについて、ノートナンバーを修正したノートオンメッセージを、ソフトウェアMIDI音源部14のプロセスに対して送出する。
キー変更が行われた時点で一旦ノートオフにされた全ての楽音は、S140で送出されるノートオンメッセージによって、変更後のキー値を反映した音高に修正された上で再度ノートオンされることになる。また、ノートテーブルにおいて、キー変更に伴い各使用中レコードの登録キー値が更新されるので、ノートオンの途中で音高が変更された楽音についても、正しいタイミングでノートオフできるようになっている。
以上の手順を繰返すことでソフトウェアMIDI音源に対するMIDIデータの処理を順次行い、MIDIデータの終端に到達した場合(S128:YES)、本処理を終了する。
[ミュート制御処理の説明]
メイン制御部10が、MIDI演奏制御部13として実行するミュート制御処理の手順について、図4のフローチャートを参照しながら説明する。この処理は、上述のソフトウェアMIDI演奏処理と同時に並行して実行される。
MIDI演奏制御部13は、S200において、操作部41又はリモコン端末(図示なし)を介して、演奏中の楽曲のキーの音高を変更するキー変更操作が入力されたか否かを判定する。キー変更操作が入力された場合(S200:YES)、S202に進む。一方、キー変更操作が入力されていない場合(S200:NO)、S208に進む。
キー変更操作が入力された場合に進むS202では、音声処理モジュール30のミュートスイッチ部33を制御して、ソフトウェアMIDI音源部14からの出力をミュートする。なお、S202では、既にミュートを実行している状態である場合、再度ミュートを実行する。次のS204では、先のS202においてミュートを開始した時刻(ミュート開始時刻)を記憶する。そして、S206では、記憶している現在のキー値の設定を、入力されたキー変更操作によって指示された値に変更する。現在のキー値の変更後、S200に戻る。S206で現在のキー値が変更されることで、上述のソフトウェアMIDI演奏処理(図2)のS104で肯定判定がなされる。その結果、その時点でノートオン中の楽音に対応するノートオフメッセージが即座に発行され、さらに、変更されたキー値を判定した修正楽音のノートオンメッセージが発行される。
一方、S200でキー変更操作が入力されていないと判定した場合に進むS208では、最後にミュートを実行したときのミュート開始時刻から規定時間が経過したか否かを判定する。ミュート開始時刻から規定時間が経過している場合(S208:YES)、S210に進み、ミュートスイッチ部33によるミュートを解除する。ミュート解除後、S200に戻る。一方、ミュート開始時刻から規定時間が経過していない場合(S208:NO)、S200に戻る。
なお、ここでいう「規定時間」の具体的内容は、ソフトウェアMIDIの遅延時間に、キー変更後に鳴らす楽音のアタックタイム、あるいはアタックタイムとディケイタイムとを加えた時間とすることが考えられる。ソフトウェアMIDIの遅延時間は、MIDI演奏制御部13からソフトウェアMIDI音源部14に対してノートオンメッセージが送出された時点から、実際にソフトウェアMIDI音源部14により楽音の発音が開始されるまでに要する一定時間である。
ただし、MIDI音源が楽音を鳴らすときのアタックタイムやディケイタイムの長さは、楽音を鳴らすときの音色(楽器の種類)によって異なる。そこで、ミュートを行う規定時間に反映するアタック・ディケイタイムの決定方法として、下記の(1)〜(3)のような方法が考えられる。
(1)使用可能な全ての音色の中でアタック・ディケイタイムが最大となる音色の値を常に使用する。
(2)音色とアタック・ディケイタイムとの対応を示すテーブルを予め用意しておき、このテーブルを参照して、使用する音色のアタック・ディケイタイムを取得する。
(3)ソフトウェアMIDI音源のエンジンから、全発音中のアタック・ディケイフェイズ音数を取得し、アタック・ディケイ期間の終了を判断する。
[効果]
上記実施形態のカラオケ装置1によれば、以下の効果を奏する。
(1)キー変更操作が入力された場合、ソフトウェアMIDI音源部14に対して、その時点でノートオンの最中である楽音に対するノートオフメッセージが、本来のタイミングより前倒しで即座に発行される。その代わり、キー変更値を反映した修正楽音のノートオンメッセージが、ソフトウェアMIDI音源部14に対して新たに発行される。これにより、キーの音高変更が反映されるまでの時間が従来よりも短縮され、音高変化の過渡状態の長期化を改善できる。その結果、ハードウェアMIDI音源とソフトウェアMIDI音源との処理時間差に起因する、音高変更時の不協和音の発生期間を短縮できる。
(2)キー変更操作が入力された時点から演奏音に反映されるまでの所定の期間、ソフトウェアMIDI音源部14から出力される音高変更の過渡状態の音声をミュートすることができる。これにより、ソフトウェアMIDI演奏処理の働きと合わせて、音高変更時における不協和音の発生を更に低減できる。また、ミュートを終了する時期を、ソフトウェアMIDI音源の遅延時間+アタック・ディケイタイムの経過後とすることで、ミュート期間終了直後に鳴る演奏音の違和感を低減できる。
[カラオケ装置1に適用可能なその他の工夫]
実施形態のカラオケ装置1に適用可能なその他の工夫について説明する。
MIDI演奏制御部13による上述のソフトウェアMIDI演奏処理(図2)では、キー変更操作が入力されてS104で肯定判定をした後、S134及びS140の処理について、MIDIデータにおいて音階を持たない打楽器以外の楽器の音色が割当てられた楽音のみを対象に実行するように構成してもよい。例えば、ノートテーブルに登録されている各楽音について、それぞれの音色を判別し、音階を持つ音色が割当てられた楽音に対応するレコードについてのみ、S134及びS140の処理を実行する。一方、音階を持たない打楽器の音色が割当てられた楽音に対応するレコードについては、S134及びS140の処理は無視する。
このようにするのは、MIDI音源において、音階を持たない打楽器の音色が割当てられた楽音にはキーの音高変更は反映されず、キー変更に伴う不協和音の発生について対処する必要がないからである。このような工夫により、キー変更時におけるソフトウェアMIDI音源の処理の負荷を低減できる。
[特許請求の範囲に記載の構成との対応]
実施形態のカラオケ装置1と、特許請求の範囲に記載の構成との対応は次のとおりである。MIDIシーケンサ12が、ハードウェアMIDI演奏制御手段に相当する。MIDI演奏制御部13が、ソフトウェアMIDI演奏制御手段に相当する。また、MIDI演奏制御部13が実行するソフトウェアMIDI演奏処理(図2)が、キー変更処理手段に相当する。MIDI演奏制御部13が実行するミュート制御処理(図4)が、ミュート手段に相当する。
1…カラオケ装置、10…メイン制御部、11…生音再生処理部、12…MIDIシーケンサ、13…MIDI演奏制御部、14…ソフトウェアMIDI音源部、20…ハードディスクドライブ(HDD)、30…音声処理モジュール、31…キーコントロール部、32…MIDI音源、33…ミュートスイッチ部、34…エフェクト部、35…ミキサ、36…デジタル−アナログ変換部(DAC)、40…操作処理部、41…操作部、42…通信インタフェース部、43…マイクアンプ、44…アナログ−デジタル変換部(ADC)、45…映像処理部、50…モニタ、51…スピーカアンプ、52…スピーカ、53…マイクロフォン、100…LAN。

Claims (3)

  1. MIDI規格で作成された楽曲データに基づき、MIDI演奏装置に接続されたハードウェアMIDI音源に対して演奏制御データを送出し、前記ハードウェアMIDI音源に楽曲の楽音を発生させるハードウェアMIDI演奏制御手段と、
    MIDI規格で作成された楽曲データに基づき、コンピュータプログラムによってMIDI音源を実現するソフトウェアMIDI音源の処理プロセスに対して演奏制御データを送出し、前記ソフトウェアMIDI音源に楽曲の楽音を発生させるソフトウェアMIDI演奏制御手段とを備え、
    前記ハードウェアMIDI音源と前記ソフトウェアMIDI音源とを同時に使用して楽曲データに基づく楽曲の演奏を行うMIDI演奏装置であって、
    前記ハードウェアMIDI演奏制御手段は、演奏音のキーの音高を変更するキー変更指示を受付けた場合、次の楽音の音を鳴らすための演奏制御データであるノートオンメッセージを送出する前に、次の楽音の音高に前記キー変更指示で示される変更値を反映してから、次の楽音のノートオンメッセージを前記ハードウェアMIDI音源に送出し、
    前記ソフトウェアMIDI演奏制御手段は、
    楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、その変更時点での前記ソフトウェアMIDI演奏制御手段による前記楽曲データの再生位置においてノートオンの最中である全ての楽音を対象楽音として、全ての対象楽音に対するノートオフメッセージを、前記ソフトウェアMIDI音源の処理プロセスに対して送出した後、前記全ての対象楽音の音高に前記キー変更指示で示される変更値をそれぞれ反映した修正楽音のノートオンメッセージを、前記ソフトウェアMIDI音源の処理プロセスに対して送出し、さらに、前記各対象楽音の本来のノートオフタイミングで、それぞれの対象楽音に対応する前記修正楽音をノートオフするためのノートオフメッセージを生成するキー変更処理手段と、
    楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、その変更時点から、前記キー変更処理手段により送出される前記修正楽音のノートオンメッセージに従って前記ソフトウェアMIDI音源から出力される音声信号の発音開始までの遅延時間に前記修正楽音のアタックタイムを少なくとも加えた所定期間、前記ソフトウェアMIDI音源から出力される音声信号に基づく音声出力をミュートするミュート手段とを備えること
    を特徴とするMIDI演奏装置。
  2. 請求項1に記載のMIDI演奏装置において、
    前記ミュート手段は、下記(1),(2),(3)の何れか1つの方法で、前記修正楽音のアタックタイムを特定することを特徴とするMIDI演奏装置。
    (1)前記ソフトウェアMIDI音源が使用可能な全ての音色の中で、アタックタイムが最大となる音色の値を常に使用する。
    (2)音色とアタックタイムとの対応を示す、予め用意されたテーブルを参照し、使用する音色のアタックタイムを取得する。
    (3)前記ソフトウェアMIDI音源のエンジンから、全発音中のアタックフェイズ音数を取得し、アタック期間の終了を判定する。
  3. 請求項1又は請求項2に記載のMIDI演奏装置において、
    前記ソフトウェアMIDI演奏制御手段は、楽曲データにおいて音階を持たない打楽器以外の楽器の音色が割当てられた楽音のみを対象に、前記キー変更処理手段による処理を実行すること
    を特徴とするMIDI演奏装置。
JP2012074615A 2012-03-28 2012-03-28 Midi演奏装置 Active JP5754404B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012074615A JP5754404B2 (ja) 2012-03-28 2012-03-28 Midi演奏装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012074615A JP5754404B2 (ja) 2012-03-28 2012-03-28 Midi演奏装置

Publications (2)

Publication Number Publication Date
JP2013205621A JP2013205621A (ja) 2013-10-07
JP5754404B2 true JP5754404B2 (ja) 2015-07-29

Family

ID=49524768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012074615A Active JP5754404B2 (ja) 2012-03-28 2012-03-28 Midi演奏装置

Country Status (1)

Country Link
JP (1) JP5754404B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101881854B1 (ko) * 2017-02-21 2018-07-25 김진갑 소프트웨어 기반의 미디 음원 재생 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2525933B2 (ja) * 1990-06-06 1996-08-21 パイオニア株式会社 音程制御装置
JPH10187155A (ja) * 1996-12-20 1998-07-14 Yamaha Corp カラオケ装置
JP3574346B2 (ja) * 1999-03-03 2004-10-06 株式会社河合楽器製作所 自動伴奏装置
JP4089447B2 (ja) * 2003-01-24 2008-05-28 ヤマハ株式会社 演奏データ処理装置および演奏データ処理用プログラム
JP3796752B2 (ja) * 2003-09-24 2006-07-12 ヤマハ株式会社 音楽演奏プログラム
JP2009244643A (ja) * 2008-03-31 2009-10-22 Yamaha Corp 曲データ再生装置、曲データ配信装置、および該曲データ再生装置および曲データ配信装置をそれぞれ制御する各制御方法を実現するためのプログラム

Also Published As

Publication number Publication date
JP2013205621A (ja) 2013-10-07

Similar Documents

Publication Publication Date Title
JP5119932B2 (ja) 鍵盤楽器、ピアノおよび自動演奏ピアノ
JP7124371B2 (ja) 電子楽器、方法及びプログラム
JP4274272B2 (ja) アルペジオ演奏装置
JP3915807B2 (ja) 奏法自動判定装置及びプログラム
JP4802857B2 (ja) 楽音合成装置及びプログラム
JP4175337B2 (ja) カラオケ装置
JP2007183442A (ja) 楽音合成装置及びプログラム
JP5897805B2 (ja) 楽音制御装置
JP5394401B2 (ja) オーディオプレーヤ間の出力ボリュームの類似性の改善のためのシステムおよび方法
JP5754404B2 (ja) Midi演奏装置
CN111279412A (zh) 音响装置及音响控制程序
JP2006126710A (ja) 奏法決定装置及びプログラム
JP4802947B2 (ja) 奏法決定装置及びプログラム
JP7332002B2 (ja) 電子楽器、方法及びプログラム
JP7124370B2 (ja) 電子楽器、方法及びプログラム
JP4100420B2 (ja) カラオケ装置
JP3956504B2 (ja) カラオケ装置
JPH10171475A (ja) カラオケ装置
JP6264660B2 (ja) 音源制御装置、カラオケ装置、音源制御プログラム
JP4124227B2 (ja) 音源装置
JP3407563B2 (ja) 自動演奏装置及び自動演奏方法
JP4067007B2 (ja) アルペジオ演奏装置及びプログラム
JP2004170840A (ja) 演奏制御装置および演奏制御用プログラム
CN117437898A (zh) 音输出系统
JP2006091460A (ja) 音源用波形データの決定装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140311

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150403

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150511

R150 Certificate of patent or registration of utility model

Ref document number: 5754404

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150