Picture

Hi, I'm marksard.

Joy of making, Smile be making, Interest and making.

ユークリッドリズムシーケンサーを作った

img

マルチティンバー音源化

モジュラーシンセって音が出るモジュールが増えるとデチューンさせて一斉にぶわぁ~っと音を出すよりパート分けたりモジュレーションソースとして使いたい、という思考になるんですね。
ベースとアルペジオとバスドラの音を作って一緒に鳴らしたいというマルチティンバー音源的な欲…
鳴らしたい方向性の音や好きなモジュールを好きなケースに詰め込んでひとつのマルチティンバー音源楽器として組んでいく。でっかくて重たいガジェットシンセ()を作る感じ。そういう面白さも秘めているんだな。

さておき、とりあえず自作の16ステップなシーケンサーアプリのSYNC OUTを1PPQ設定にしてそれをトリガーにバスドラムに仕立てた音を一緒に出してみたりして遊んでたものの、追加でトリガー出したり演奏出来るシーケンサーが欲しいな!となりました。

クロックディバイダーから作るかなぁ、などと考えつつフリーなモジュラーシンセアプリのVCVで遊んでたらひらめきました。

  • ユークリッドリズムのトリガー出力機能
  • サンプル&ホールド機能
  • クオンタイザー機能

くらいならひとつのアプリとしてまとめられそうだなと。

ユークリッドリズムを超絶ざっくり解説すると、リズムのタイミングに一定のパターンを用いたらなんか大体の民族音楽に当てはまったよ、そのパターンの作りかたがユークリッドの互除法に似てるからそう名付けたよ、という(因果がどちらかは斜め読みでは読み取れませんでした)
http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf
わかりやすく解説されてるこの方のブログが参考になりました。
https://fantasysound.net/2019/07/28/euclidean-rhythm/

ついでに…サンプル&ホールドはソースとなる電圧をトリガーON~ON間一定に保持するもので、ノイズをソースにするとトリガーするたびに違う電圧値(いわゆるランダム)になる。LFO波形をソースに一定のタイミングでトリガーしていくと、波形の周波数がトリガー周期より遅いとビットが荒くなったように階段状になって、逆に周波数のが速いと一定周期で同じ音が取れフレーズに聞こえる周期が出てきます。
このホールドした電圧を音階として調律するのが(ピッチ)クオンタイザー。入力した電圧を指定の音階に従った値に補正して出力、VCOなんかに入れるとその音階で鳴る。
まとめると連続値の波形をサンプリングして離散値に変換後V/OCT式の音階に値を補正するという感じ。雑に言うなら交流→V/OCT変換器的な感じ?

ユークリッドリズムシーケンサーは作ってみたかったものの一つだし、サンプル&ホールドとクオンタイザーもあるとやれることもグッと広まるし。
内部での機能的な繋がりは

  • 内部 or 外部クロックから、ユークリッドリズムのトリガーを出力
  • 内部LFO or 外部CVをソースに、内部 or 外部クロック or ユークリッドリズムトリガーでサンプル&ホールドする
  • サンプル&ホールドした値はクオンタイザーに通してCV(V/OCT)を出力

という感じ。
ユークリッドリズムのトリガー出力だけ使うもよし、クオンタイザー通したCVと組み合わせて鳴らすもよし、CVのソースにしてもよしと一粒で何個も美味しいみたいな奴になるなと。

仕様

  • ユークリッドリズムシーケンサー部2系統
    • 内部・外部クロックで動作
    • ステップ数1~16
    • トリガー数 1~16
    • トリガーデュレーション(クロック幅に対して5〜100%)
  • S&H部
    • ソース
      • 内部LFO(square, up-saw, down-saw, triangle, noise)
      • 外部CV入力(0~5V)
    • ホールドトリガー
      • 設定中のクロック
      • ユークリッドシーケンサーのトリガー
  • クオンタイザー部
    • スケール設定 (メジャーとかマイナーとかブルースとか)
    • S&Hからの入力に対するオクターブ変化範囲制限(内蔵LFO時のみ、外部CV時は外部アッテネータで制御)
  • インターフェース
    • IN
      • S&H Source
      • Clock
    • OUT
      • Euclid Trigger x2
      • V/OCT

1から作らなきゃだったのはユークリッドリズムのアルゴリズムくらい。内部クロック生成やクオンタイザーのスケール設定はステップシーケンサーアプリから、内部LFOはVCOアプリからの流用。サンプル&ホールドはトリガータイミングのときだけ出力を変える条件文だけなので機能として作るまでもないという感じ。

ソースはgithubに置いています。
Euclidean.hppがユークリッドリズム生成のコア。ステップ数と打点数(それぞれ上限16)を設定して生成します。計算時は演算簡略、メモリ節約のため最大ステップ数16から2バイト(16ビット)におさめて1打点1ビットにしてます。32ビット変数に変えればひょっとしたら32ステップまでいけるかもしれない。参考になればいいですが。

https://github.com/marksard/EurorackPlayground/tree/main/app/EuclideanSeq

ハードウェア的に上に書いた仕様だとIN x2、OUT x3必要で、自設計のプラットフォームモジュールはIN x2、OUT x2が上限で足りないので余っている基板を改造して一台作成。

ちな改造箇所
 バッファ部+12V単電源→±12V両電源(USBのみでの駆動を視野に入れて5V/12V切り替え式にしたけど結局ほとんど使わなかった)  1次フィルタ→2次フィルタ(promicroシンセ試作時は2次だったけど1次でいいやと変更、でもやっぱり最低2次必要というのがわかった)  アプリからのバイポーラ/ユニポーラ切り替え対応機能  MIDI INをGPIOに制限抵抗と過電圧保護つけた入出力兼用回路に変更(MIDI IN/OUTを使ってなかったので…)

という感じ。

動画とか

トリガーの出具合と入力したCVに対するサンプルホールド後の出力がわかります

ユークリッドリズムの視覚表現をOLEDに表示。上のユークリッドリズムの解説にもこの表現がありますね。
hagiwoさん作のユークリッドリズムシーケンサーでこのシーケンス方式を知ったので、真似してみたかったんですよね。
https://note.com/solder_state/n/n433b32ea6dbc

オシロ機能を載せてみた。サンプルホールドのソース波形の電圧値の最低、最高値を確認しながらV/OCTのオクターブ範囲を調整するためと、入力が0~5Vなのでオフセット値を確認するため。

アンビエントしてみた。 16ステップシーケンサーと組み合わせたり、VCLFOと組み合わせてステップを速くしたり遅くしたりと遊びの幅が広がりますよね。

おまけ(ケース)

今年の春先にdotRed Audio DesignsのWORKFRAME84-Cのケースを買ったんですが、明らか足りないので先日ArturiaのRackbrute 6Uを買い増ししました。
この子をこの場所に置くためにデスクまわりを模様替えして奥に棚を置いたりモニタースタンドを右にオフセットしたりしました。
RackBrute 3Uも買って組み合わせたいなぁ…

img

Back to Top