Apa itu Format File Audio QOA? Fitur, Arsitektur, dan Cara Membukanya
Dalam rekayasa audio digital dan pengembangan game, menyeimbangkan ukuran file, latensi pemutaran, dan beban CPU selalu menjadi tantangan. Format standar seperti MP3, AAC, dan Ogg Vorbis menawarkan rasio kompresi tinggi tetapi memerlukan pipeline dekoding yang kompleks, aritmetika floating-point yang berat, dan jejak memori yang besar. Di sisi lain spektrum, PCM tidak terkompresi (.wav) menyediakan pemutaran tanpa latensi dengan mengorbankan penggunaan disk yang masif dan pengiriman aset yang lambat.
Format QOA (Quite OK Audio) mengisi kesenjangan ini. Dibuat oleh Dominic Szablewski (pencipta format gambar QOI yang sangat dipuji), QOA adalah format audio lossy sumber terbuka yang dirancang untuk dekoding super cepat, kompleksitas minimal, dan penggunaan memori yang dapat diprediksi.
Apa itu File QOA?
File dengan ekstensi .qoa menyimpan audio digital terkompresi menggunakan format Quite OK Audio. Ia beroperasi pada data audio pulse-code modulated (PCM) dengan kedalaman 16-bit pada rentang sample rate dari $1\text{ Hz}$ hingga $16,777,215\text{ Hz}$ dan mendukung hingga 31 saluran audio.
Berbeda dengan codec psikoakustik yang bergantung pada transformasi domain frekuensi (seperti Modified Discrete Cosine Transform atau MDCT), QOA bekerja sepenuhnya di domain waktu. Ia mengompresi audio hingga rasio tetap sebesar $3.2\text{ bits per sample}$, mencapai rasio kompresi konstan $5:1$ pada PCM linear 16-bit mentah.
Untuk audio kualitas CD standar (44,1 kHz, stereo), aliran QOA mencapai bitrate yang tepat dan konstan sebesar:
$$\text{Bitrate} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Fitur Detail QOA
1. Spesifikasi dan Implementasi Minimalis
Codec modern tradisional memerlukan ratusan halaman spesifikasi teknis dan ribuan baris kode untuk diimplementasikan. Sebaliknya, seluruh spesifikasi format QOA muat dalam PDF satu halaman, dan implementasi referensi resmi (qoa.h) terdiri dari sekitar 400 baris kode C standar.
2. Prediksi LMS Domain Waktu
QOA menghindari algoritma transformasi yang memakan banyak komputasi. Sebagai gantinya, ia menggunakan filter prediksi Least Mean Squares (LMS) adaptif dengan empat bobot historis per saluran. Dengan memperkirakan nilai sampel masa depan dan hanya merekam perbedaan residual yang dikuantisasi, QOA memberikan kualitas audio perseptual yang transparan tanpa penggunaan CPU yang berat.
3. Dekoding Sangat Cepat
Karena QOA bergantung sepenuhnya pada aritmetika integer dan operasi ringan, ia mendekode hingga $3\times$ lebih cepat daripada Ogg Vorbis dan secara signifikan mengungguli decoder MP3 standar. Bahkan ia mendekode lebih cepat daripada Microsoft ADPCM, menjadikannya ideal untuk perangkat keras tertanam berdaya rendah, mikrokontroler, dan mesin game waktu nyata.
4. Arsitektur Chunked Siap Streaming
File QOA dibagi menjadi frame mandiri yang menampung hingga $5,120$ sampel per saluran ($256$ irisan masing-masing $20$ sampel). Setiap frame membawa bobot filter LMS dan sejarahnya sendiri, memungkinkan pencarian langsung, pemulihan tanpa penalti dari paket yang hilang, serta streaming dinamis secara langsung tanpa indeks global yang wajib.
Karakteristik Utama QOA
| Karakteristik | Spesifikasi / Detail |
|---|---|
| Ekstensi File | .qoa |
| Byte Ajaib | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Pengembang / Pencipta | Dominic Szablewski (PhobosLab) |
| Tipe Kompresi | Lossy (Prediksi LMS domain-waktu) |
| Rasio Kompresi | Tetap $5:1$ relatif terhadap PCM 16-bit |
| Penyimpanan per Sampel | Tepat $3.2\text{ bits per sample}$ |
| Laju Bit (44.1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ muatan) |
| Rentang Laju Sampel | $1\text{ Hz}$ to $16,777,215\text{ Hz}$ ($24\text{-bit}$ tanpa tanda) |
| Saluran yang Didukung | $1$ sampai $31$ saluran audio (Mono, Stereo, 5.1, 7.1, dll.) |
| Beban Header | Header berkas 8-byte, header frame 8-byte |
| Lisensi | MIT (Kode Sumber) / CC0 (Spesifikasi & Logo) |
Cara Membuat dan Mengkodekan File QOA
Menyandikan audio ke QOA menjadi sederhana berkat binari pengembang yang telah dibangun sebelumnya dan rangkaian alat komunitas.
Metode 1: Menggunakan CLI qoaconv Resmi
Encoder utama didistribusikan langsung dalam repositori referensi resmi.
- Klon repositori dan bangun binary:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Konversi file WAV yang tidak terkompresi ke QOA:
./qoaconv input.wav output.qoa - (Opsional) Jika dikompilasi dengan
HAS_DRLIBS=true,qoaconvdapat langsung mentranskode dari file.flacdan.mp3juga.
Metode 2: Pengkodean Dalam Mesin (Godot Engine)
Mulai dari Godot 4.3, pengembang game dapat mengimpor file .wav yang tidak terkompresi dan memilih kompresi QOA langsung dari dock Impor Godot. Ini menghasilkan aset game yang kompak yang didekode secara native dengan latensi CPU yang dapat diabaikan selama adegan gameplay yang berat.
Metode 3: Konverter Web Dalam Browser
Beberapa utilitas WebAssembly berbasis web (seperti yang dihosting di qoaformat.org dan demo open-source terkait) memungkinkan pengguna untuk menyeret dan menjatuhkan file audio standar serta mengunduh aset .qoa yang terenkode secara lokal tanpa menjalankan perintah terminal.
Cara Membuka dan Memutar File QOA
Karena QOA adalah format ringan yang dibangun terutama untuk integrasi runtime, pemutar media konsumen konvensional mungkin memerlukan plugin atau build khusus.
- Pemutar CLI Khusus (
qoaplay): Repository resmi dikompilasi menjadiqoaplay, yang menggunakan subsistem audio native (ALSA di Linux, CoreAudio di macOS, WASAPI di Windows) untuk memutar file.qoasecara langsung:./qoaplay audio.qoa - Kerangka Kerja & Mesin Game:
- Raylib: Dukungan native melalui modul
raudio. - Godot Engine: Dukungan pemutaran native penuh (Godot 4.3+).
- Raylib: Dukungan native melalui modul
- Pemutar Media & Plugin:
- Qmmp: Pemutar multimedia canggih dengan modul dekoding QOA native.
- OpenCubicPlayer: Pelacak klasik dan pemutar berkas audio yang mendukung aliran QOA.
- Audacious / foobar2000: Didukung melalui plugin input komunitas sumber terbuka.
- IDE & Alat Pengembang:
- VS Code: Ekstensi QOA Preview memungkinkan pengembang melihat pratinjau dan memutar klip suara
.qoalangsung di dalam pohon sumber mereka.
- VS Code: Ekstensi QOA Preview memungkinkan pengembang melihat pratinjau dan memutar klip suara
Pertanyaan yang Sering Diajukan (FAQ)
Apa kepanjangan QOA?
QOA merupakan singkatan dari Quite OK Audio, sebuah format audio lossy yang cepat, sederhana, dan bersumber terbuka.
Apakah audio QOA lossless atau lossy?
QOA adalah format kompresi audio lossy, tetapi tetap mempertahankan kualitas audio hampir transparan untuk kebanyakan kasus penggunaan praktis.
Seberapa besar kompresi yang diberikan QOA?
QOA mengompresi audio tak terkompresi 16-bit dengan rasio konstan $5:1$ (tepatnya $3.2\text{ bits per sample}$).
Bisakah QOA menggantikan MP3 atau AAC untuk streaming musik umum?
Tidak, QOA memprioritaskan dekoding ultra-cepat dan ringan dibandingkan penghematan bandwidth maksimum, menjadikannya lebih cocok untuk game, mikrokontroler, dan aplikasi latensi rendah daripada streaming web berkapasitas tinggi.
Apakah QOA memiliki biaya lisensi atau paten?
Tidak, QOA sepenuhnya bebas paten dan dirilis di bawah lisensi MIT yang permisif, sementara spesifikasi dan logonya berada di domain publik (CC0).
URL Referensi & Sumber Resmi
- Situs Resmi: https://qoaformat.org/
- Spesifikasi Resmi (PDF): https://qoaformat.org/qoa-specification.pdf
- Repositori GitHub: https://github.com/phoboslab/qoa
- Pendalaman Teknis Penulis: PhobosLab Blog - Pengumuman QOA & Tolok Ukur