Teensy Audioテスト(2)2020-05-23
Tennsy Audioの続きです。再び先の動画を参照しながら進めます。
物理的な配線は前回と同じ、下記の通りです。
- スイッチ0、1、2 ⇒ Pin0、Pin1、Pin2
- ノブ1、2、3 ⇒ Pin15(A1:オーディオボード上)、Pin16(A2)、Pin(A3)
一方ソフト的には、今回からAudio System Design Toolというのが新たに登場します。これはブラウザベースのGUIツールで、音声信号のルーティングをデザインするものです。音源から始まり、エフェクトやミキサーを通して最終的にアウトプットに至ります。なんかReaktorみたいでシンセデザインぽくなってきましたね。
ルーティングが出来たら、それをコードとしてエクスポートしArduino IDEでスケッチの中にコピーしてTeensyに書き込みます。つまりこのデザインツールだけでスケッチ全体が自動生成されるわけでは残念ながらありません。
Part_2_01_First_Design_Tool_Use
このツールを使った最初のサンプルスケッチは、Arduino IDEのファイル>スケッチ例>Audio>Tutrial>Part_2_01_First_Design_Tool_Useです。やってる事はSDカードにある3曲目を繰り返し再生しているだけです。
デザインツールのルーティングも下図の通り最もシンプルなものです。基本的に音声信号は左から右に流れますが、インプットとアウトプットしかありません。
右の【playSdWav】はSDカード内のWAVファイルで、今回は1つのファイルしか扱わないので一つだけです。左側の【i2s1】はオーディオボードのアウトプット(L/R)です。そして下で浮いてる【sgtl5000】はオーディオボードのチップを表してるそうです。
ここまで作ったらツール上部の「Export」ボタンを押し、出てきたコードをコピーします。それをスケッチの// copy the Design Tool code here
以下にペーストすればOKです。ペーストした部分だけを抜き出すと以下のようになります。
Part_2_02_Mixers
次のスケッチPart_2_02_MixersはDJミキサーのように1つのノブで2つの曲を切り替えます。デザインツールでは下図のようにMixerオブジェクトを使います。Mixerひとつはモノチャンネルですが、入力は最大4つ可能です。
例えば【playSdWav1】のLチャンネルをMixer1に入れたとすると、RチャンネルはMixer2へ。【playSdWav2】も同様にLをMixer1、RをMixer2に繋ぎます。つまりMixer1/Mixer2はミックスバスのようなもので、2つの音源(チャンネル)がミックスされ最終的に出力されるわけです。
これでコードを生成しスケッチに張り付けると次のようになります。
オリジナルスケッチでは
// uncomment this code to allow Knob A3 to pan between songs
以下はコメントアウトされていましたが、ここでは最初からアンコメントしています。やっていることは、ノブ3を左一杯に回せば(読み取り値がゼロなら)SDTEST1.WAVだけが再生され、右に回していくと徐々にSDTEST4.WAVの割合が増え、右一杯回し切れば(読み取り値が最大なら)SDTEST4.WAVだけが再生されます。
元のスケッチはコメントアウトされているのでミックス機能は無く、2つの曲が同じ音量で張り続けるだけです。コードとしてはsetup()の中の以下の部分でゲインを固定しています。
mixer1.gain(0, 0.5); mixer1.gain(1, 0.5); mixer2.gain(0, 0.5); mixer2.gain(1, 0.5);
Part_2_03_Samples
これまではSDカード内の音声ファイルを扱ってきましたが、このスケッチではTeensyのメモリに直接音声ファイル(サンプルネタ的な短い音)を読み込みます。
従ってデザインツールのルーティングは次のようになります。ソースがplaySdWavからplayMemに変わっていますが他は同じです。
これをまたExportしてスケッチに組み込んだのが次のコードです。冒頭で幾つかのライブラリをインクルードしていますが、夫々にドラムのワンショットサンプルが含まれているようです。Arduino IDEでこのスケッチを開くと、スケッチ自体のタブの他に幾つもタブが出てきますが、中を見ると何とWAVファイルをバイナリに変換した生データです。
ここでやっていることは、3つのサンプルを3つのスイッチにアサインして押すと鳴る。つまりサンプラーです。ただオリジナルのスケッチでは”/*Switch 2 drum sets by knob3*/”(私が追記)以下の部分がコメントアウトしてあったので、それを外して動くようにしています。
何をしているかというと、ノブ3を左右に回す事でドラムセットを切り替えているのです。ノブの位置が真ん中より右なら最初の3つのサンプルが、真ん中より左なら後半の3つサンプルが鳴ります。つまりここでのノブ3はアナログ制御ではなく切り替えスイッチとして使っているだけです。
実際にどうなるか撮影したのが下のビデオです。ピンボケですみませんが、音はPCでライン録音しているのでオリジナルに近いです。