エンベロープ
概要
1. 基本構造(ADSR)
Playdateのエンベロープは、標準的なADSR形式を採用しています。
- Attack (アタック)
- ノートオン(トリガー)から最大値に達するまでの時間。
- Decay (ディケイ)
- 最大値からサステインレベルまで下がる時間。
- Sustain (サステイン)
- ノートが保持されている間のレベル(0.0〜1.0)。
- Release (リリース)
- ノートオフ(キーを離した際)から音が消えるまでの時間。
2. 主なメソッドとパラメーター
エンベロープは playdate.sound.envelope.new() で作成します。
-- 引数: attack, decay, sustain, release
local env = playdate.sound.envelope.new(0.1, 0.2, 0.5, 0.4)
- setADSR(a, d, s, r) 後からパラメーターを更新します
- setLegato(flag) レガート設定。有効な場合、前のノートが鳴っている間に新しいノートがトリガーされてもアタックフェーズを再開せず、現在のレベルから継続します
3. シンセサイザーでの利用
エンベロープの最も一般的な用途は、playdate.sound.synth へのアタッチです。
- ボリューム・エンベロープ
- シンセには標準でボリューム用のエンベロープが組み込まれています。
local synth = playdate.sound.synth.new(playdate.sound.kWaveSawtooth)
synth:setEnvelope(0.05, 0.1, 0.8, 0.3)
- パラメーター・モジュレーション
- 特定のパラメーター(フィルターのカットオフ周波数など)にエンベロープを割り当てて、時間的な変化をつけることができます。
4. 特筆すべき仕様
- 時間の単位
- 基本的に秒単位で指定します。
- サンプリングレート
- エンベロープの更新はオーディオバッファ単位で行われるため、非常に滑らかな変化が可能です。
- LFOとの違い
- LFOが周期的な変化を繰り返すのに対し、エンベロープはトリガー(ノートオン)に同期した一過性の変化を制御するのに適しています。
5. C APIにおけるエンベロープ
C言語を使用して開発する場合も、SoundEnvelope 構造体とそれに関連する関数(setAttack, setDecay など)が用意されています。Lua APIと機能的な差はほぼありませんが、メモリ管理を自身で行う必要があります。
Playdateの音楽制作環境(DTM的側面)においては、このエンベロープをシンセの音色作りに活用することで、チップチューン風の短い音から、パッドのような長い減衰音まで幅広く表現できます。
関連ページ
最終更新:2026年04月30日 07:38