アットウィキロゴ

エンベロープ

Playdate SDK(特にLua API)におけるエンベロープ(playdate.sound.envelope)は、音のボリュームやシンセサイザーのパラメーターを時間経過とともに変化させるための機能です。
主にシンセサイザーサンプルプレイヤーと組み合わせて使用されます。


概要

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