はじめに
前からタイムコードレコードの解析をしたかったのと、とある音源用のレコードを作るのにターンテーブルで試せる環境を構築したかったために、いろいろ調べたり試したりしてました。結論としては、MIXXというフリーのソフトウェアで落ち着きそうなのですが、それ以前までは、Max/MSPで作ったりするのも考えていたため、それを通してタイムコードのレコードにはどういった情報が入っているのかを解析したので、ここで一旦まとめたいと思います。
DVS(Digital Vinyl System)の種類
巷でタイムコードを使ったDJシステムは、以下の通り。
2. Native Instrument Traktor Scratch
おそらく知名度的な順番になっていると思いますが、定かではないです。1と2は不動ですね。
そのイメージですが、scratch live(以下sl)はhip hop、traktor scratch(以下ts)はtechnoやhouse系って感じですね。別にそれじゃないと出来な訳ではありません。ブランドイメージ的な物です。
slとtsは比べてもきりがないので、割愛します。
3のMixvibes Crossは正直不明です。周りで使っている人は一人もいないので、情報があまりないですね。日本語の情報も少ないのもあると思います。ただ、ポイントとしては、slやtsはオーディオインターフェースが専用の物がないと動作しません。それがソフトウェアのシリアルとして認識されるやり方です。それに対してMixvibes Crossはオーディオインタフェースは問いません。ただソフトウェアは有料になります。
4. Ms Pinkyですが、これは実は古くからあるソフトウェアです。厳密にいうとMax/MSPというソフトウェア上で走るパッチです。そのため、自分でいろいろなことにカスタマイズできるのが売りでしょうか。Ableton LiveともMax for Liveで連携できます。そういえば、Scratch LiveもAbleton LiveとBridgeというので連携できましたが、どうなったのでしょうか?あまりもやれることが多すぎて誰も使いこなせる人がいなかったのでは?という印象です。
5. Mixxは、実はつい最近知りました。タイムコードレコードの信号を調べているときに偶然見つけました。これも使っている人がいませんでしたが、試してみましたので、後に詳細を書きます。これのポイントは、ソフトウェアも無料、オーディオインターフェースも問わないというところです。Scratch Live用のレコードを使えますが、Traktor Scratch MK2は使えないようです。そのため、私はすでにPresonusのFireboxを愛用しているので、Scratch Liveのレコードのみ購入して問題なく動作しました。(なんかお得な感じ!!)
6.xwaxはLinuxベースのソフトウェアです。オープンソースなので、Webにソースが落ちています。5のMixxもこのソフトをベースにしているらしいです。LinuxベースでPCDJする人が世の中にどれくらいいるのでしょうか。。全く不明です。そのため使用感も不明です。これもMixxと同じくソフト無料で、オーディオインターフェースは問いません。
以上、ソフトウェアの説明でした。
長くなりましたが、本題のタイムコードの信号についてです。
タイムコードの信号
まず、レコードにはサイン波が刻まれています。slのCDデータから抽出しました。
見るとサイン波が刻まれているのが分かります。
このサインの周波数は、ピッチが0%のときは、1000Hzです。(slの場合)
ピッチが変わるとこの値が高くなったり、低くなったりする訳です。
それを元にレコードが回転するスピードを検知しています。
スピードは分かったけど、これだと正回転と逆回転は分からないのではないか?と思った方もいるでしょう。
それは、ステレオのLとRの波形の位相をずらすことで、認別します。
以上のようにLとRで90度位相がシフトしているのが分かりますね。回転方向がこれで分かります。
スピードと方向がこれで分かりましたが、これだと再生位置がわかりません。つまり針の位置を変えるとちゃんと再生位置が変わるけどなんで〜と思いますよね。
これは、実はタイムスタンプという位置情報がこのサイン波とともに埋め込まれているのです。
今までの写真であれっと思った方もいると思いますが、波形の山の高さが違うのに気づきましたでしょうか。
これが実はそのタイムスタンプになります。
上ではamplitudeと書いてますが、山の高さは振幅とよばれ、amplitudeはその英語です。
上を見ると山の高い部分と低い部分で”1″と”0″の情報だと思えば、なんとなくデジタル情報を持っていそうですよね。
ここで、問題はこの信号をどのように認識するかです。
ここで、tkrworks山本さんに教えてもらったのですが、LFSRというアルゴリズムを使うようです。私は、マイコンのwatchdogタイマーでその名前を聞いたことがあった程度でしたが、こんなところにもでてくるとは!!
ちょっと説明するのが大変になってきました。。。
そして、まだ私が分かっていないところでもあります。LFSRは乱数がでてくるのですが、これを使ってテーブルを持たせて位置を検知するので合っているのか。。。
答えは、xwaxのソースコードにありそうですが、まだ検証できてません。
こちらがソース
だれか分かったら教えてくださいね。
というところで、もうストップしました。
Max/MSPでのパッチ
上記のことがわかっていながらも自分と作るとなると大変なものです。そこで、以前山本さんがモディファイしていたパッチをさらに自分でモディファイすることにしました。
パッチの細かい説明はしませんが、使い方は上のほうに書いてありますので、試してみてください。もちろん未完成な部分もありますが、scratch liveのレコードでは動作しました。スクラッチも問題ないのですが、ただ、高速回転をすると位置が変わります、その理由はお分かりかと思いますが、タイムスタンプの情報を取得していないからです。。。
ctrlTimecode_v0391_mod.maxpat (102kB)
フォノイコライザーをターンテーブルとオーディオインタフェースの間にいれて使用してください。一度DJミキサーのPhonoINにターンテーブルをつないで、ミキサーのLine outとかMaster Outをオーディオインターフェースにいれても動作すると思います。
Mixx使用レポート
最後にMixxの使用についてです。
レコードは、scratch liveのレコードを使用しました。
フリーソフトなのに良くできています。レコードの追従性や位置などまったく問題になりませんでした。
使い方
1. ソフトウェアをインストール
2. ソフトウェアを起動し、オプション>設定を選択
3. サウンドハードウェアの項目で、Outputのマスターに接続しているオーディオインターフェースを選択
4. 同様にinputもVinylコントロールに使用しているオーディオインターフェースを選択(私の場合はタンテ一台のみだったので、片方した選択しませんでした)
5. オプション>Vinylコントロール>Vinylコントロールを有効にするにチェックを付ける
6.最後に曲をwindowにドラックアンドドロップしてロード。
7.レコードを再生し、波形が動いているのを確認
以上です。
最後に
長くなりましたが、タイムコントロールの信号やソフトウェアの理解が深まりました。デジタルDJの未来を期待しつつ、面白い技術を有効に使えるように活動していけるように頑張りたいと思います。