AgentSkillsCN

juce-impl

JUCE音频插件实现时的C++编码规范。在编辑src/目录下的文件时,会自动被引用。“/juce-impl”也可用于显式启动。

SKILL.md
--- frontmatter
name: juce-impl
description: >
  JUCEオーディオプラグイン実装時のC++コーディングルール。
  src/ 配下のファイルを編集するときに自動的に参照される。
  "/juce-impl" で明示的に起動も可能。

JUCE Implementation Rules

基本規約

  • JUCE 8 のコーディングガイドラインに従う
  • ヘッダファイル (.h) と実装ファイル (.cpp) を分離
  • JUCE module スタイルのインクルードを使う: #include <juce_audio_processors/juce_audio_processors.h>
  • pragma once をヘッダに使用

スレッドセーフ

  • processBlock は常にオーディオスレッドで呼ばれる前提
  • prepareToPlay, releaseResources はメッセージスレッド
  • パラメータ読み取りは std::atomic または AudioProcessorValueTreeState 経由
  • GUI→DSP の通信は lock-free で行う

パラメータ

  • AudioProcessorValueTreeState で管理
  • パラメータID は小文字スネークケース: "filter_cutoff"
  • NormalisableRange で範囲を定義
  • skew factor はUIの操作感に応じて設定

GUI

  • Component 派生クラスで構築
  • LookAndFeel は分離して差し替え可能に
  • resized() でレイアウト計算
  • Timer や AsyncUpdater でDSPパラメータをGUIに反映

scaffold/ との関係

  • scaffold/ にヘッダがあればインターフェースをそのまま実装
  • クラス名、関数名、引数を変更しない
  • design.md のモジュール責務に従う

サイズ目安

  • 1関数 50行以内
  • 1ファイル 300行以内
  • 超えたら分割を検討するが、勝手にやらず報告