MIDI Chord Helper マニュアル

幾度となくバージョンアップを繰り返しているので、情報の古いところがあるかも知れません (気が向いたときに直していきます)

設定方法

動作環境

Sun の最新の Java 実行環境 (JRE: Java Runtime Environment) が必要ですが、 すでにインストールされていることも多いと思います。下記のサイトで確認してみてください。

[Java ソフトウェアの無料ダウンロード]

ブラウザの中でアプレットとして動作させるだけでなく、jar ファイルをダウンロードして通常のアプリケーションとして動かすこともできます。

こちらでは Windows XP + JRE 6 で動作を確認していますが、 Java 自体は OS やブラウザに依存しないので、JRE がその OS をサポートしてさえいれば、 Windows 以外でも原理的には動くはずです。 手元にないので自分では検証できませんが、Linux や Mac で動いたという報告はあります。 詳細はユーザの声のほうを参考にしてください。 なお、Mac での動作は、SOFTPEDIA によって確認されています。 ブラウザは、主に 最新の Mozilla Firefox で試していますが、IE7 などでも動くと思います。

Windows の IE でアプレットとして動かす場合

Windows XP や Windows 98 などでは、Java 実行環境として Microsoft VM (MSJVM) が入っていますが、MIDI Chord Helper は MSJVM の上では動作しません。 現在では MSJVM はすでにサポートを終了しているので、 Java の「本家」である Sun の JRE に切り替えておくことをおすすめします。 切り替えについての詳細は Sun のサイトにある「Java の Microsoft VM から Sun JRE への移行」を参照してください。

デスクトップ上の Internet Explorer のアイコンを右クリックし、 [プロパティ] を選んで下記の画面を表示させ、 [詳細設定] タブにあるJava (Sun) の下記の部分がチェックされていることを確認します。



もし Java (Sun) の項目がない場合、Sun の JRE をインストールする必要があります。

古い JRE で Firefox を使っている場合の注意点

Firefox + JRE 6 Update5の組み合わせで Java アプレットを開くと、Firefox がフリーズするという症状が発生することがあります (MIDI Chord Helper に限らず他のアプレットでも再現します)。 Update6 ではこの問題は解決しています。
→ 参考:TJINのソフト開発メモ:[Java]Java 6 Update 6 がJava.comで公開

Update5 でこの現象を回避したい場合は、Windows の場合、コントロールパネルから Java コントロールパネル → 基本タブ → ネットワーク設定 → ネットワークプロキシ設定 →「ブラウザの設定を使用」を「直接接続」に変更します。

【参考】
なお、いったんフリーズすると、画面のない Firefox プロセスが残ったままになることがあります。 こうなると Firefox を起動できなくなってしまいます。Windows の場合、 タスクマネージャで「プロセス」タブを開いて firefox.exe を右クリックして 「プロセスツリーを終了」することで、 リブートしなくても再び Firefox を起動できるようになります。

MIDI 音源

音を出すには MIDI 音源が必要ですが、最近の Windows では最初から Microsoft GS Wavetable SW Synth という Roland GS 音源が ついているので、これをそのまま活用できます。
MIDI 音源(出力デバイス)が複数ある場合の選択方法についてはこちらを参照してください。

MIDI接続設定

MIDI device connection ボタンで、MIDI デバイス接続画面が表示されます。 この画面では、ドラッグ&ドロップで MIDI デバイス間の接続を自由に組み替えることができます。

MIDIデバイスの種類

MIDIデバイスは次のようにグループ分けされています。

MIDIデバイスの開閉と接続

ドラッグ&ドロップで新しい MIDI デバイスを開くことができます。

起動直後は一番最初の MIDI OUT(Windows の場合は Microsoft MIDI マッパー)および MIDI IN が自動的に開かれ、GUI やシーケンサーとの接続も自動的に行われています。

手動でデバイスを開きたいときは、 左側のツリーメニューで MIDI IN または MIDI OUT を開き、 その中から開きたい MIDI デバイスをドラッグし、右側の接続図へドロップしてください。 なお、手動で開いても接続は自動的には行われません。

デバイス間を接続するには、Tx(Transmitter:MIDI信号の送信端子)からドラッグし、 Rx(Receiver:MIDI信号の受信端子)へドロップしてください。
デバイスを閉じるには、デバイス名の書かれたタイトルバーの右にある×をクリックしてください。 なお、×のないデバイスは、対応する GUI があるため閉じられないようになっています。

Java内蔵音源

Java Sound Synthesizer は Java の内蔵音源で鳴らすためのデバイスですが、 最近の JRE にはサウンドバンクがついていないため、このデバイスを選んでも、 そのままでは音が鳴りません。この音源で鳴らしたい場合は、Downloads Java Sound API: Soundbanks(英語)に従って ダウンロード&インストールを行う必要があります。 基本的にはダウンロードしたサウンドバンクファイル soundbank.gm を C:\Program Files\Java\jre<バージョン番号>\lib\audio に格納するだけです。 Java 内蔵音源を使うことで、Windows 内蔵音源とは一味違った音色を楽しめます。

仮想 MIDI ポートドライバ

MIDI IN/OUT のデバイスを別のシーケンスソフトの MIDI OUT/IN に接続するには 仮想 MIDI ポートドライバが必要ですが、これを実現するソフトして MIDI Yoke がよく知られています。 MIDI Yoke を入れておけば、マウスでコードを鳴らして他のシーケンスソフトへ リアルタイム入力するなど、応用範囲が広がります。

ブラウザ内における MIDI デバイスの同時使用について

アプレットとして起動している場合、MIDI OUT(出力デバイス)を開いているときに、 同じブラウザの別のWebページで同じ出力デバイスを同時に開くことはできません。 例えば、次のような現象が確認されています。 このような現象を回避するには、まず、使っていないほうで MIDI OUT を閉じ、 使うほうで MIDI OUT を開きなおす必要があります。

ネットワークに接続せずに使う(ダウンロードしてオフラインで使う)

ネットワークにつながらない環境で使いたい場合は、まず、アプレットの jar (= Java ARchive) ファイルを ダウンロードしてください。

[midichordhelper.jar - 右クリックしてダウンロード]

