サンプルプレイヤー
概要
1. 基本的な特徴
Playdateには、音声を再生する仕組みとして「サンプルプレイヤー」と「
ファイルプレイヤー」の2種類があります。
- サンプルプレイヤー (sampleplayer)
- 音声データ全体をRAM(メモリ)に読み込みます
- 遅延(レイテンシ)が非常に小さく、トリガーに即座に反応します
- 再生速度(ピッチ)の変更、逆再生、ループ範囲の指定など、柔軟な操作が可能です
- ファイルプレイヤー (fileplayer)
- ストレージ(flash)からデータをストリーミング再生します
- メモリ消費が少ないため、BGMなどの長い曲に適しています
2. 対応フォーマットとコンパイル
Playdateで使用する音声ファイル(.wav, .aiff)は、ビルド時にSDKのコンパイラ(
pdc)によって、独自の.pdi形式に変換されます。
- フォーマット
- 8bit/16bit、モノラル/ステレオ、非圧縮。
- 注意点
- シミュレータでは元のファイルを読み込めますが、実機ではコンパイル済みのリソースである必要があります。
3. 主要なメソッドと実装例
サンプルプレイヤーの作成と基本的な操作は、
Lua APIで以下のように記述します。
-- サンプルの読み込みとプレイヤーの作成
local sample = playdate.sound.sample.new("sounds/explosion")
local player = playdate.sound.sampleplayer.new(sample)
-- 再生 (リピート回数, 再生速度)
-- リピート回数 0 は無限ループ、1 は1回再生
player:play(1, 1.0)
-- ピッチ操作 (1.0が標準、2.0で1オクターブ上、-1.0で逆再生)
player:setRate(1.2)
-- ボリューム設定 (左, 右)
player:setVolume(0.8, 0.8)
4. 高度なテクニックと最適化
- メモリの節約
- 同じ音声を複数のプレイヤーで鳴らしたい場合(例:連続する爆発音)、sample オブジェクトを1つ作成し、それを複数の sampleplayer で共有することで、メモリ消費を最小限に抑えられます。
- シグナルによる変調(setRateMod)
- setRateMod(signal) メソッドを使用すると、LFO(低周波発振器)などのシグナルを再生速度に割り当てることができます。これにより、ビブラートや複雑なピッチ変化を自動化できます。
- クランク(Crank)との連携
- Playdate特有の「クランク」を使って音声を操作する場合、setRate や setOffset をクランクの回転量に同期させる手法が一般的です。
- 例: クランクを回す速さに合わせて再生速度を変えることで、レコードのスクラッチのような演出が可能です
5. 制限事項
- RAM容量
- Playdateのメモリは16MBと限られているため、巨大なサンプルファイルを大量にロードするとメモリ不足(Out of Memory)の原因になります。
- ポリフォニー
- 同時発音数にハードウェア的な厳密な制限はありませんが、CPU負荷とメモリ使用量に応じて調整が必要です。
Playdateでの音楽制作や効果音の実装において、sampleplayer は最も表現力の高いツールの一つです。
関連ページ
最終更新:2026年04月30日 07:47