アットウィキロゴ

サンプルプレイヤー

Playdate SDKにおけるサンプルプレイヤー(playdate.sound.sampleplayer)は、メモリ上にロードされた音声波形(サンプル)を再生するためのクラスです。
主に効果音(SE)や、短いループ音、リアルタイムなピッチ操作が必要な音源に適しています。


概要

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