Linuxカーネルに飽きたら、Linus Torvaldsは何をしているか
LinuxとGitの創設者が、余暇にアナログ回路設計とデジタル音声処理に足を踏み入れた姿を想像してみてください。その結果がGitHub上のGuitarPedalプロジェクトです。これは完全な功能的ギター用マルチエフェクトペダルで、Linus自身がKiCadでPCBを設計し、Cでファームウェアを написал.
このプロジェクトは、以前放置されていたプロトタイプから発展したものですが、当初はアナログポテンショメータを使用しており、設定が噩梦的でした。現在では、OLEDスクリーン、2つのエンコーダ、新鮮なマイクロコントローラ搭载しています。
モジュラーハードウェアと极细のコネクタ
ハードウェアは、モジュール式で分解可能な設計に基づいて构建されています。 전체回路を1つの大きなボードに라우팅する代わりに、Linusはデバイスを4つの别々のモジュールに分割しました。
最初のボードには、Raspberry Pi Pico 2ファミリーからRP2354マイクロコントローラが搭载されています。2番目のボードには、TI TAS5720Lオーディオコーデックがホストされており、ギターの信号をデジタル化します。3番目のモジュールには9V電源コネクタとオーディオジャックが含まれ、4番目は128x128スクリーン、フットスイッチ、エンコーダとのインターフェースを処理します。

モジュールはフラットな12ピンFFCケーブルで相互に接続されます。数据传输は、制御用のI2Cとオーディオ用のI2S経由で行われます。ボードにはピッチ仅か0.35mmのHiRose BM28コネクタを使用しています。TorvaldsはREADMEで、手作業でのこのような微小な部品の组装は困难であると公言しています。しかし、それによりすべてをコンパクトなエンクロージャに収めることが可能になっています。
著者は强调しています:モジュラー性は、レイアウトの экспериメントのために必要でした。デザインを複製することを決めた場合、コーデックを直接コネクタボードに、マイクロコントローラをコントロールボードに配置する方がより合理的です。これにより、两面组装と複雑なリボンケーブルが不要になります。

制御とファームウェアのビルド
エンクロージャの上部にはモノクロディスプレイがあります。その下には、内蔵ボタン付きの2つのロータリーエンコーダと2つのフットスイッチがあります。
上のエンコーダは現在のパラメータの値を変更し、押すとリスト内の次のパラメータに切り替わります。下のエンコーダはエフェクト自体をスクロールします。左のフットスイッチは足でタップして選択したエフェクトを有効または無効にし、右のものはペダルを信号バイパスモードに切り替えます。
ファームウェアのビルドは、不必要な复杂さを伴うことなく简单です。ソースコードはpico-sdkとtinyusbへのバインディングを備えた純粋なCで書かれています。Linuxでのプロセスは次のようになります:
git clone https://github.com/torvalds/GuitarPedal.git
cd GuitarPedal/Software
make prep
make
ビルドディレクトリにはの準備ができたファイルが現れます。デバイスにフラッシュするには、USBで接続している間に両方のエンコーダを押さえ続け、表示される仮想ドライブにファイルをコピーするだけです。
DSPの内部
リポジトリの中で最も興味深い部分は、ソフトウェア処理フォルダにあります。Torvaldsは独自のDSPアルゴリズムセットを書きました。计算は32ビット浮動小数点形式で行われます。
ペダルの現在の機能:
- ノイズゲート。しきい値レベルは-85 dBVまで低下します。コードは、ピックアップのハムをカットし、弦のテールを素早くチョッピングしないようにアタックとディケイパラメータを計算します。ゲートがトリガーされるとステータスLEDの明るさが変わります。
- コンプレッサー。调整可能なアタックタイム、ディケイ、マスターアップゲインレベルで動作します。
- 信号リミティング付きブースト。標準の波形のクリップの代わりに、Linusは信号フォールディングを使用しました。振幅がしきい値を超えると、波はカットされませんが、巻き戻されます。これにより、豊かな倍音スペクトルが作成されます。
- エコーとディレイ。Echo KingエフェクトはHothouseプロジェクトからポートされ、Maestro Echoplexテープディレイをエミュレートします。基本的なフェーザーやフランジャも近くに存在します。
- ピッチシフター。重い高速フーリエ変換なしで動作します。アルゴリズムは2つのフェーズを持つリングディレイバッファと、シームでの正弦波スムーズングを使用します。フィードバックを追加すると、逐渐的なピッチドリフトを伴うエコー効果が生成されます。
- 10バンドイコライザー。各バンドは-20 dBから+20 dBまで調整でき、現在の周波数応答がスクリーンにグラフとして描画されます。
コードには、USB経由でコンピュータにオーディオを送信するためのスタブもあり、Linus自身がこの部分の不安定性について警告しています。
このプロジェクトを見る理由
GuitarPedalリポジトリは、完成した楽器というよりも、1人による完全なサイクル組み込み開発の実例として興味深いです。
ここから手にに入れることができます:
- コンパクトなエンクロージャでの作業例を含む、KiCadでの готовые схемとレイアウト
- RP2040およびRP2350チップでのI2S経由のオーディオコーデック操作用のネイティブCコード
- 外部の重いライブラリなしのギターエフェクト用の明確な数学的アルゴリズム
- エンコーダベースのOLEDスクリーン用のシンプルなUI
マイクロコントローラでのDSPを理解したい場合や、Linuxカーネル以外のTorvaldsのコード記述方法を確認したい場合は、このリポジトリの研究は本当に価値があります。
関連プロジェクト