「対象をファイルに保存」(IE7 の場合)あるいは「名前をつけてリンク先を保存」 (Firefox の場合)を選んで midichordhelper.jar を保存してください。

※ IE を使っていると、ファイル名が midichordhelper.zip と誤認される場合があります。 もし .zip になっていたら .jar に変えて保存してください。

Java アプリケーションとして使う

この midichordhelper.jar は Java アプレットとしてだけでなく、Java アプリケーションとしても起動できます。 Java アプレットと違って MIDI ファイルの読み書きを直接行えるので、オフラインで使う場合におすすめです。

【起動方法】
いくつかの方法があります。
コマンドプロンプトから起動する場合は次のようにして起動します (xxxdirxxx は midichordhelper.jar のあるフォルダ)。

 cd xxxdirxxx
 java -jar midichordhelper.jar


MIDI ファイルをダブルクリックして開くときのアプリケーションとして登録することもできます。 Windows XP の場合、C:\Program Files\MIDI Chord Helper\ というフォルダを作成して、 その中に midichordhelper.bat と midichordhelper.jar を格納しておくとよいでしょう。 midichordhelper.bat(バッチファイル)には、例えば以下の内容を入れておきます。

 start /b javaw -jar "C:\Program Files\MIDI Chord Helper\midichordhelper.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

次に、何か適当な MIDI ファイルを右クリックして「プログラムから開く」→「プログラムの選択」で 表示される「ファイルを開くプログラムの選択」画面で「参照」から、 先ほど作成した midichordhelper.bat を選びます。「いつも使う」の チェックボックスを選んでおけば、MIDI ファイルをダブルクリックするだけで MIDI Chord Helper を 起動できるようになります。

バッチファイルを使わず、ツールを使って jar ファイルを exe ファイルに変換する方法もあります。 このようなツールはいくつか出回っていますが、中でも特に軽量さを重視して作られたツールとして exewrap があります。 以下に、exewrap を使って midichordhelper.exe を作成する例を示します:

 exewrap.exe -g -e DDE_CONNECT -i midichordhelper.ico midichordhelper.jar

-e DDE_CONNECT は二重起動の検出用で、MIDI Chord Helper ではこれに対応した 二重起動の検出機能を実装しています。 すでに起動中の MIDI Chord Helper が検出された場合は、アイコン化の解除と最前面への表示、 指定した MIDI ファイルのプレイリストへの追加が行われます。

【ドラッグ&ドロップ】
エクスプローラから MIDI ファイルをドラッグ&ドロップして プレイリストに追加することもできます。演奏中でなければ自動的に演奏が開始されます。 演奏中にドロップされた場合は、次の演奏予約曲としてプレイリストに追加され、 自動的にプレイリスト画面が開いて知らせてくれます。

Java アプレットとして使う

Java アプレットとして使う場合、さらに次のような準備が必要です。
  1. MIDIファイルの読み書きを行う場合は、Jakarta Project の Base64 変換用クラスライブラリ(commons-codec-1.3.jar)が必要です。Commons Codec のページからダウンロードしてください。
    このライブラリが読めなかった場合、起動はできますが、 プレイリスト画面にある Base64 エンコード/デコードのボタンが使えなくなります。

  2. アプレットを貼り付けた HTML ファイルを用意します。

  3. MIDIファイルの読み書きを行う場合は、MIDI ファイルを Base64 テキストに変換(エンコード)したり、 復元(デコード)できるソフトも必要です。 詳細は「Base64 エンコード/デコード環境」を参照してください。

アプレット貼り付け例


 <applet name="midichordhelper"
 archive="chordhelper.jar, commons-codec-1.3.jar"
 code="ChordHelperApplet.class" width=760 height=500></applet>

※ アプレットの大きさは、バージョンアップによって変わる可能性があります。 この場合 width や height が合わなくなるかも知れないので、そのときは適宜調整してください。

commons-codec(Base64 エンコーダ/デコーダ)を使わない場合は以下のように記述できます。

 <applet name="midichordhelper"
 archive="chordhelper.jar"
 code="ChordHelperApplet.class" width=760 height=500></applet>

自分のホームページに貼り付けて使う

このアプレットを使ったホームページを作成するには、オフラインで使う場合と同様、 jar ファイルをダウンロードする必要があります。

アプレットをオフラインで使う場合との大きな違いは、Base64 エンコード/デコードを行うアプリケーションが、 CGI プログラムとなる点です。CGI プログラムとのデータのやりとりであれば、ブラウザに元々ついている アップロード・ダウンロード用のファイル選択ダイアログを流用できます。 Base64 テキストの準備ができたときに JavaScript プログラムが実行されるようにすれば、 Java アプレットと連携できるので、アプレットでありながら通常のアプリケーションと同じように ファイルの読み書きができるようになります。ただ、アプレットのセキュリティ制限を避けるための Base64 変換のためだけに、ネットワークを無駄に往復してしまうというデメリットはあります。 CGI プログラムの代わりに JavaScript 関数を form action="javascript:xxx()" のように 指定することもできるので、この方法でネットワークを往復させないようにすることもできそうですが、 input type="file" の読み出しに対応したインターフェースは見つかっていません(もしあったら教えてください)。

CGIプログラムの設置

Perl の CGI.pm と MIME::Base64 モジュールを使うと、 Base64 エンコード/デコードを行う CGI プログラムを簡単に実装できます。

MIDI Chord Helper では以下のような Base64 エンコード/デコード専用の CGI プログラムを 作成して使っています。

[base64.cgi] ← ご自由にダウンロードしてお使いください

▲ この CGI プログラムは、単にエコーバックするだけです。一般的なウェブアプリケーションと違い、 サーバ側へはファイルを保存しません。

画面から呼び出せるようにするには、以下のような HTML を記述します:

<form method="POST" enctype="multipart/form-data" action="base64.cgi" target="base64_in">
▼Base64エンコードしたいファイルを選択(指定がないとデコードするものと解釈されます)
<button type="reset">クリア</button><br>
<input type="file" name="in_filename" size="60"><br>
<br>
▼または、Base64デコードしたいデータを貼り付け<br>
保存するファイル名(必須):<input type="text" name="out_filename"></input><br>
データ:<textarea name="out_base64"></textarea><br>
<button type="submit">Base64エンコードまたはデコードする!</button><br>
<br>
▼エンコードしたファイル内容がここに来ます。<br>
<iframe src="about:blank" name="base64_in"></iframe><br>
<br>
</form>


