Skip to content

Enums

Four backed enums define the core types used throughout the library.

AudioFormat

Major audio container formats. Values are libsndfile SF_FORMAT_* constants masked against SF_FORMAT_TYPEMASK ( 0x0FFF0000).

Cases

CaseHex ValueExtension
Wav0x010000wav
Aiff0x020000aiff
Au0x030000au
Raw0x040000raw
Flac0x170000flac
Ogg0x200000ogg
Mpeg0x230000mp3
Caf0x180000caf

Full cases: Paf, Svx, Nist, Voc, Ircam, W64, Mat4, Mat5, Pvf, Xi, Htk, Sds, Avr, Wavex, Sd2, Wve, Mpc2k, Rf64.

Methods

php
AudioFormat::Wav->extension();                               // 'wav'
AudioFormat::fromExtension('flac');                          // AudioFormat::Flac
AudioFormat::fromPath('song.mp3');                           // AudioFormat::Mpeg
AudioFormat::Wav->defaultSampleFormat();                     // SampleFormat::Pcm16
AudioFormat::Wav->compatibleSampleFormats();                 // [PcmS8, Pcm16, ...]
AudioFormat::fromSndfileFormat($combinedFormat);             // Extract from sf format value

SampleFormat

Audio encoding subtypes. Values are libsndfile SF_FORMAT_* constants masked against SF_FORMAT_SUBMASK ( 0x0000FFFF).

Common cases

CaseHex ValueBit DepthInteger
PcmS80x00018Yes
Pcm160x000216Yes
Pcm240x000324Yes
Pcm320x000432Yes
Float0x000632No
Double0x000764No
Vorbis0x00600No
MpegLayerIII0x00820No

Full cases: PcmU8, ULaw, ALaw, ImaAdpcm, MsAdpcm, Gsm610, Dwvw12, Dwvw16, Dwvw24, DwvwN, MpegLayerI, MpegLayerII.

Methods

php
SampleFormat::Pcm16->bitDepth();            // 16
SampleFormat::Pcm16->isInteger();           // true
SampleFormat::Float->isPcm();               // false
SampleFormat::Float->toDtype();             // DType::Float32
SampleFormat::fromDtype(DType::Int16);      // SampleFormat::Pcm16
SampleFormat::fromSndfileFormat(0x010006);  // SampleFormat::Float

FileMode

File open modes matching libsndfile's SFM_READ / SFM_WRITE / SFM_RDWR.

CaseValueDescription
Read0x10Open for reading
Write0x20Open for writing (creates or truncates)
ReadWrite0x30Open for both reading and writing
php
use PhpMlKit\SoundFile\Enums\FileMode;

$sf = new SoundFile('file.wav', FileMode::Read);

ResampleQuality

libsamplerate converter quality levels.

CaseValueDescription
Best0Band-limited sinc, highest quality, slowest
Medium1Band-limited sinc, medium quality
Fastest2Band-limited sinc, fastest
Linear3Linear interpolation, fastest but lowest quality
php
use PhpMlKit\SoundFile\Enums\ResampleQuality;

$r = sf_resample($audio, 44100, 22050, quality: ResampleQuality::Fastest);

Released under the MIT License.