DIVIDER for Windows DIVIDER for Windows

耳コピー必携ツール,満を持して登場!?

10万アクセス御礼

2年4ヶ月にして,当HPは10万アクセス達成致しました(^^) その間,JASRAC問題やら色々ありましたが,皆様の応援のお陰でここまで頑張ってこられました. 感謝の意味を込めまして,耳コピのためのソフトウエア DIVIDER for Windows を公開することに致しました(核爆) (注:この解説文の大半は2002年3月頃に書かれたものです!) ダウンロードここからどうぞ.

実は昨年11月ぐらいから,2002年春の10万達成予想が出ておりまして, いいじまゆみこさんから「10万記念には壮大なシンフォニーを作れ~」 との催促が来るようになり(ぉ) 何かしなければ…と焦りだした訳ですが,私の作った自作曲では誰も喜ばないだろうと思い, 一念発起して耳コピのためのソフトウエア構築に向けて勉強が始まったのです(爆)

私はCプログラミングに精通してはいるものの,今までWindows環境で音を鳴らすソフトを作ったことが無く, WAVファイル再生方法を調べる所から始めました(汗) ここ数ヶ月,やたらとプログラミング関連の本を写真で紹介してきましたが, 実はこのソフトウエアを作るために買っていたという訳ですね(^^;

で,取りあえず年末頃までに音を鳴らすだけのプログラムが出来上がったのですが, ハッキリ言って時間が足りなくなってきたのです. まず,当初の予定で10万達成は4月中旬~GW頃の予定だったのが,いきなり3月中旬に前倒しになり, この計画を立てた時にインプリメントしようと考えていた機能を全て網羅することが出来ませんでした(^^; しかも,インプリメント出来た機能のうち,いくつかは中途半端な状態のまま公開となっていまして, 今後も機能追加し続けなければならない状態です(汗) ただし,現状でも充分使えるレベルにまで作り上げたので,是非ともご利用頂きたいと考えています(^^)

ソフトの概要

耳コピを行う時に最も重要なポイントは, 1~2小節毎に頭出し信号を打っておき,自由に各区間毎のリピート再生を出来るようにすることです. これまで私はMDデッキのデバイド機能を使って2小節毎に頭出し信号を打つ手法を紹介してきましたが, 高級MDデッキであってもデバイド時の操作性が悪く,デバイド最小分解能が1/100秒強の貧弱な状態であり, ましてや通常価格帯のMDデッキではデバイドそのものを正確に行うことが出来ないという問題がありました. つまり,誰もが気軽にデバイド出来るような状況ではないということに気が付いたのです. そこで,パソコンで簡単にデバイド&リピート再生出来るソフトを構築することにしました.

この手のソフトウエアはいくつかありますが,その殆どが区間リピートを1つしか設定できないのです. つまり,デバイド機能が無いのです.複数個のデバイドが出来ないと耳コピの最中にデバイドし直すことになり, 速攻打ち込みが出来ません.これに対し本ソフトウエアではまず「デバイド作業ありき」から始まるようにしてみました.

デバイド分解能は1データ長単位(サンプリング周波数44100Hzの時で1/44100秒単位)となっており,限界まで分割できます. ソフトを起動し,WAVファイルを読み込むと,Lengthと書かれた部分に全データ長が数値で表示されます. これを種々の方法(後述)で数値エディットするとデバイドが完了します. デバイドされていれば「ループプレイボタン」を押すことにより各区間毎に無限リピート再生できるという訳です. その時の様子を以下の図に示します. この例では29番目の頭出しから30番目の頭出しの区間=2098ミリ秒(128274データ区間)を無限リピートしています.

DIVIDER for Windows
現在,このページにある図はすべてV1.05の画面です.

画面構成を簡単に説明しておきましょう. 上2行にソフトの状態などを表示する数値情報表示部があります. 1行目には左から順に,読み込まれたWAVの曲の時間とデータ長とファイル名が表示されています. 2行目,3行目には現在のソフトの状態が表示されています.詳しい話は後から行います. 画面左下の数値表示部は左から順番に,ステップ数,分,秒,ミリ秒,データ長の順番で並んでいます. この画面では各ステップ毎の相対時間になっています.つまり,次のデバイドポイントまでの時間を表しています. (なお,分,秒,ミリ秒だけはデータ先頭からの絶対時間表示も可能です) 右下のグラフィックスは全波形を表示してあり,現在のステップ位置が緑色の枠で示されています. 上2つは現在のステップ位置での区間波形を表示しています. (但し,高速化のため,デバイド区間が10秒以下の時のみ表示) 区間波形には青色で8分割グリッドが表示されています.(グリッド分割数は変更可能)

デバイドしてみよう

早速ですがデバイドの方法を書いてみましょう. DIVIDERを起動してWAVファイルを読み込むと以下のような画面が表示されます. DIVIDERはMIDIシーケンサと異なり,WAVファイルを読み込んだ時点で必ず1ステップ消費します. 言い換えると,ステップ数が1の時は全データ長を表してるのですね. なお,利用可能メモリ上限値と消費したステップ数は画面右上のUSED欄に表示されます. Version 1.08からWAVファイルのドラッグ&ドロップ読込とコマンドライン引数起動に対応しています.
DIVIDER for Windows

ここでカーソル位置の数値をテンキーとエンターを使って変更すると簡単にデバイド出来るのですが, それだとどの程度の数値を入力したらよいか分からないと思いますので,デバイドプレイモードをオススメします(^^;

Mキー,またはファンクションキーF11,またはメニューから 再生(P)→DIVIDE PLAY(M) を選択するとデバイドプレイモードに入ります.同時に演奏がスタートしますので, 曲を聴きながらデバイドしたいと思う時点でスペースキーを押します. するとスペースキーを押した時点をデバイドポイントとしてデバイドされます. 1回目のデバイドが実行された様子を以下の図に示します. この例ではMキーを押してからスペースキーを押すまでの時間が2607ミリ秒, データ長が114969の時点をデバイドした事になります. 同時にステップ2には残りのデータ長が表示され,カーソルがステップ2に移動します.

DIVIDER for Windows

デバイドプレイモードはデバイドした後もずっと継続されます. つまり,スペースキーを押してデバイドした直後からステップ2についてのデバイドプレイモードが再開されます. 以下,同じ要領でデバイドしたいと思う時点でスペースキーを押すだけで,次々とデバイドすることが出来ます. デバイド時間の目安として,取りあえず1小節(時間にして2~3秒程度)毎にスペースキーを押すことをオススメします(爆) なお,途中で演奏を止める場合は,[ESC]キー,またはファンクションキーF12,またはメニューから 再生(P)→STOP(S) を選択します.

さて,スペースキーを押すタイミングは反射神経など個人差がありますので,適宜デバイドデータ長を修正したくなると思います. 押すのが早すぎたり遅すぎたりしたことに気が付いた場合,或いはデバイド位置が正しいかどうかを確認するには, デバイドプレイ中であっても↑キーを使って直前ステップ位置へ戻ることが出来ます. カーソル位置が変更された場合は自動的にデバイドプレイモードが解除され,ループプレイモードに入ります. つまり,直前ステップ位置の区間で無限リピートに入ります. この様子を以下の図に示します. この例では,ステップ6に対してデバイドプレイを行っていた時にステップ5の間違いに気づき, ↑キーを押してステップ5にカーソルを移動した状態です.

DIVIDER for Windows

ループプレイ状態であっても,ファンクションキーF1~F8を使って値を増減出来ますので, 演奏を聴きながら完全な1小節になるようにデータ長を修正できます. ステップ5が正しいデータ長になったら↓キーを押してステップ6に戻り, 再びデバイドプレイ(Mキー)を行えば,継続してデバイドしていくことが出来ます. ちなみに,修正はいつでも好きなステップ位置に対して行うことが出来ます. もし,ステップ5を修正中にステップ4の間違いに気が付いた場合には, ↑キーを押してステップ4に移動して修正が可能です. つまり,ループプレイの時は任意のステップ位置に対していつでもループ再生と修正を同時に行えるようになっています.

ところで,デバイド値を変更する時に気を付けないといけないのは,全データ長は固定値であるということです. つまり,いつでも各ステップのデータ長の合計が全データ長に一致していなければならないという制約があります. したがって,あるステップ位置のデータ長を増減した場合,その過不足を別のステップ位置で調整してやらないといけないのです. そうでなければ全データ長と各ステップのデータ長の合計が一致しないという不都合を生じます. そこで,DIVIDERでは各ステップ位置での値を変更した場合に,直下のステップ位置のデータ長で過不足を調整する方法と, 最終ステップ位置のデータ長で過不足を調整する方法の2通りを用意しました.

通常,ファンクションキーF1~F8を押すと現在のステップ位置に対して行った増減と逆向きの増減を, 直下のステップ位置に実行します.この時,[Shift]キーを併用すると直下のステップ位置ではなく, 最終ステップ位置に対して逆向きの増減を実行します. つまり,ファンクションキーに対して[Shift]キー併用は,いわゆる挿入削除の状態に近いものとなります. (注:挿入削除と言ってもWAVファイルが切り取られたりする訳ではありません.あくまでデバイド位置がずれるだけです)

様々なデバイド方法

デバイド位置を指定する方法,または修正する方法はこのほかにも沢山用意してみました. 一度デバイドした区間を更に細かく分割するのに役立つものとして, ダブルデバイドとトリプルデバイドがあります. ダブルデバイドは現在のステップ位置のデータ長を2分割する位置でデバイドを実行します. 同様にトリプルデバイドは3分割します. ダブルデバイドを実行するにはDキー,またはメニューから 編集(E)→ダブルデバイド(D) を選択します. 同様にトリプルデバイドはEキー,またはメニューから 編集(E)→トリプルデバイド(E)を選択します. この時の様子を以下の図に示します. この例では,ステップ6に設定されていたデータ長 129713 を 64857, 64856 に分割し,ステップ6と7にデバイドされています. また,ステップ10~12には3分割された様子が示されています.なお,1~2データ長の誤差がありますが, 奇数・偶数を2で割ったり3で割ったりするために生じているもので,殆ど気にすることは無いと思います(^^;
DIVIDER for Windows

テンポが一定の曲(というかリズムが入っている曲は大抵一定なのだが)については, 最初の数ステップをシビアに決定しておき,同じデータ長を連続して入力する方が楽にデバイド出来る場合があります. これに対応するため,最終ステップ位置にカーソルがある時のみ,→キーを押すと直上の数値を使ってデバイドします. いわゆるデータのコピーに近いものとなります. この機能を使って連続的にデバイドするには,最終ステップ位置にカーソルを置いた状態から出発して, →キー,↓キー,→キー,↓キー…という順番でキーを叩くと簡単に同じ数値でデバイドを実行できます. この時の様子を以下の図に示します. Version 1.07以降では,後述のテンポ値表示を利用すれば簡単に原曲のテンポ値を推定出来ます. テンポが一定の曲についてはテンポ値が整数になるようにデータ長を編集してこの機能を利用すると更に確実なデバイドが出来る筈です.
DIVIDER for Windows

デバイドデータ長を数値ではなく時間で増減出来る方法も用意してみました. [PageUp]キー,[PageDown]キーを押すと1ミリ秒単位の増減が可能です. 過不足は直下のステップ位置のデータに対して行われます. また,[Shift]キーを併用すると10ミリ秒単位の増減が可能です. 更に,[Insert]キー,[Delete]キーを押すと[PageUp]キー,[PageDown]キーと同様に増減が出来ますが, 過不足は最終ステップ位置のデータに対して行われます. なお,データ長と実際の時間の間には割り切れない数値がありますので見た目を補償するため, データ長が切り上げになる場合がありますが,まぁ気にしないでください(^^;<ぉ

デバイドを解除する方法

デバイドしたけど解除したくなった場合は,コンバインを実行することによって任意のステップ区間を結合することができます. Cキー,またはメニューから 編集(E)→コンバイン(C) を選択するとコンバインモードに入ります. ↑↓キーを使って結合したい区間を指定し,エンターを押すとデバイドを解除します. この時の様子を以下の図に示します. この例では,ステップ3からステップ6を1つの区間に結合する直前の様子が示されています.
DIVIDER for Windows

コンバイン実行後,1回限りアンドゥを実行出来ます. Uキー,またはメニューから 編集(E)→アンドゥコンバイン(U) を選択するとアンドゥが実行されます. なお,アンドゥバッファは次のコンバイン実行時まで保持されますが, 安全のためコンバイン完了時のSTEP位置にカーソルを置かないと実行できません. 実行出来ない時はメニューが選択できないようになっています. またコンバイン以外のコマンドはアンドゥ出来ないので注意してください. 実はデバイド系のアンドゥはコンバインで戻せるので作っていません(笑)

ちなみに,コンバインとダブルデバイド,またはトリプルデバイドを併用すると, 耳コピの最中であっても適宜デバイドや結合を実行可能です. 特に,1小節単位でデバイドしていた場合に1/2小節単位でループさせたいなどの要求が発生した時は, すかさずダブルデバイド(Dキー)を実行してみましょう. 簡単に1/2小節単位のループ再生を実現出来ます. 同様に,トリプルデバイド(Eキー)や,ダブルデバイドの複数回利用によって簡単に1小節を分割出来ます. 音符長単位の分割を行ってループ再生すれば,音程が取りにくい音であっても確実に音採りが出来るでしょう. 最後に,音採りなどが終わったらコンバイン(Cキー)を実行して元の1小節に戻せます. MDデッキではここまでのきめ細かなループ再生は出来なかったので, 一度このループ再生を体験してしまうとMDデッキで耳コピしたくなくなるかも知れませんね(爆)

オートデバイド

色々なデバイド方法を紹介してきましたが,世の中この手の作業を好まない方もおられるかと思います. そこで,最後の必殺技として,自動的にデバイドするプログラムを作ってみました(怪) とはいうものの,この領域は音声認識に相当するもので,ビートトラッキングとか, 楽曲理解などと呼ばれる最先端の研究テーマにあたるものです. ハッキリ言って,1~2ヶ月程度でまともにプログラムできるシロモノではなかったのですが, シャレで作ってみたという感じです.くれぐれも期待しないように(笑)

Aキー,またはメニューから 編集(E)→オートデバイド(A) を選択するとオートデバイドダイアログが表示されます. このダイアログを以下の図に示します.

DIVIDER for Windows

曲のテンポがどの程度かを選択することが出来ますので,お好きな所へバーを動かして下さい. Yesボタンを押すと自動認識が始まります. CPUにもよりますが,単純なアルゴリズムなので5分程度の曲であっても10~20秒以内で終わると思います. ちなみに「ふつう」付近にセットすればテンポ120程度の曲を四分音符程度の分解能にオートデバイドする筈です(怪)

オートデバイドが終わったあとはデバイドされた情報がどうなっているか確認するだけです(爆) 現状のプログラムでは四分音符程度の細かさに分割されてしまうことが多いようですが, もし,デバイドポイントが気に入らなかったら,曲調を指定し直してもう一度やってみてください. なお,曲調の指定を幾らいじってもダメな時は,前述のコマンドによって修正して下さい(^^;<天誅!?

一番右の「はやい」に,めいっぱい動かすと非常に細かい分解能になります. 遅いパソコンでは細かい分解能のデバイドを演奏しきれないことがあります. そのような場合はバーを左に動かしてください(^^;

なお,アナログ録音のWAVをオートデバイドする場合, WAVの録音レベルがオーバーしていると正しくデバイド出来ない場合があります. レベルが低くても正しい録音レベル以下に録音されている必要があります. …とはいいましても,あまり期待したほど正しくデバイドされないんですけどねぇ(汗)

拡張子.DIV形式

デバイドした情報は,デバイドファイルとしてWAVファイルとは別に保存することが出来ます. このファイルの拡張子は.DIVとなり,本ソフトウエア専用のファイル構造となります. (Version 1.08追記:最近流行の某動画ファイルの拡張子と同じという噂があるが気にしない(^^;<こらこら~) この.DIVファイルを読み込む際には元になったWAVデータ長との比較を行いますので, .DIVは保存時と異なるWAVファイルには適用出来ません. ただし,1つのWAVファイルに対して複数の名前で.DIVを保存することは可能です. 例えば,1小節でデバイドしたファイルと2小節でデバイドしたファイル,,, という感じで複数のファイルに異なった情報を保存できます.

なお,デバイド情報をファイルに保存せずにアプリケーションを終了しても注意ダイアログは出てきません. したがって,デバイドしたら必ず保存を実行するよう心がけてください(^^;<ぉ 当然,自動バックアップ機能もありません(汗) Version 1.08からDIVファイルのドラッグ&ドロップ読込に対応しています.

全データを再生する方法

デバイド処理が終わった後で曲全体を再生する時は,オールプレイモード(Pキー)が利用できます. 演奏開始は現在のカーソル位置からとなります. なお,ループプレイモードの時のようにデバイド作業は出来ません. オールプレイモードはデバイドに関係なく全体を通して再生する時に使います.

カーソル位置が連動して移動しますので,オールプレイの途中でループプレイやデバイドプレイを実行したくなったら, そのステップ位置でループプレイ(Jキー)やデバイドプレイ(Mキー)を押してみて下さい. 瞬時に再生モードが変わり,デバイド作業も行うことが出来ます. オールプレイ中の画面を以下の図に示します.

DIVIDER for Windows

カーソルの移動について

カーソル移動は基本的に↑↓キーを利用すると1ステップずつ上下に移動します. この時,[Shift]キーを併用すると1/2画面ずつスクロールします. [Shift]キー併用についてはコンバインなどの範囲指定時にも有効です. また,[Home]キーと[End]キーを押すとデータの先頭ステップと最終ステップにそれぞれ移動します. カーソル移動などはマウスでもある程度指定できますし,私が便利に使うための隠しコマンドがいくつかある筈です(^^) 見つけられた人はラッキーですね(爆)<ぉぃ

エフェクタについて

当初,このソフトを作ろうと考えた頃にはエフェクタの類は構築リストに入っていなかったのですが, 他のソフトでは大抵付いている?ので,付けておいた方が良いのかなという感じで急遽ワケワカなまま搭載してみました. ステレオモード,再生スピードコントロール,ピッチシフター,ピッチシフトオーバーラップの4つがあります.

ステレオモードでは,種々のソフトでお馴染みのボーカルキャンセラーなど,チャンネル操作が可能です. 再生スピードコントロールでは,半音単位で再生速度を遅くすることが可能です. ただし,プログラム的には手抜きしてしまい, 音源ボードが任意のサンプリングレートに対応していないと再生速度は変わりません(殴)

ピッチシフターでは,再生時間を変えずに半音単位で音階を上げることが可能です. がしかし,これも手抜きというより,時間切れで音質がイマイチなのですね(^^; ゼロクロスピッチ抽出などをきちんとプログラムしないとダメでしょうが,取りあえず今回は見送っています. 最後のオーバーラップ量ですが,これはピッチシフターの性能がイマイチなので設置されたエフェクタです. ピッチシフターを利用中のみ使えるのですが,周波数特性と時間分解能のトレードオフを設定する事が出来ます. オーバーラップ量の値が大きいほど時間分解能が良くなる変わりに低域周波数特性が落ちます. 反対に,値が小さいと周波数特性が良くなる変わりに時間分解能が落ちます. ピッチシフト量の違いによって適宜選んで頂ければ,いくらか音質が改善されるかも?!(謎)

これらエフェクタの効果的な使い方をご紹介しましょう. 本ソフトウエアではピッチやスピードを半音単位で上下出来ますので, ピッチとスピードの増減値を同じにすると音程を変えずに再生速度を落とすことが可能です. 例えば,ピッチシフターで4半音上げておき,再生スピードを4半音下がる速度にするなどですね(^^) ベースなどを拾う時に再生速度を4半音下がる速度にしたまま, ピッチシフターで12半音上げるという方法もかなり便利かと思われます(笑) なお,エフェクタ(特にピッチシフター)を利用した音は本来の音とは異なりますから, 音を拾った後で通常再生したものと比較するのをお忘れ無く(^^;

画面サイズ

DIVIDERの画面サイズはウインドウとしての最小サイズまで小さくすることが出来ます. つまり,最小化,最大化,終了ボタンと最小限度のタイトルバーのみに出来ます. 最も小さくした時の様子を以下の図に示します.

DIVIDER for Windows

ここまで小さくすると普通なら何も出来ない事になるのですが, DIVIDERのコマンド群は全てショートカットキーで実行出来るようになっていますので, 一旦,下記一覧表にあるショートカットを覚えて頂くと画面表示が出なくても操作可能です. また,当然ながら,[Alt]+[F]などのメニューショートカットもこの小さなウインドウのままで使えますので, このサイズの状態でも別のWAVファイルを開くことも出来ます.

なお,タイトルバーアイコンの右側には現在のステップ番号が表示されていますので, 最小サイズにしている場合でも現在のカーソル位置を把握することが出来ます. デバイド作業が終わったら,小さなウインドウに縮めることで他のソフトウエア, 特にシーケンサとの併用が楽になると思います.

Version 1.08の新機能として全画面表示を追加しました.Zキーを押すごとに全画面表示とウインドウ表示を切り替えます. なお,マウスで全画面表示にするにはメニューから表示(V)→全画面表示(Z)を選択すればよいのですが, マウスで全画面表示からウインドウ表示に戻すことは出来ませんのでご注意下さい(←こらこら)

テンポ値を表示する

Version 1.07の新機能として,現在のカーソル位置の時間を1小節と見なした時の4/4拍子, 3/4拍子を想定したテンポ値を表示出来るようにしました. この表示を以下の図に示します.

DIVIDER for Windows
この図はV1.07の画面です.

今のところタイトルバー部に表示していますが暫定的です. これで良ければ定着するかも知れませんが(^^;ぉ これにより1ステップを完全な1小節の長さにデバイドするだけで, シーケンサに設定すべきテンポ値が一目で分かるようになりますね! なお,4/4拍子,3/4拍子以外の拍子については割愛(汗) どちらかのテンポ値を2倍したり2で割ったりすれば大抵の拍子になると思いますので(^^;<こらこら

Version 1.08からテンポ値の小数点以下を4桁にしています.また全画面表示の時のみレイアウトが変わります.

ショートカットキー

キー 名称など 意味


Home To SX's Home!