このように表示されます:
▼Base64エンコードしたいファイルを選択(指定がないとデコードするものと解釈されます)


▼または、Base64デコードしたいデータを貼り付け
保存するファイル名(必須):
データ:


▼エンコードしたファイル内容がここに来ます。



▲あとは、これに JavaScript のプログラムを付け加えて、テキスト内容とアプレットの関数との間で 文字列の代入をするような処理を書きます。
なお、ユーザが操作する必要のない部分には style="display: none" という属性を指定し、表示させないようにしておきましょう。 そうすれば、すっきりとした画面になります。

アプレットにパラメータを指定する

<applet>...</applet> の間に <param> タグを記述することにより、パラメータを指定できます。 MIDI Chord Helper で使えるパラメータは下記の通りです。

パラメータの名前(name=)指定する値(value=)説明
midi_fileMIDI ファイルの URL(フルパス) ここに MIDI ファイルを指定すると、アプレット起動時に自動的にロードされ、直ちに演奏が始まります。 指定できる MIDI ファイルは、アプレットの置かれたサーバ上にあるものだけです。 それ以外のサーバにある MIDI ファイルや、ローカルコンピュータ上の MIDI ファイルは指定できません (指定すると Java のセキュリティマネージャによって読み込みが拒否されます)。
【廃止されました】no_eject任意の値 イジェクトボタン[]を表示したくないときに指定します。

設定例:

 <applet name="midichordhelper"
 archive="chordhelper.jar"
 code="ChordHelperApplet.class" width=760 height=500>
 <param name=no_eject value="">
 <param name=midi_file value="http://www.yk.rim.or.jp/~kamide/music/original_songs/thats_pla.mid">
 </applet>


アプレットの関数を呼び出す

HTML ファイルに記述した JavaScript プログラムから、アプレットの関数を呼び出すことができます。

関数説明
public int addToPlaylist(String midi_file_url) midi_file_url に指定された URL の MIDI ファイルをプレイリストへ追加します。 URL の最後の / より後ろの部分は、ファイル名として取り込まれます。 追加先のインデックス値(0から始まる)を返します。追加できなかったときは -1 を返します。 指定できる MIDI ファイルには、param タグの midi_file パラメータと同様の制限があります。
public int addToPlaylistBase64(String base64_encoded_text) base64_encoded_text に与えられた文字列を Base64 デコードしてプレイリストへ追加します。 追加先のインデックス値(0から始まる)を返します。追加できなかったときは -1 を返します。 引数 filename には、ディレクトリ名を除いたファイル名を指定できます(省略可)。
public int addToPlaylistBase64(String base64_encoded_text, String filename)
public void addRandomSongToPlaylist(int measure_length) 引数 measure_length で指定された小節数の曲を、乱数で自動作曲して追加します。 追加先のインデックス値(0から始まる)を返します。追加できなかったときは -1 を返します。
public void play() プレイリスト上にある MIDI シーケンスをシーケンサへロードして再生します。 再生対象の MIDI シーケンスは、index を指定した場合はそのインデックス値(0から始まる)、 index を省略した場合はプレイリストで現在選択されているインデックス値です。
public void play(int index)
public boolean isRunning() 再生中、または録音中かどうか調べます。true のときは再生中か録音中、false のときは停止中です。
public boolean isPlaying()
public String getMidiDataBase64() 現在シーケンサにロードされている MIDI データを Base64 テキストに変換した結果を返します。
public String getMidiFilename() 現在シーケンサにロードされている MIDI ファイルのファイル名を返します。 ファイル名が設定されていないときは空の文字列を返します。
public void setOctavePosition(int position) オクターブ位置を設定します。初期値は4です。
public void setChannel(int ch) 操作対象の MIDI チャンネルを変更します。引数には(チャンネル番号−1)を指定します。 初期値は0(MIDI チャンネル1)です。
public void setProgram(int program) 操作対象の MIDI チャンネルに対してプログラム(音色)を設定します。 引数には、General MIDI で指定できる音色を0〜127で表した数値で指定します。
public void setChordDiagramForGuitar() コードダイアグラム(起動時はウクレレモード)をギターモードに変更します。
public void setAutoInversion(boolean is_auto) 自動転回を行わないときに false を指定します。初期値は true(自動転回を行う)です。
public void setOmissionNoteIndex(int index) 省略したい構成音を指定します (-1:省略しない、0:ルート音を省略、1:三度を省略、2:五度を省略)。 初期値は -1 です。
public void setChordDiagramVisible(boolean is_visible) is_visible を false にするとコードダイアグラムが隠され、true にすると表示されます。
public void setDarkMode(boolean is_dark) is_dark を true にするとダークモード(暗い表示)になり、false にすると明るい表示になります。

Base64 エンコード/デコード環境

Java アプレットではセキュリティ上の制約があるため、ファイルやフォルダの読み書きを 行うには policytool によるポリシー設定が必要になります。

この制約を避けるため、アプレットへの入出力は MIDI ファイルの内容を Base64 エンコードした結果を 渡すことによって行います。 Base64 エンコードした結果はテキストデータなので、クリップボード経由でコピー&ペーストしたり、 HTML フォームの textarea タグの初期値として直接埋め込むことができます。 Java アプレットが直接ファイルを読み書きしなくてすむので、セキュリティ上の制約を回避できます。


Base64 変換を行うには以下の方法があります。

Base64 変換ソフトをインストールして使う

Rafflesia のように クリップボードへ直接読み込めるタイプのものがおすすめです。 右クリックメニューの「送る」へ登録することで Base64 エンコードの操作が簡単になります。 「送る」へ追加するには、exe ファイルへのショートカットを \Documents and Settings\ユーザ名\SendTo へ置きます。
MIDI ファイルからの読み込みだけでなく、元の MIDI ファイルへの保存(デコード)も Refflesia で行えます。 この場合、コピー時に手動で Base64 ヘッダを除いた中身だけをコピーしたほうがよいでしょう (ヘッダつきだと、デコードに成功しても、実際は壊れた MIDI ファイルを出力していることがあり、 他のソフトで読めない場合があります)。

