[MaxTips_13] MaxMSPで作るベースシーケンサー(TB-303クローン)

こんにちは、首藤です。
今回は、これです。

TB-303といえば、ビヨンビヨンのアシッドサウンドだと思いますので、
以下のような構成でパッチを作ります。

  • ステップシーケンサー
    • ノートナンバー
    • ノートオン・オフ
    • スライド
    • アクセント
  • ノコギリ波オシレータ
  • エンベロープつきローパスフィルタ

細かい点は、TB-303をFlashで再現している、Audiotoolsを参考にしました。

基本となるシーケンサー

様々なオブジェクト構成でシーケンサーを作ることができますが、
今回は、multisliderオブジェクトを用いて、リストベースで作ります。

基本的な構成はこのような感じです。

multisliderから出力されるリストを、一旦zlオブジェクトに格納して、
そのリストの中からtempoオブジェクトなどで値を取り出します。

multisliderのインスペクタはこのようになっています。

[t b i]から[zl mth]までをサブパッチ化して、multisliderと一緒に複製し、
オクターブ設定用のステップシーケンサーを作ります。

これでRUNトグルをオンにすると、16分音符で1小節分のシーケンスが再生されます。

multisliderのインスペクタは、目的に合わせて少し変更しています。

スライド機能を加える

TB-303の大きな特徴であるスライド機能は、
line~オブジェクトを使って、周波数の変化を滑らかにすることで再現します。

BPMを取得して、周波数の変化にかかる時間を設定しています。
スライドがオンのときは、次の発音時にポルタメントがかかるという仕様を再現するため、
bucketオブジェクトで前回の値を出力しています。

音量のシーケンス

オシレータまわりは一旦置いといて、次は音量の制御部分を作ります。

ノートオン・オフと、アクセント・スライドでの音量変化を条件付けて、まとめて作ります。

  • 基本の音の長さは32分音符
  • スライドがオンの場合は次のステップまで音を出し続ける
  • アクセントがオンの場合は音量2倍
  • 前回のステップでスライドがオフの場合のみアクセントが有効

ifを使わなかったのでかなり見にくくなっていますが、
細かい条件式から、line~オブジェクトへのメッセージを作っています。

エンベロープつきローパスフィルタ

ローパスフィルタには、lores~オブジェクトを使っています。

svf~オブジェクトや、biquad~オブジェクトを使うと、音の雰囲気も変わります。
周波数やエンベロープの計算方法など、お好みで変えてみてください。

エンベロープのトリガーは、先ほどのノートオンやアクセントなどの情報から取り出しています。
[p AmpEnvelope]の中身は、このようになっています。

組み合わせる

最初に作っておいたものを組み合わせれば、あとはツマミをグリグリ動かせばそれらしいアシッドサウンドの出来上がりです。

と、ここまでは以前作っていたパッチを分解しながら書いたのですが、
せっかくなので

おまけ

GUI作ってみました。

シーケンスの読み書きにtableオブジェクトを使っているなど、
若干の変更点もあります。

シーケンスの入力方法はTB-303方式です。
左上のDSP STARTのボタンをオンにして、RUNのボタンをオンにすると音が鳴ります。
TB-303クローンクローンなので、実機とかけ離れているかもしれませんが、
音源やシーケンスロジックなどを変えていけば、面白くなるかもしれません。

パッチのダウンロード

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>