Twitter

iPhoneでPdを使う (9) – ワンボタンで逆再生

今回はマイクを使って、ワンボタンで逆再生をするプログラムを作ってみましょう。
iPhone上のボタンを押すと、マイクからの音声の録音が始まり離すと、逆再生が始まる極めてシンプルなものです。

MMPファイルの作成は簡単です。単純に「add」タブから「button」を追加し、サイズを調整してください。「Address」は「/reverse」とします。
[caption id="attachment_844" align="aligncenter" width="300"]ワンボタン・インターフェース ワンボタン・インターフェース[/caption]

このボタンが押されると「/reverse 1」というメッセージがPdパッチに送信され、指が離されると「/reverse 0」が送信されます。

Pdファイルは以下のようなものになります。
[caption id="attachment_845" align="aligncenter" width="300"]Pdパッチ Pdパッチ[/caption]

まず、録音するために「Array」が必要となります。このパッチではArrayのサイズを「441000」として10秒までの音声を録音できるようにしてあります。このArray「sample」に「adc~」、つまりマイクからの音を録音するために、「tabwrite~」が使われています。「tabwrite~」は「start」メッセージで録音を開始、「stop」メッセージで録音を停止するので、これを「r fromGUI」「route /reverse」「sel 1 0」とつなぎ、MMPインターフェースからのメッセージと関連付けます。

「timer」はボタンが押されてから離されるまでの時間を計測します。例えば、押してから離すまでの時間が5秒ならば「5000」が出力されます。
そして、以下のルーチンはこの計測したを元に逆再生の命令を「line~」「tabread~」に送っています。たとえば、録音時間が5秒だった場合は、「220500」という「再生開始サンプルを指定する数値」がまず「line~」に送られ、次に「0 5000」という「終了サンプル数」「再生時間」が「line~」に送られます。これにより逆再生が行われます。

「sel」以下には「del 10000」がついていますが、これはもしボタンを押してから10秒以上ボタンを離さなかった場合に、「sel」に対し「0」を送り、10秒後に自動的に逆再生をはじめる仕組みを作っています。但し、10秒以内にボタンが離された場合は「del」に「stop」メッセージが送られ、この10秒後に「sel」に「0」が送られるというプロセスがキャンセルされます。

プログラムができたら、「reverse.pd」という名前をつけてセーブし、MMPファイル側でこのファイルをPd Main Fileとして指定します。あとはiPhoneにいつものように転送するだけです。

iPhoneに転送が終わったら、ファイルを開き、ボタンを押して何か単語などを録音して下さい。ボタンを離すと即時に逆再生が始まります。それを覚えて今度は口で逆再生された音声を真似てそれを更に録音、逆再生してみましょう。オリジナルの単語に聞こえましたか?

この項のパッチをダウンロード