メールソフトを使って変換する

Outlook Express や Thunderbird などのメールソフトは、添付ファイルをテキストデータに 変換して送信するための手段として、Base64 変換の機能が元々備わっています。


Webページ上で変換する

オンラインで動かす場合、Webページ上から呼び出した CGI プログラムを使って サーバ側で Base64 エンコード/デコードする方法もあります。 当サイトではそのための CGI プログラムも作ってあります。詳細は「自分のホームページに貼り付けて使う」を参照してください。

また、Base64 エンコード/デコードが行えるページとして、 BeeTools というサイトがあります。

使い方

MIDIキーボード

メロディを演奏する

以下の方法でメロディを演奏できます。

終止音からキーを選択

単音を鳴らすと、その音に対応するコードボタンに || マークが現れます。 終止音(相対音階のド(長調の場合)、またはラ(短調の場合))を鳴らせば、 出てきたマークの真上にある調号ボタンの調であることがわかります。

例えば、レの音を鳴らすと D と Dm に || マークが現れます。

MIDI チャンネル・MIDI メッセージ送信

MIDI の仕様により、最大16個のチャンネルが使用できます。 それぞれの MIDI チャンネルには音色(Program Change)など色々なパラメータを設定できます。 そのためには [Send MIDI event] ボタンで出てくるダイアログから MIDI メッセージを選び、 [Send] で送信します。

オクターブ

上側にくっついているスクロールバーで、オクターブ位置をシフトできます。左右の矢印(← →)も使えます。 また、スクロールバーのすぐ右にあるスライダで、表示するオクターブ数を調整できます (3オクターブ 〜 11オクターブ)。 表示範囲を外れた音階を鳴らそうとすると、その音階が表示される位置まで自動的にスクロールされます。

ベロシティの設定

V= の値は、マウスまたはPCキーボードで演奏するときの打鍵の強さ(ベロシティ)です。 これは音楽記号でいう pp, p, mp, mf, f, ff のような音の強さに相当する値です。 0〜127 の範囲で設定できます。

調性表示欄

画面上のキーボード上側の Key: は、調を表します。この調は調号ボタンの選択状態とカポの設定によって決まります。 この調のスケールから外れた音階を出すと、白抜きで表示されます。 マイナーキーの場合は常にナチュラルマイナースケール(自然的短音階)が基準となります。

周波数表示

表示される周波数 [Hz] は、MIDI Tuning Standard の仕様 (A=440Hz)に基づいて計算した周波数です。実際の周波数は、コントロールチェンジRPNの 「コースチューニング」「ファインチューニング」によってシフトするほか、ピッチベンドチェンジによっても 一時的にシフトします。

●マークの伸縮

MIDIのピッチベンドチェンジを受信すると、音程が変化したことを示すために●マークが左右に伸びます。 また、MIDIのモジュレーションデプスを受信すると、●マークが上下に伸びます。

ピッチベンドセンシティビティ(コントロールチェンジの RPN 0000)によって音程の変動感度が上がると、 それに合わせて横の伸び幅も拡大されます。 デフォルトは最大+−2半音ですが、例えば+−12半音(+−1オクターブ)まで拡大された場合、 最大1オクターブの幅で●マークが伸びていきます。

調号ボタン(キーの選択)

コードボタンの上にある 7b 〜 7# は、 五線の先頭についている調号の♭や#の数を表した「調号ボタン」です (ナチュラル記号は♭も#もつかないことをハッキリと示すために表示しています)。 コード演奏をする前に、この調号ボタンでキーを選んでおくことをおすすめします。 キーに合わせてコードボタンの背景色が左右にシフトするので、よく使われるコードの範囲が一目でわかります。

コードボタンで和音を演奏する/コードネームを文字入力して鳴らす

コードボタンは下記の3つの段から構成されています。
上段sus4 コードボタン
中段メジャーコード(長和音)ボタン
下段マイナーコード(短和音)ボタン

これらのコードボタンをマウスでクリック、ドラッグして鳴らしたり、PCのキーボードで鳴らしたりできます。

また、PCのキーボードでコードネームを文字入力して [Enter] キーで鳴らすこともできます。

マウスでコードを鳴らす

コードボタンをクリックするとそのコードの音が出て、コードネームが画面上のキーボードの上に表示されます。
音を止めるには
コードボタンで出した音は、マウスボタンを離しても止まりません。 必ず音を止める操作をしてください。音を止めるには、今選択されている調号ボタンをもう一度クリックするか、フォーカスを他の場所へ移動します。
アルペジオ
クリックしたときはすべての音が同時に鳴りますが、そのままコードボタンの上で マウスホイールを回すと構成音が1個ずつ鳴り、アルペジオ演奏を楽しめます。
数字などのついたコードを鳴らす
sus4 を鳴らすには、そのルート音のメジャーコードボタンの上にある sus4 ボタンを使います。 例えば、C の上にある sus4 をクリックすると Csus4 のコードが鳴ります。 右クリックや修飾キーを併用すると、さらに多くの種類のコードを鳴らすことができます。

クリック操作元のコードに何がつくか?
1.右クリックまたは [Shift] 右クリック7 がつきます。
[Shift]+右クリックM7 がつきます。
[Shift] のみ6 がつきます。
2.[Alt] キーを押しながら メジャー-5 がつきます。
マイナー
sus4sus4 が取り消されたうえで +5 がつきます。
3.[Ctrl] キーを押しながらadd9 がつきます。

上の 1. 〜 3. の操作は自由に組み合わせることができます。 出来上がった組み合わせが dim、aug のような別の表記に該当する場合、その表記に置き換えられて表示されます。 以下に例を示します。
このように複数の操作を組み合わせることで、よく使うほとんどのコードをカバーできます。 ただし、マウスボタンと修飾キーだけでは割り当て空間に限界があるため、 テンションコードについては一部出せないもの(-9 +9 11 13 など)があるほか、 分数コードの分母についても指定できません。 このようなコードの出し方については、後述の「文字入力して音を出す」を参照してください。

修飾キーや右クリックだけでなく、コードボタンを上下左右にドラッグすることによって 7 などをつけることもできます。 ただし、後から追加された音のみに遅れが生じます。 状況に応じて修飾キーとドラッグを使い分けてください。

MIDI Chord Helper で出せる主なコード(○のついている操作を併用します)
コードの
種類
M/m/sus4 7/M7 6/M7 +5/-5 add9 ドラッグする
場合の方向
使用する
コードボタン
右クリック [Shift] [Alt]または
中クリック
[Ctrl]
メジャーメジャー-----
7---
M7 (maj7)--
6---
mマイナー-----
m7---← または ↑
mM7--
m6---
dim (m-5)----
m7-5--← または ↑
dim7 (m6-5)--
sus4sus4-----
7sus4---
aug (+5)----
add9メジャー---
9 (79)--右クリック+↑
M9--
69---

PCキーボードを使ったコード演奏

キー配列は日本語106キーボード対応です。マウスでクリックしてフォーカスを入れておく必要があります。 PCキーボードを使ったコード演奏の場合、以下のようになります。

コードネームを文字入力して音を出す

コードネームをテキスト欄(コードボタンの下にある歌詞表示欄)に入力して [Enter] キーを押すことによってコードを鳴らすこともできます。

自動転回(Auto Inversion)・省略音の指定

コードの構成音は通常、ルート音(赤い●)が左端ですが、 音域を一定の範囲にまとめるために、この順序を自動的に変えて(転回して)鳴らす機能がついています。 起動時は転回が有効になっています。この指定を変更するには、 小さな鍵盤のアイコンをクリックしてプルダウンメニューから選択してください。 例えば、パワーコードを出したいときは Omit 3rd を選択します。この場合、 音色を 29:Overdriven Guitar や 30:Distortion Guitar などにして1オクターブ下げてみると、 よりパワーコードらしくなるでしょう。 なお、パワーコードの X5 表記(例えば C なら C5 のように表される)には対応していません。 省略音の指定にかかわらず、コードネーム表記は元のまま表示されます。

コードボタンに表示される図形からコードを判定する

MIDI によって音が鳴ると、その音をルート音として持つコードボタンが自ら反応し、 光る図形を表示します。この図形の動きを読むことで、コード進行を耳だけでなく 見た目のイメージで把握できます。例えば、以下のような場合に図形が表示されます:

表示される図形の種類

図形 鳴っている音 コードボタンへの表示
メジャーマイナーsus4記号の意味
回 すべての構成音
○:常に表示

-5:減5度が同時に鳴っているときのみ表示

M3:長3度が同時に鳴っているときのみ表示

×:表示されません
| ルート音のみ×
| _(太いアンダーバー) 低いルート音×
L ルート+3度
(完全5度省略)
-5×
○ ルート+減5度(-5/dim5)M3×
+ ルート+長3度+
増5度(+5/aug5/短6度)
M3××

複数の項目を同時に満たしている場合、図形が重なって表示されます。

MIDIファイル再生時、図形の乱れを最小限に抑えるために、ドラムなどを鳴らすリズムパートのMIDIチャンネル (指定がなければチャンネル10)からの音は図形表示の対象外としています。

ただし、特定のMIDIチャンネルで効果音のような音色が使われていたりすると、 その影響で図形が乱れることがあります。特に、効果音のノート番号が示す音階がスケールを外れていると、 +や○といった「不協和音的な図形」が現れやすくなります。これが一瞬で高速に変化した場合、 まるで星のように美しくキラキラしたイメージが駆け抜けていく姿がみられます。

図形の色

色は、調号ボタンで選択したキーに対するスケール からどのように外れているかによって変化します。 マイナーキーの場合は常にナチュラルマイナースケール(自然的短音階)が基準となります。 赤やピンクはスケールを外れていない音、青は♭方向、黄色は#方向に外れている音を示します。

キーが適切に設定されていないと、スケールを外れているようには聞こえないのに青や黄色が目立つ、 といった現象が起こります。

点灯/消灯

明かりのスイッチのような点灯/消灯ボタン(歌詞表示欄の右)で配色を切り替えられます。 MIDI ファイルをロードすると自動的に「消灯」され、演奏が始まるとイルミネーションのように コードボタンがきらきらと輝きます。

カポ設定によるずれ

カポ機能で移調している場合、クリックすると別のコードボタンが光ります。 これは、マークの表示が、調号ボタンの示す演奏キーではなく、オリジナルキーを元にして決められているためです。

コードボタンに現れる図形の例

|| ii 【 単音の C 】

右端の短い線は、隣のコードボタン、すなわち完全5度(周波数3倍の成分)上のルート音が 弱く鳴っていることを示すと同時に、当該コードボタンを弱く浮き上がらせる働きをします。


|| ii 【 低い単音の C 】

この表示はベース音を検出するのに便利です。複数箇所に□マークがあった場合に どちらがルート音かを識別したり、ルート音とベース音が異なる「分数コード」を識別するのに役立ちます。

ただし、常にベース音を検出できるとは限らないことに注意してください。 低音部かどうかを判定する基準はノート番号の大きさだけなので、 複数の音階に出ることもあれば、全く出ないこともあります。

|| || 【 C のパワーコード 】

パワーコードとは、ルート音と完全5度上の音(右隣のルート音)だけで構成したコードのことです。 該当するコードが縦長の線で挟まれているように見えます。

▼実際にパワーコードを演奏してみた動画(初期の頃なので、ちょっと画質がいまいち...そのうち高画質版を作ろうと思ってます)


||__ii 【 C の5度省略 】

ルート音と、3度上の音だけが鳴っていることを示します。 メジャーコードの完全5度が省略されたときに、該当コードを弱く浮き上がらせる働きをします。


回 【 C 】

構成音が全部鳴っている状態です。右側や上側を中心に || の模様が出現します。 || の出現位置を覚えておくと、「回」マークが出にくいアルペジオ演奏時にコードを追いやすくなります。

+ 【 Caug 】

aug を鳴らすと+マークが現れます。+マークは、必ず4マスおきにずらっと並びます。 この図を見るだけで、Caug、Eaug、Abaug が同じ構成音を持つもの同士であることが一目瞭然です。 ルート音は実質12種類ですから、aug の構成音の組み合わせは12÷3=4通りしかないことがわかります。

○ 【 Bdim 】

単音の F と B が互いにトライトーンの関係にあるため、Fm と Bm の両方に丸がつきます。

3度上を示すマークが Bm にしかないことから、この場合のコードは Bdim トライアド(Bm-5)の 構成音がすべて鳴っていることがわかります。


G7 【 G7 】

7th コード(属七の和音 = dominant 7th)を鳴らすと、このように元のコードの右下に○が出現します。 G と Bdim トライアドの構成音を重ね合わせたコードであることが一目でわかります。 dim トライアドを鳴らすと、左上のコードの 7th つきが鳴ったように感じてしまうのはこのためです。 この性質を応用し、Bdim7 に変えてみるとか、G と Bdim7 を合体させて G7(-9) のような 使い方をすることもあります。

CM7 【 CM7 】

M7 (= major 7th) を鳴らすと、元のメジャーコードの右下に□が現れます。 CM7 は C と Em の構成音を重ね合わせたコードであることがわかります。

Am7 【 Am7 】

m7 (= minor 7th) を鳴らすと、元のマイナーコードの真上にあるメジャーコードが同時に点灯します。 Am7 は C と Am の構成音を重ね合わせたコードであることがわかります。

C6 も同じ構成音を持つため、全く同じ形になります。

AmM7 【 AmM7 】

mM7 (= minor major 7th) を鳴らすと、元のマイナーコードの真上にあるメジャーコードに+が出現します。 Am と Caug の構成音を重ね合わせたコードであることがわかります。


Bm7-5 【 Bm7-5 】

m7-5(= half-diminished)を鳴らすと、このように少し複雑な形になります。 Bm7-5 と Dm6 は全く同じ構成音を持っているため、元のコード Bm の3マス左にある Dm が四角く光ります。

G9 を鳴らしたときも、これと似た形が現れます(G7 と Bm7-5 を合体したような形になります)。

Bdim7 【 Bdim7 】

dim7 を鳴らすと、このように3マスおきに○がずらっと並びます。 この図を見るだけで、Fdim7、Ddim7、Bdim7、G#dim7 が同じ構成音を持つコードであることがわかります。 ルート音は実質12種類ですから、dim7 の構成音の組み合わせは12÷4=3通りしかないことがわかります。

G7sus4 【 G7sus4 】

元の sus4 コードのすぐ左隣が同時に光ります。Csus4 と Gsus4 を合体したようなコードだということがわかります。 sus4 は完全5度ずつ離れた音で構成されているため、まるで、隣近所でいくつかのパワーコードが 同時に鳴っているかのような表示になります。

Dm7/G 【 Dm7/G 】

分数コードでは、コードの構成音でない音が分母に来るケースがあります。 その中でも特に出現頻度が高いのがこの形です。 コードボタンからの場合、F69 あるいは G9sus4 として出すことで近似的にこの形を出すことができます。

Fadd9 【 Fadd9 】

add9 を鳴らすと、元のコードの右上の sus4 が同時に点灯します。 F と Csus4 が組み合わさったような構成音を持つことがわかります。
分数コード F/G の場合も、これと似た形になります。

7音階全部鳴らしたとき 白鍵をすべて鳴らしたときの形です。 テキスト入力でこの形を出すには、CM7(9,11,13) というコードを入力します。 C を他の音に変えた場合も、単に左右にずれるだけで形は全く同じです。 画面上のキーボードには、長調の7音階全部に●がつくので、 ある長調の音階を調べたいときにも使えます。

背景色の赤っぽいエリアであっても、Fsus4 だけはスケールを外れた音(Bb)があるので光りません。 逆に、背景色の黄色っぽいエリアでは sus4 が全部光り、さらに Bm が丸く光ります。

この形は、低気圧の雲の形によく似ています。 キーになるメジャーコードが低気圧の中心、黄色(#系)エリアが暖かく湿った空気、 青(♭系)エリアが冷たい空気、sus4 が温暖前線、青のマイナーコードの列が寒冷前線に見えます。 天気から感じる印象と、コード進行から感じる印象 − この2つが見事に調和しているのがよくわかります。

この他にも色々なパターンがあります。実際に自分でコードボタンをクリックして探してみてください。

実際の音楽では、例えば F と Csus4 が同時に光っても、コードを弾いているパートでは Fadd9 ではなく 単なる F コードを弾いているだけ、ということもあります。どちらなのかわからない場合は、 自分でクリックして音を出して聞き比べてみるのが一番です。

アルペジオ(分散和音)演奏の場合、|| マークがあちこちに移動するばかりで [回] マークとしてはっきり現れにくくなります。これは現在発音中の音だけを頼りにしているためです。 仮に音の残像効果をエミュレーションしたとしても、形をはっきり出すのは困難です。 そもそも「メロディからコードを選ぶ」のは「かな漢字変換で候補を選ぶ」のと同じで、 機械に任せられない部分です。ぜひとも、人間の目に備わっている「天然の残像効果」と 自分の感覚をうまく活用して最適な候補を選んでみてください。

コードダイアグラム

コードボタンでコードを鳴らすと、ウクレレ用、ギター用(どちらか一方を Ukulele / Guitar のラジオボタンで選択)のコードダイアグラムが表示されます。

コードダイアグラム フレット範囲の移動は、横スクロールバーで行います。
初期表示では、コードの構成音を出せるすべての場所に○印がつきます。

縦スクロールバーで1個ずつ下がると、構成音が揃う押さえ方のバリエーションが次々と表示されます (ドミナント 7th コードの五度省略や、9th コードのルート音省略のパターンも表示します)。

縦スクロールバーが先頭にある場合は、○印をクリックして、 その○印を使ったバリエーションへ移動することもできます。

×は弾かない弦、左端の○は開放弦で弾く弦です。●や○の色はコード構成音の順序を表します。 これは画面上のキーボードに表示される●の色と同じなので、どの弦でどの音階を鳴らすかが、色でわかります。 赤がルート音、以後順番に黄土色緑色紫色、の順です。

dim と dim7

Wikipedia 英語版の Diminished triads によると、dim は m-5(3音=トライアド)の 意味で使うのが正しい使い方です。しかし、中には4音の dim7 を dim と省略して表記する、といった 非常に紛らわしい記述をしているドキュメントも見受けられます。 特に、ギターやウクレレなどのコードブックに dim と書いてあった場合は要注意です。 実は dim7 の構成音が書かれていたりします。

MIDI Chord Helper では本来あるべき表記として dim=3音、dim7=4音、に統一してあります。

こういった事情があるので、dim のコードダイアグラムを調べるときは dim7 も同時に調べてみることをおすすめします。

バリエーションの順序

縦スクロールバーで変化するバリエーションの順序は次のようになっています。 このことを実感するには、ギターモードにして縦スクロールバーを動かしてみるとよいでしょう。 下の弦へ行くほど○→●→×の変化が激しく、上の弦へ行くほど変化がゆっくりになっていることがわかります。 ギターの場合は 100 通り以上出ることもあるため、この順序を知っておけば、 比較的スムーズに自分の探している押さえ方にたどり着きます。

チューニング設定の変更

左端の音名をクリックしてチューニング設定を変更することができます。

カポの設定

[Capo] チェックボックスについてはこちらを参照してください。

テキストへの記録

コードダイアグラムに表示されたコードネームを、歌詞表示欄に出力できます。 Windows の場合、メモ帳と同じコピー&ペーストのショートカットキー(Ctrl-C など)が使えるので、 他のアプリケーションとのやりとりも可能です。

カポによる移調

ギターやウクレレなどの弦楽器では、押さえ方を変えずにキーを高くするための器具 「カポタスト」(通称「カポ」、詳しくはapollonmusicのカポタスト解説Wikipediaなどを参照)が使われることがあります。

コード譜によっては「カポをn番目のフレットにつける」という指定があり、 それに基づいて移調されているものもあります。これを見てコードボタンで演奏するとき、 頭の中でオリジナルキーのコードに戻しながら演奏するのは大変です。 そこで、このような場合でも楽にオリジナルキーで演奏できるよう、 カポと全く同じようなイメージで移調できる機能を用意しました。

例えば、コード譜に

Original key:Gm / Capo:3 / Play:Em

と書かれていた場合は次のように設定します。

あとはコード譜の通りに弾くだけで、Original key:Gm の音が出ます (Capo:3 なので Em が半音3個分上がって Gm になります)。 実際に出ている音程に基づいて、キー、コード、構成音が画面上のキーボードに表示されます。 コードボタンに出てくる図形の位置や色は 実際に出ている音程に基づいて決まるので、クリックしたコードボタンとは別のコードボタンが光ります。

コードダイアグラムのほうの [Capo] をチェックすると、ギターやウクレレでカポを使って演奏するときに どんなコードを押さえればよいかが表示されます。 カポの数値は、コードボタンのほうの [Capo] と共通です。 コードボタンのほうの [Capo] とは逆に、数値の示す半音の数だけ下げられたコードが表示されます。
両方の [Capo] をチェックすると打ち消し合うため、コードボタンで弾いた通りのコードが ダイアグラムに表示されますが、実際に出る音は移調されます。

カポの数値は1〜11の範囲で設定できます。カポなし(Capo: 0)に戻したいときは チェックを外してください。

MIDIシーケンサ機能(録音・再生・編集・ファイル入出力)

MIDIファイルの読み込み、書き込み、再生、リアルタイムレコーディング、編集ができます。 赤いペンのアイコンボタンをクリックすると、編集画面が表示されます。

読み込みと書き込み

編集画面にはプレイリストがついています。 ファイルを読み込むと、まずプレイリストに対して追加されます。 再生や録音を行うには、シーケンサーへロードした状態になっている必要があります (ロードされたシーケンスには Position 欄に「分:秒」が出ます)。 プレイリストには複数の曲を格納でき、追加した順序で連続再生させることができます。

シーケンスを新しく作成する

プレイリストのすぐ下にある [New] ボタンで、新しいシーケンスを作ることができます。 作成時に以下のパラメータを指定できます。

編集

MIDIイベントをクリックすると小節位置(Measure:Beat:Tick)が入力欄にセットされます。

Pair NoteON/OFF チェックボックスは、NoteON イベントと NoteOFF イベントを ペアとして扱いたい場合にチェックします。 同一MIDIチャンネル、同一MIDIノート番号で最寄りの NoteOn/OFF イベントがペアとなり、 どちらか一方のイベントが選択されたときに、もう一方も自動的に選択されます。 なお、編集の仕方によっては、いわゆる「三角関係」ができてしまうことがあります。 三角関係を解消するには、チェックを外してペアを解除し、単独で削除などの操作を行ってから 再度チェックしてください。

MIDI ファイルが未保存だった場合、Java アプリケーションとして動かしている場合は 保存せずに終了してよいか尋ねてきますが、アプレットとして動かしている場合は尋ねてきません。

この編集機能は javax.sound.midi の Sequence クラスに展開された MIDI データの中身を JTable で編集できるようにしただけの原始的なものです。 より高度な編集機能がほしい場合は、別のシーケンスソフトを用意してください。

録音

録音するには、どのMIDIチャンネルをどのトラックへ録音するかを MIDI Editor の中で指定します。

先頭のトラックは、曲のタイトル、テンポ、拍子、調などを設定するのに使います。 特に、曲のタイトルは必ず先頭トラックの先頭位置に入れてください。 そうでないと正しく「曲のタイトルだ」と認識されません。

次に、曲の長さを設定します。これは EOT( = End Of Track )の小節位置(Measure:Beat:Tick)を 移動することで可能です。曲の長さが0のままで録音すると、ビート(拍)の表示が先頭から進まなくなり、 リズムを取るのが困難になってしまうので、録音しようとする小節数以上の長さを確保しておきます。

録音する先のトラックを作成し、RecCh. でどのチャンネルをどのトラックへ録音するかを指定します。 これで録音準備OKです。あとはメイン画面に戻って再生ボタンを押せば録音が始まるので、弾いてみてください。

調性イベントの受信

調性メタイベントの入った MIDI ファイルを再生すると、それを受信したタイミングで key:C のように 調性が表示されると同時に調号ボタンの選択が変わります。


タイトル・歌詞の表示

MIDIファイルのテキスト系のメタイベントの一部は、歌詞のように順次コードボタンの下側に表示されます。 歌詞の入ったMIDIファイルであれば歌詞が表示されます。カラオケを楽しむのに便利です。

再生スピードの変更

Play speed: x1(Original) の右にある [=>|] ボタンを押すと、スライダーで再生スピードを変更できるようになります。

中央が元のスピードで、右へスライドするほどテンポが速くなります。 対数スケールになっているため、両端に書かれた x2 などの倍率は必ず逆数同士の関係となります。 例えば右端が x4 の場合、左端は x1/4 = x0.25 となります。

[=>|] [<=|] ボタンで、倍率の範囲を拡大・縮小できます。最大で1/32倍速〜32倍速になります。

トラックごとのミュート・ソロの指定

MIDI Editor のトラック一覧にある Mute、Solo のチェックボックスで、 特定のトラックから音を出ないようにしたり(ミュート指定)、 反対に特定のトラックのみから音が出るようにする(ソロ指定)ことができます。 ただし、Windows環境では選択肢が1つしかないようです。

応用編

VOCALOIDに歌わせる

初音ミク」などの VOCALOID2(歌声合成ソフト)に歌わせるための伴奏を作るのにも便利です。 伴奏と歌声を合成するには、以下のような方法があります。

wav ファイルのレベルで合成する

まず、VOCALOID に歌わせる「カラオケ」MIDI ファイルを作ります。 手っ取り早く作るには、MIDI Chord Helper で MIDI データを新規作成するときに、 コード進行をテキストで書いて自動生成させます。このとき、メロディもランダムに作られます。 好みに応じ、そのまま使うか、または自分でメロディを打ち直してください。 メロディの編集も MIDI Chord Helper で一応可能ですが、よりビジュアルに入力したいときは プレイリスト画面から一旦 SMF ファイルとして保存し、他の MIDI シーケンスソフトに 読み込ませて編集してください。

MIDI ファイルができたら、メロディトラックを VOCALOID2 に読み込ませ、歌詞を流し込んでいき、 wav ファイルに保存します。これで、その MIDI ファイルのテンポに合ったボーカルパートができます。

あとは、DAW ソフトを用いて伴奏(MIDI)とボーカル(wav)の 歌い出し位置をぴったり重ねて、ミックスダウンすれば完成です。 同期を取らなくても、テンポが統一されていれば、曲の途中でタイミングがずれることはまずないでしょう。 今時のコンピュータは水晶発振が基準ですから、精度は時計と同等です(かつてのテープレコーダーのように モーターの速度に左右されるといったこともありません)。

注意点: wav ファイルのレベルで合成する方法であれば、VSTiReWire を使う必要もなく、リアルタイム性がそれほど要求されないので、性能の低いPCにおすすめです。

mobile AMD Athlon XP 2100+、RAM 640MB というやや低スペックの PC で動かしていた頃は、 VOCALOID2 Editor で直接再生すると音声が途切れて聞こえたりすることがありましたが、 このような環境でも、wav ファイルへ変換するだけであれば、 時間はかかっても音声が途切れることはありませんでした。

VST プラグインを使って歌わせる

VOCALOID2 用の MIDI データ(*.vsq)を直接 MIDI Chord Helper に読み込ませて再生することもできます。

ただし、ボーカルデータの中身は単なるテキストデータなので、普通の MIDI 音源に送っても音は出ません。 歌わせるためには、「声の出る音源」としての役割を持つ、VOCALOID2 に付属の VST プラグイン DLL (C:\Program Files\Steinberg の先にあります)を使う必要があります。 VST プラグインへ接続するには以下のソフトを準備します。 接続するときは、MIDI Chord Helper の MIDI OUT を選択し、空いている番号の MIDI Yoke を選びます。 VST Host 側では、同じ番号の MIDI Yoke を MIDI IN として選択します。 あとは、VST Host から VOCALOID VST プラグインに接続すれば、MIDI Chord Helper で再生した内容を VOCALOID2 に歌わせることができるようになります。

自分でコードを鳴らして伴奏したい場合は、VST Host で MIDI Thru を設定し、MIDI Yoke の出力を MIDI 音源へ送るようにします。

また、作った伴奏の MIDI トラックと VOCALOID 用の MIDI トラックを合成した MIDI ファイルを作って 演奏することも可能です。MIDI Chord Helper 上でも、プレイリスト上の MIDI シーケンスを切り替えながら 1トラックのイベントを全部選択して Copy & Paste すれば、MIDI データのレベルでの合成は一応可能です。

セットアップ方法についてはruimo.com「JavaでMIDI」が参考になります。 VST プラグインが VOCALOID2 ではなく Ivory になっているところが違うだけで、基本的には同じです。

なお、VST プラグインでは VOCALOID 音声合成をリアルタイムに行うため、 それなりのハードウェア性能が要求されます。 CPU 性能が低かったり、メモリ不足で HDD へのスワップアウトが頻繁に起こるような状況では 処理が追いつかず、歌声が途切れ途切れに再生されるといった現象が起きる可能性があります。

VOCALOID の歌声トラックが複数ある場合、複数の VST プラグインを起動し、 各トラックごとに別々の VST プラグインへデータを送る必要があります (複数トラックの歌声をひとつのプラグインへ送っても、うまく発声できません)。

シーケンスソフトによっては、トラックごとに出力デバイス(MIDI OUT または VST プラグイン) を異なる設定にできるものがありますが、Java の MIDI ライブラリ(javax.sound.midi)には トラックごとに送り先 MIDI デバイスを別々にできない(どのトラックから来たかを見分ける方法がない) ため、このような設定はできません。 この弱点を回避するには、VSTHost で MIDI メッセージをフィルタリングするしかありません。 MIDI チャンネルであれば VSTHost で見分けがつくので、各トラックごとに別々の MIDI チャンネルに 統一しておくとよいでしょう。 最新版では MIDI 編集機能のトラック一覧の MIDI チャンネル欄を変更することで、 そのトラック内にある全イベントの MIDI チャンネルを一度に変更できます。

[MIDI Chord Helper のホームへ戻る]