• Tidak ada hasil yang ditemukan

2. TINJAUAN PUSTAKA. Tabel 2.1. RIFF Chunk (ukuran: 12 byte)

N/A
N/A
Protected

Academic year: 2022

Membagikan "2. TINJAUAN PUSTAKA. Tabel 2.1. RIFF Chunk (ukuran: 12 byte)"

Copied!
44
0
0

Teks penuh

(1)

5 2.1. File WAV1

File WAV terdiri atas 3 chunk (potongan) informasi, yaitu RIFF chunk, FORMAT chunk, dan DATA chunk. RIFF chunk menunjukkan bahwa file tersebut merupakan file WAV, FORMAT chunk menunjukkan parameter seperti sample rate dan DATA chunk mengandung data yang sebenarnya (samples).

Tabel 2.1. RIFF Chunk (ukuran: 12 byte)

Byte Number

Field Name Keterangan

0 – 3 ChunkID “RIFF” (karakter ASCII) atau 0x52494646 (big endian form) 4 – 7 ChunkSize Ukuran seluruh chunk setelah ChunkSize (Binary, little endian) 8 – 11 Format “WAVE” (karakter ASCII) atau 0x57415645 (big endian form)

Tabel 2.2. FORMAT Chunk (ukuran: 24 byte)

Byte Number

Field Name Keterangan

0 – 3 Subchunk1ID “fmt_” (karakter ASCII) atau 0x666d7420 (big endian form) 4 – 7 Subchunk1Size Panjang FORMAT chunk (Binary, selalu bernilai 16) 8 – 9 AudioFormat Selalu bernilai 1

10 – 11 NumChannels Jumlah channel (Mono=1, Stereo=2) 12 – 15 SampleRate Binary (dalam Hz, seperti 8000, 44100)

16 – 19 ByteRate Bytes Per Second = SampleRate * NumChannels * BitsPerSample / 8

20 – 21 BlockAlign Bytes Per Sample = NumChannels * BitsPerSample / 8. (8 bit Mono = 1, 8 bit Stereo atau 16 bit Mono = 2, 16 bit Stereo = 4) 22 – 23 BitsPerSample 8 bit = 8, 16 bit = 16, dan lain-lain

Tabel 2.3. DATA Chunk

Byte Number

Field Name Keterangan

0 - 3 Subchunk2ID “data” (karakter ASCII) atau 0x64617461 (big endian form) 4 – 7 Subchunk2Size Ukuran Field Data

8 - … Data Berisi data (samples)

1 COMP630 WAV File Format Description (online) <http://www.technology.niagarac.on.ca/

courses/comp630/WavFileFormat.html>

(2)

2.2. File MP32

File MP3 memiliki frame header dengan format seperti di bawah ini:

Gambar 2.1. Frame Header (32 bit atau 4 byte)

Berikut ini akan dijelaskan mengenai isi dari frame header satu persatu:

• Frame sync terdiri atas 12 bit dan selalu diset (bernilai 1).

• Sync kemudian diikuti oleh ID yang mengidentifikasikan apakah file tersebut merupakan MPEG-1 atau MPEG-2 file (0=MPEG-2 dan 1=MPEG-1).

2 The private life of MP3 frames (online) <http://www.id3.org/mp3frame.html> dan

Bouvigne, G. (1999). MPEG Audio Layer I/II/III Frame Header (online) <http://www.mp3- tech.org/ programmer/frame_header.html>

(3)

• Deskripsi layer:

Tabel 2.4. Deskripsi Layer pada File MP3 00 Reserved

01 Layer III 10 Layer II 11 Layer I

• Jika protection bit tidak diset, berarti diproteksi oleh CRC (frame header diikuti dengan 16 bit checksum yang diletakkan sebelum audio data) dan sebaliknya.

• Bitrate audio (dalam kbps) ditentukan dari tabel berikut ini:

Tabel 2.5. Deskripsi Bitrate Audio pada File MP3

Bitrate Value

MPEG-1, Layer I

MPEG-1, Layer II

MPEG-1, Layer III

MPEG-2, Layer I

MPEG-2, Layer I

MPEG-2, Layer I

0 0 0 0 Free Free Free Free Free Free

0 0 0 1 32 32 32 32 32 8

0 0 1 0 64 48 40 64 48 16

0 0 1 1 96 56 48 96 56 24

0 1 0 0 128 64 56 128 64 32

0 1 0 1 160 80 64 160 80 64

0 1 1 0 192 96 80 192 96 80

0 1 1 1 224 112 96 224 112 56

1 0 0 0 256 128 112 256 128 64

1 0 0 1 288 160 128 288 160 128

1 0 1 0 320 192 160 320 192 160

1 0 1 1 352 224 192 352 224 112

1 1 0 0 384 256 224 384 256 128

1 1 0 1 416 320 256 416 320 256

1 1 1 0 448 384 320 448 384 320

1 1 1 1 Bad Bad Bad Bad Bad Bad

“Free” berarti format bebas. Free bitrate harus konstan dan harus lebih kecil daripada bitrate maksimum yang diperbolehkan. Decoder tidak diperlukan untuk mendukung decoding free bitrate stream. “Bad” berarti nilai tersebut tidak diperbolehkan.

Untuk layer II, ada beberapa kombinasi bitrate dan mode yang tidak diperbolehkan. Berikut ini adalah daftar kombinasi yang diperbolehkan:

(4)

Tabel 2.6. Daftar Kombinasi Bitrate dan Mode

Bitrate Single Channel Stereo Intensity Stereo Dual Channel

Free Yes Yes Yes Yes

32 Yes No No No

48 Yes No No No

56 Yes No No No

64 Yes Yes Yes Yes

80 Yes No No No

96 Yes Yes Yes Yes

112 Yes Yes Yes Yes

128 Yes Yes Yes Yes

160 Yes Yes Yes Yes

192 Yes Yes Yes Yes

224 No Yes Yes Yes

256 No Yes Yes Yes

320 No Yes Yes Yes

384 No Yes Yes Yes

• Frequency field menjelaskan sample rate. Nilai ini tergantung pada standard MPEG yang digunakan berdasarkan tabel berikut ini:

Tabel 2.7. Deskripsi Frekuensi Frequency

value

MPEG-1 MPEG-2 0 0 44100 Hz 22050 Hz 0 1 48000 Hz 24000 Hz 1 0 32000 Hz 16000 Hz 1 1 Reserved Reserved

• Jika padding bit diset, berarti frame di-padding dengan extra slot dan sebaliknya. Padding digunakan untuk mencocokkan bitrate. Sebagai contoh:

128 kbps, 44.1 kHz layer II menggunakan banyak frame 418 byte dan beberapa frame 417 byte untuk memperoleh bitrate 128 k. Slot untuk layer I sebesar 32 bit, slot untuk layer II dan III sebesar 8 bit.

• Mode field digunakan untuk memberitahukan jenis stereo atau mono encoding yang digunakan.

(5)

Tabel 2.8. Deskripsi Mode

Nilai Mode Mode 0 0 Stereo 0 1 Joint stereo 1 0 Dual channel

1 1 Mono

• Mode extension (hanya digunakan pada joint stereo)

Mode extension digunakan untuk menggabungkan informasi yang tidak berguna bagi efek stereo, jadi mengurangi bit-bit yang diperlukan. Bit-bit ini ditentukan dengan sebuah encoder dalam mode joint stereo, dan joint stereo dapat diubah dari satu frame ke frame lainnya atau bahkan diset on atau off.

Daerah frekuensi file MPEG dibagi dalam 32 subband. Untuk layer I dan II, dua bit ini menentukan daerah frekuensi (band) di mana intensity stereo diterapkan. Untuk layer III, dua bit ini menentukan jenis joint stereo mana yang digunakan (intensity stereo atau m/s stereo). Daerah frekuensi ditentukan dengan decompression algoritm.

Tabel 2.9. Deskripsi Daerah Frekuensi

Layer I dan II Layer III

Nilai Layer I dan II Intensity Stereo MS stereo

00 Band 4-31 Off Off

01 Band 8-31 On Off

10 Band 12-31 Off On

11 Band 16-31 On On

Copyright bit, original home bit dan private bit tidak dibutuhkan dalam proses decoding. Jika copyright diset, berarti dilarang mengkopi isi file tersebut. Jika original home bit diset, berarti frame tersebut diletakkan pada media aslinya.

• Field terakhir adalah emphasis field. Ini digunakan untuk re-equalize suara setelah penghentian noise. Berikut ini merupakan model penghentian noise yang digunakan:

(6)

Tabel 2.10. Deskripsi Emphasis Field Emphasis value Emphasis method

0 0 Tidak ada

0 1 50/15ms

1 0 Reserved

1 1 CCITT j.17

Ukuran frame keseluruhan dapat dihitung dengan menggunakan formula sebagai berikut:

FrameSize = 144 * BitRate / SampleRate jika padding bit = 0

FrameSize = (144 * BitRate / SampleRate) + 1 jika padding bit = 1

Contoh:

Jika Bitrate = 128000, SampleRate = 44100 dan padding bit = 0, maka FrameSize

= 144 * 128000 / 44100 = 417.

2.3. Encoding

File MP3 merupakan singkatan dari MPEG-1 Layer 3. MPEG-1 sebenarnya memiliki 3 layer. Layer-layer ini menjelaskan bagaimana melakukan kompresi audio pada berbagai frekuensi sampling dan bit rate. Kompresi file WAV ke file MP3 melibatkan layer 3. Layer 3 dapat menggunakan frekuensi sampling pada 32, 44.1 dan 48 kHz sedangkan bitrate-nya mulai dari 8 kbps sampai 320 kbps.

2.3.1. Dua Macam Encoding3

Berdasarkan bitrate yang digunakan, encoding terbagi atas dua macam yaitu:

3 CBR/ABR/VBR: the 3 encoding modes (online) <http://lame.sourceforge.net/doc/html/

modes.html>

(7)

2.3.1.1. Constant Bitrate (CBR)

Ini merupakan encoding mode yang standard dan paling basic. Pada CBR, bitrate tetap sama untuk keseluruhan file. Ini berarti setiap bagian dari file MP3 akan menggunakan jumlah bit yang sama. Bagian yang kompleks akan memiliki kualitas yang lebih rendah dibandingkan bagian yang lebih sederhana.

Secara umum, semakin tinggi bitrate yang digunakan, semakin mendekati kualitas suara aslinya dan semakin besar ukuran file yang dihasilkan.

Keuntungan utama penggunaan CBR adalah ukuran file akhir tidak akan berubah dan dapat diprediksikan secara akurat.

2.3.1.2. Variable Bitrate (VBR)

Pada VBR, encoder akan menggunakan bitrate yang bervariasi pada keseluruhan file. Kita dapat mengatur maximum bitrate dan minimum bitrate untuk membatasi encoder agar menggunakan bitrate dalam batasan tersebut.

Setelah itu, kita dapat mengatur kualitas yang diinginkan. Kualitas yang bisa dipilih mulai skala 9 (kualitas rendah/kerusakan tinggi) sampai 0 (kualitas tinggi/kerusakan rendah). Kemudian encoder mencoba memelihara kualitasnya pada keseluruhan file dengan memilih jumlah bit yang optimal untuk setiap bagian musik tersebut. Keuntungan utama dengan mengatur kualitasnya adalah kita dapat menspesifikasikan tingkat kualitas yang ingin dicapai, tetapi kerugiannya adalah ukuran file yang dihasilkan tidak bisa diprediksikan.

Kita bisa juga menggunakan average bitrate (ABR), dimana encoder akan mengatur sebuah bitrate rata-rata selama menggunakan bitrate yang lebih tinggi untuk bagian-bagian musik yang membutuhkan beberapa bit tambahan.

Dengan penggunaan ABR, ukuran file dapat diprediksikan dan kualitas yang dihasilkan lebih tinggi daripada CBR encoding sehingga mode ini lebih direkomendasikan daripada CBR.

(8)

2.3.2. Algoritma Encoding

Kekuatan dari teknologi MP3 terletak pada kemampuannya mengompres audio dan tetap memiliki kualitas tinggi tapi ukuran yang jauh lebih kecil.

Encoding ini menggunakan Modified Discrete Cosine Transform (MDCT). Untuk mencapai ini perlu diterapkan algoritma4 sebagai berikut:

Gambar 2.2. Algoritma Encoding

2.3.3. Blok Diagram MP3

Gambar 2.3. Blok Diagram MP3

4 LUTH. (2001). MPEG-1 Audio Layer 3 – Encoding/Decoding (seminar report-SMD074)

<http://www.cdt.luth.se/~peppar/kurs/smd074/seminars/3/1/4/ report/encoding.htm>

(9)

2.3.3.1. Channel yang Mendukung5

MPEG-1 Audio Layer 3 dapat menerima beberapa sinyal channel yang berbeda, baik itu mono signals (track kiri dan kanan sama), dual signals (track kiri dan kanan merupakan dua mono track yang berbeda), normal stereo channels dan joint stereo. Dibandingkan dengan MPEG-2 Layer 3, MPEG-1 Layer 3 hanya dapat memproses channel kiri dan kanan secara maksimum.

2.3.3.2. Filter Bank6

Layer 3 menggunakan polyphase dan Modified Discrete Cosine Transform (MDCT) dalam filter bank-nya. Filter bank memecah-mecah time signal menjadi potongan-potongan kecil, panjangnya antara 64 dan 1024 sample.

Potongan-potongan itu kemudian dikalikan dan di-sample untuk mengurangi noise. MDTC tersebut bersifat unik untuk layer 3 karena dapat mengatasi jarak antara subsequent banks dengan berbagai cara.

2.3.3.3. Perceptual Model7

Inti dari prosedur MP3 adalah perceptual model, sekelompok aturan mengenai human earing sense untuk mengoptimalkan audio stream. Audio bitstream dasar mengandung banyak informasi yang dapat dibuang dan masih tidak menyimpang dari bunyi yang diterima.

Telinga manusia memiliki kapasitas yang terbatas dalam menerima bunyi pada frekuensi yang sangat rendah ataupun sangat tinggi. Ini berarti bunyi di atas dan di bawah range yang bisa didengar dapat dibuang. Batas frekuensi bunyi yang dapat didengar manusia adalah 20 Hz sampai 20 kHz.

Perceptual model menentukan kualitas implementasi encoder.

Perceptual model menggunakan filter bank yang terpisah atau mengkombinasikan kalkulasi nilai energi (untuk masking calculations) dan filter bank utama. Hasil dari perceptual model terdiri atas nilai-nilai untuk masking threshold atau noise yang diijinkan untuk setiap bagian coder. Jika quantization noise bisa

5 ibid 4

6 ibid 4

7 ibid 4

(10)

dipertahankan di bawah masking threshold, maka hasil kompresi tidak bisa dibedakan dari sinyal aslinya.

2.3.3.4. Joint Stereo8

Kedua channel dari pasangan stereo channel kurang lebih mengandung informasi yang sama. Ketidakrelevansian dan kelebihan stereophonic ini dieksplotasi untuk mengurangi total bitrate. Joint stereo digunakan pada saat bitrate rendah tersedia, tetapi yang diinginkan adalah sinyal stereo.

2.3.3.5. Quantization9

Quantization sinyal dilakukan oleh Power-Law-Quantiziser. Nilai-nilai yang tinggi akan di-quantizise lebih kasar dibandingkan nilai-nilai yang rendah.

Quantization juga menyebabkan error, suatu bentuk noise, yang harus diminimalkan. Ini bisa dilakukan dengan memberikan scalefactor pada setiap subband. Scalefactor adalah sebuah faktor yang menunjukkan berapa banyak kehadiran subband pada sinyal akhir. Setelah quantization, dilakukan Huffman coding yang mengubah informasi menjadi kode yang berguna. Huffman coding disebut noiseless coding karena tidak ada noise yang ditambahkan pada sinyal audio.

Proses menerapkan scalefactor dan pengurangan error dilakukan dengan dua buah iterasi loop dalam algoritma tersebut, yaitu:

• Inner iteration loop (rate loop)

Tabel kode Huffman menyerahkan kode yang pendek kepada quantized values yang lebih kecil. Jika jumlah bit hasil operasi coding melebihi jumlah bit yang tersedia untuk meng-coding satu blok data yang diberikan, hal ini bisa diperbaiki dengan menyesuaikan peningkatan global untuk menghasilkan tahap quantization yang lebih besar, melebihi quantized values yang lebih kecil. Operasi ini diulangi dengan tahap quantization dengan ukuran yang berbeda sampai hasil bit yang diminta untuk Huffman coding cukup kecil.

8 Fraunhofer. (1998). MPEG Audio Layer-3 (online) <http://www.iis.fraunhofer.de/amm/techinf/

layer3/index.html>

9 ibid 8

(11)

Loop ini disebut rate loop karena terjadi modifikasi pada keseluruhan coder rate sampai hasil yang diperoleh cukup kecil.

• Outer iteration loop (noise control/distortion loop)

Untuk menajamkan quantization noise menurut masking threshold, diterapkan scalefactors pada setiap scalefactor band. Sistem dimulai dengan faktor 1.0 untuk setiap band. Jika quantization noise pada band melampaui masking threshold (noise yang diijinkan) yang disediakan oleh perceptual model, scalefactor untuk band ini disesuaikan untuk mengurangi quantization noise.

Karena dibutuhkan sejumlah besar tahap-tahap quantization dan bitrate yang lebih besar untuk mencapai quantization noise yang lebih kecil, rate adjustment loop harus diulangi setiap kali scalefactor yang baru digunakan.

Dengan kata lain, rate loop bersarang dalam noise control loop. Noise control loop dieksekusi sampai actual noise (pengurangan nilai-nilai original spectral dengan nilai-nilai quantized spectral) lebih kecil daripada masking threshold untuk setiap scalefactor band (contoh: critical band).

2.3.4. Kualitas Suara10

Ketika bunyi dikompres, ada sebagian informasi yang hilang dan menyebabkan penurunan kualitas. Penurunan kualitas ini kadang tidak kentara karena beberapa alasan, seperti telinga manusia tidak dapat mendengar bunyi pada frekuensi tertentu dan dapat juga disebabkan sound-system yang digunakan tidak cukup bagus.

Salah satu penentu dalam kualitas bunyi adalah encoder. Perbedaan encoder yang digunakan menghasilkan kualitas yang berbeda. Ada beberapa perbedaan umum pada encoder-encoder, yaitu:

• Bandwidth

Beberapa encoder cocok untuk sinyal dengan bandwidth yang rendah sedangkan yang lainnya membatasi penggunaan bandwidth tertentu.

• Jenis sinyal

(12)

Encoder tertentu bagus untuk speech signals tetapi pada saat yang sama tidak bagus untuk beberapa jenis musik.

• Fast encoding

Dua encoder dapat menghasilkan kualitas yang sama tetapi salah satunya mungkin lebih cepat.

• Kompresi

Ini merupakan hal yang sangat penting bagi mereka yang ingin menghasilkan sinyal kompres yang tinggi tetapi juga memiliki kualitas yang masih bisa diterima.

2.4. File Indeks dan ID3 Tag

File indeks merupakan file yang menampung informasi tambahan dari sebuah file. Indeks berguna untuk memberikan tanda khusus pada bagian tertentu dari file sehingga bisa dikenali. Informasi yang diberikan mengenai indeks tersebut akan ditampung pada file indeks.

ID3 adalah sepotong informasi yang tersimpan secara fisik dalam file MP3 (pada awal atau akhir dari file, tergantung versi ID3). Informasi yang terkandung dalam ID3 disebut ID3 tag. ID3 tag mengandung berbagai macam informasi mengenai MP3, seperti nama album, judul lagu, artis, pengarang lagu, jenis kelamin, tahun lagu tersebut dirilis, field tambahan untuk memberi komentar, dan lain-lain. Sekarang ini, ID3 merupakan standard dalam dunia audio dan bisa ditambahkan pada kebanyakan format audio dengan tujuan untuk memberikan informasi tambahan mengenai file tersebut.

10 LUTH. (2001). MPEG-1 Audio Layer 3 – Quality (seminar report - SMD074)

(13)

2.4.1. ID3v111

Gambar 2.4. Internal Layout ID3v1 Tag

ID3 tag standard berupa teks berukuran 128 byte yang dibagi menjadi 6 field. Tag ini memiliki layout sebagai:

Tabel 2.11. Struktur Field pada ID3v1 Tag Song title 30 karakter

Artist 30 karakter Album 30 karakter

Year 4 karakter

Comment 30 karakter

Genre 1 byte

Jika kita menjumlahkan ukuran dari semua field di atas, hanya diperoleh 125 byte, bukan 128 byte. Tiga byte yang hilang ini berupa ‘TAG’, bisa ditemukan pada akhir tag, sebelum judul lagu, yang merupakan identifikasi bahwa

<http://www.cdt.luth.se/~peppar/kurs/smd074/seminars/3/1/4/report/quality.htm>

11 Nilsson, M. (2000). ID3 made easy (online) <http://www.id3.org/id3v1.html>

(14)

itu adalah sebuah ID3 tag. Cara termudah untuk menemukan ID3v1/1.1 tag adalah dengan mencari kata ‘TAG’ pada akhir dari file.

2.4.2. ID3v2.4

Gambar 2.5. Contoh Internal Layout ID3v2 Tag

ID3v2.4 merupakan versi terbaru dari ID3v2 tag. ID3v2 merupakan sistem tag baru yang mengijinkan kita menaruh informasi tambahan dan relevan mengenai file audio di dalamnya12. ID3v2 tag memiliki satu atau lebih potongan kecil informasi yang disebut frame. Frame ini dapat mengandung segala jenis informasi dan data seperti judul lagu, album, performer, website, lirik, equalizer presets, gambar, dan lain-lain. Pada awal dari setiap frame terdapat identifier yang unik, sebuah deskripsi ukuran yang mengijinkan software melompati frame yang tidak dikenal dan sebuah flags field.

ID3v2 sifatnya lebih fleksibel dan bisa diperluas karena tidak ada lagi batasan ukuran, dengan kemampuan untuk menambahkan data teks lebih banyak lagi, image dan informasi lain yang berguna yang kita inginkan. Sangat mudah

12 Nilsson, M. (2000). ID3v2 made easy (online) <http://www.id3.org/easy.html>

(15)

untuk menambahkan fungsi baru pada ID3v2 tag, seperti dalam HTML, karena semua parser akan mengabaikan semua informasi yang tidak dikenalinya. Karena setiap frame berukuran 16 MB dan keseluruhan tag berukuran 256 MB, kita tidak akan lagi mengalami kesulitan jika kita hendak memberi komentar berguna seperti pada ID3v1 yang terbatas 30 karakter.

Bit order pada ID3v213 adalah Most Significant Bit first (MSB). Byte order dalam angka multibyte menggunakan MSB (contohnya 12345678h akan di- encode 12h 34h 56h 78h), juga dikenal sebagai big endian dan network byte order. Struktur tag secara keseluruhan:

Tabel 2.12. Struktur ID3v2 Tag Header (10 byte)

Extended Header (variable length, OPTIONAL)

Frames (variable length) Padding

(variable length, OPTIONAL) Footer (10 byte, OPTIONAL)

2.4.2.1. ID3v2 Header14

Bagian pertama dari ID3v2 tag adalah header yang berukuran 10 byte, dengan perincian sebagai berikut:

ID3v2/file identifier “ID3”

ID3v2 version 04h 00h ID3v2 flags %abcd0000 ID3v2 size 4 * %0xxxxxxx

Tiga byte pertama selalu “ID3”, untuk menunjukkan bahwa ini adalah ID3v2 tag. Kemudian diikuti oleh versi sebanyak 2 byte. Byte pertama adalah

13 Nilsson, M. (2000). ID3v2.4.0 main structure (plain text document) <http://www.id3.org/

develop.html>

14 ibid 13

(16)

versi utama, sedangkan byte kedua adalah nomor revisinya. Pada kasus ini, ini adalah ID3v2.4.0. Versi kemudian diikuti oleh ID3v2 flags field, hanya 4 flag yang digunakan:

a - Unsynchronisation

Bit 7 dalam ID3v2 flags menunjukkan apakah unsynchronisation diterapkan pada semua frame atau tidak. Jika ini diset, berarti ada penggunaan unsynchronisation.

b - Extended header

Bit 6 menunjukkan apakah header diikuti oleh extended header. Jika ini diset, berarti terdapat extended header.

c - Experimental indicator

Bit 5 digunakan sebagai experimental indicator. Flag ini harus selalu diset jika tag tersebut merupakan tahap percobaan.

d - Footer present

Bit 4 menunjukkan bahwa ada tidaknya footer pada akhir tag. Jika ini diset, berarti terdapat footer.

Semua flag lainnya harus bernilai 0.

Ukuran ID3v2 tag disimpan sebagai 32 bit synchsafe integer. Synchsafe integers merupakan integer yang bit tertingginya (bit 7) bernilai 0. Jadi 32 bit synchsafe integer dapat menyimpan 28 bit informasi (maksimal 256 MB). Alasan menggunakan synchsafe integer adalah karena pada beberapa bagian dari tag, tidak nyaman untuk menggunakan skema unsynchronisation karena ukuran dari unsynchronised data tidak diketahui pada mulanya, yang merupakan masalah dengan size descriptors. Oleh karena itu, digunakan synchsafe integers, dimana tidak akan pernah ditemukan false synchs. Contoh: 255 (%11111111) di-encode sebagai 16 bit synchsafe integer menjadi 383 (%00000001 01111111).

Ukuran ID3v2 tag adalah jumlah dari panjang extended header, padding dan frame setelah unsynchronisation. Jika terdapat footer, ukurannya adalah ‘total size’ - 20 byte. Jika tidak ada footer, ukurannya adalah ‘total size’ - 10 byte.

Sebuah ID3v2 tag dapat dideteksi dengan pola sebagai berikut:

49h 44h 33h YYh YYh XXh ZZh ZZh ZZh ZZh

Dimana YY kurang dari FFh, XX merupakan flags byte dan ZZ kurang dari 80h.

(17)

2.4.2.2. Extended Header15

Extended header mengandung informasi yang dapat menyediakan wawasan yang lebih jauh dalam struktur tag, tapi ini tidak vital bagi parsing yang benar terhadap informasi tag, karena itu extended header bersifat optional.

Extended header size 4 * %0xxxxxxx Number of flag bytes 01h

Extended Flags XXh

Dimana ‘Extended header size’ adalah ukuran keseluruhan extended header, disimpan sebagai 32 bit synchsafe integer. Sebuah extended header memiliki ukuran minimal 6 byte.

Extended flags field, dengan ukurannya dijelaskan oleh ‘number of flag bytes’, didefinisikan sebagai:

%0bcd0000

Setiap flag yang diset dalam extended header memiliki attached data. Flag yang tidak diset, tidak memiliki attached data. Semua flag yang tidak diketahui harus bernilai 0 dan datanya dibuang jika tag dimodifikasi.

Setiap data flag dimulai dengan panjang byte yang mengandung nilai antara 0-128 (00h - 7fh), diikuti oleh datanya. Jika sebuah flag tidak memiliki attached data, panjang byte diberi nilai 00h.

b - Tag adalah hasil update

Jika flag ini diset, tag tersebut merupakan hasil update dari tag yang ditemukan sebelumnya. Flag ini tidak memiliki data.

Flag data length 00h c - Ada tidaknya data CRC

Jika flag ini diset, berarti terdapat data CRC-32 [ISO-3309] dalam extended header. CRC dihitung pada semua data antara header dan footer yang diindikasikan oleh length field dari header tersebut, dikurangi extended header.

15 ibid 13

(18)

Perhatikan bahwa ini termasuk padding (jika ada), tetapi tidak termasuk footer.

CRC-32 disimpan sebagai 35 bit synchsafe integer.

Flag data length 05h

Total frame CRC 5 * %0xxxxxxx d - Batasan tag

Jika flag ini diset, tag dibatasi sebagai berikut:

Flag data length 01h Restrictions %ppqrrstt p - Batasan ukuran tag

00 Maksimal 128 frame dan total ukuran tag 1 MB 01 Maksimal 64 frame dan total ukuran tag 128 KB 10 Maksimal 32 frame dan total ukuran tag 40 KB 11 Maksimal 32 frame dan total ukuran tag 4 KB q - Batasan text encoding

0 Tidak ada batasan

1 String hanya di-encode dengan ISO-8859-1 [ISO-8859-1] atau UTF-8 [UTF-8].

r - Batasan ukuran text field 00 Tidak ada batasan 01 Maksimal 1024 karakter 10 Maksimal 128 karakter

11 Maksimal 30 karakter s - Batasan image encoding

0 Tidak ada batasan

1 Image di-encode dengan PNG [PNG] atau JPEG [JFIF].

t - Batasan ukuran image 00 Tidak ada batasan

01 Semua image berukuran 256x256 pixel atau lebih kecil 10 Semua image berukuran 64x64 pixel or lebih kecil

11 Semua image berukuran tepat 64x64 pixel, kecuali dibutuhkan sebaliknya

(19)

2.4.2.3. Padding16

Padding diletakkan setelah frame akhir (pada akhir ID3 tag). Padding bersifat optional. Padding membuat ukuran dari keseluruhan frame menjadi lebih kecil daripada yang disebutkan pada tag header. Tujuan dari padding adalah untuk membantu penambahan beberapa frame tambahan atau memperbesar frame yang sudah ada dalam tag tanpa harus me-rewrite keseluruhan file. Nilai dari padding bytes harus 00h. Sebuah tag tidak memiliki padding antar frame atau antara header dan frame. Lebih jauh lagi, jika footer ditambahkan pada tag, tidak perlu ada padding.

2.4.2.4. ID3v2 Footer17

Untuk mempercepat proses penempatan ID3v2 tag saat mencari dari akhir file, sebuah footer dapat ditambahkan pada tag. Footer perlu ditambahkan pada appended tag, contohnya tag yang diletakkan setelah semua data audio.

Footer merupakan kopi dari header, tetapi memiliki identifier yang berbeda.

ID3v2 identifier “3DI”

ID3v2 version 04h 00h ID3v2 flags %abcd0000 ID3v2 size 4 * %0xxxxxxx

2.4.2.5. Frame

Semua frame ID3v218 terdiri atas sebuah frame header diikuti dengan satu atau lebih field yang mengandung informasi aktual. Header selalu berukuran 10 byte dengan format sebagai berikut:

Frame ID XXh XXh XXh XXh (4 karakter)

Size 4 * %0xxxxxxx

Flags XXh XXh

Frame ID terdiri dari karakter kapital A-Z dan 0-9. Identifier yang diawali dengan “X”, “Y” dan “Z” merupakan frame eksperimen dan bebas bagi

16 ibid 13

17 ibid 13

18 ibid 13

(20)

setiap orang untuk menggunakannya, tanpa harus mengeset experimental bit pada tag header. Semua identifier yang lain telah digunakan atau dipesan untuk penggunaan berikutnya.

Frame ID diikuti dengan size yang mengandung ukuran data setelah frame header, setelah mengalami encryption, compression dan unsynchronisation.

Ukuran ini tidak termasuk frame header dan disimpan sebagai 32 bit synchsafe integer.

Setelah itu, size diikuti oleh 2 byte flag. Semua flag yang tidak digunakan harus clear. Byte pertama untuk status message dan byte kedua adalah format description. Jika sebuah flag yang tidak diketahui diset pada byte pertama, frame tersebut tidak boleh diubah jika bit tersebut tidak di-clear. Jika sebuah flag yang tidak diketahui diset pada byte kedua, frame tersebut mungkin tidak dapat dibaca.

Beberapa flag dalam byte kedua mengindikasikan bahwa informasi ekstra ditambahkan pada header. Field-field informasi ekstra ini di-order sesuai flag yang mengindikasikan mereka. Field flag tersebut didefinisikan sebagai berikut:

%0abc0000 %0h00kmnp

Beberapa frame format flag mengindikasikan bahwa field informasi tambahan ditambahkan pada frame. Informasi ini ditambahkan setelah frame header dan sebelum frame data dalam order yang sama seperti flag-flag yang mengindikasikan mereka. Sebagai contoh, 4 byte untuk decompressed size akan mendahului enryption method byte. Penambahan ini mempengaruhi field ‘frame size’, tetapi bukan merupakan subjek bagi encryption atau compression.

Setting status flag yang default untuk sebuah frame adalah di-preserve (dipertahankan) jika tag ditambahkan dan di-preserve jika file ditambahkan, contohnya %00000000.

• Frame status flags

a – Tag alter preservation

Flag ini memberitahukan tag parser apa yang harus dilakukan terhadap frame ini jika flag ini tidak diketahui dan tag ditambahkan. Ini diterapkan pada semua jenis penambahan, termasuk menambah beberapa padding dan meng- order kembali frame-frame tersebut.

0 Frame harus di-preserve (dipertahankan)

(21)

1 Frame harus di-discard (dibuang) b – File alter preservation

Flag ini memberitahukan tag parser apa yang harus dilakukan terhadap frame ini jika flag ini tidak diketahui dan file, tidak termasuk tag, ditambahkan. Ini tidak diterapkan jika audio sepenuhnya digantikan oleh data audio yang lain.

0 Frame harus di-preserve (dipertahankan) 1 Frame harus di-discard (dibuang)

c – Read only

Flag ini, jika diset, memberitahukan software bahwa isi dari frame ini bersifat read only. Jika dilakukan perubahan pada isinya, akan merusak sesuatu, seperti signature. Jika isinya berubah, tanpa mengetahui mengapa frame tersebut di-flag read only dan tanpa memberi kompensasi, contohnya recalculating signature, bit tersebut harus di-clear.

• Frame format flags h – Grouping identity

Flag ini mengindikasikan apakah frame ini milik sebuah group dengan frame lainnya atau tidak. Jika flag ini diset, group identifier byte ditambahkan pada frame. Setiap frame dengan group identifier yang sama adalah milik group yang sama.

0 Frame tidak mengandung informasi group 1 Frame mengandung informasi group k – Compression

Flag ini mengindikasikan apakah frame ini dikompres atau tidak. Sebuah byte

‘Data Length Indicator’ harus dimasukkan dalam frame.

0 Frame tidak dikompres

1 Frame dikompres menggunakan zlib [zlib] deflate method. Jika diset, bit

‘Data Length Indicator’ perlu diset dengan baik.

m – Encryption

Flag ini mengindikasikan apakah frame tersebut di-encrypt atau tidak. Jika diset, satu byte yang mengindikasikan metode encryption mana yang digunakan, akan ditambahkan pada frame tersebut. Encryption harus

(22)

dilakukan setelah compression. Setting flag ini memerlukan ’Data Length Indicator’ atau tidak, tergantung pada algoritma yang digunakan.

0 Frame tidak di-encrypt 1 Frame di-encrypt n – Unsynchronisation

Flag ini mengindikasikan apakah unsynchronisation diterapkan pada frame ini atau tidak. Jika flag ini diset, semua data dari akhir header ini sampai akhir frame ini telah di- unsynchronise.

0 Frame tidak di-unsynchronise 1 Frame telah di-unsynchronise p – Data length indicator

Flag ini mengindikasikan bahwa sebuah data length indicator telah ditambahkan pada frame tersebut. Data length indicator adalah nilai yang di- write sebagai panjang frame jika semua frame format flag bernilai 0, direpresentasikan sebagai 32 bit synchsafe integer.

0 Tidak ada data length indicator

1 Sebuah data length indicator telah ditambahkan pada frame

Tidak ada ketentuan urutan munculnya frame dalam sebuah tag. Sebuah tag harus mengandung minimal satu frame. Sebuah data frame harus berukuran minimal 1 byte.

Jika tidak disebutkan jenis encoding yang digunakan, berarti string, termasuk numeric string dan URL direpresentasikan sebagai karakter ISO-8859-1 dalam range 20h - FFh. String seperti ini direpresentasikan dalam frame sebagai

<text string> atau <full text string> jika newline (baris baru) diperbolehkan. Jika tidak disebutkan, karakter newline dilarang. Dalam ISO-8859-1, karakter newline direpresentasikan dengan 0Ah.

Frame yang mengijinkan jenis text encoding yang berbeda mengandung text encoding description byte. Beberapa jenis encoding:

00h ISO-8859-1 [ISO-8859-1]. Diakhiri dengan 00h.

01h UTF-16 [UTF-16] encoded Unicode [UNICODE] dengan BOM. Semua string dalam frame yang sama harus memiliki byteorder yang sama.

Diakhiri dengan 00h 00h.

(23)

02h UTF-16BE [UTF-16] encoded Unicode [UNICODE] tanpa BOM. Diakhiri dengan 00h 00h.

03h UTF-8 [UTF-8] encoded Unicode [UNICODE]. Diakhiri dengan 00h.

Berikut ini akan dijelaskan beberapa frame19 yang sering dipakai dalam ID3v2.4:

• Unique File Identifier (UFID)

Frame ini digunakan untuk mengidentifikasikan file audio dalam sebuah database, yang menyediakan informasi yang berkaitan dengan isinya. Frame UFID diawali dengan field ‘owner identifier’, berupa null-terminated string dengan sebuah URL mengandung alamat email atau link ke lokasi di mana alamat email bisa ditemukan, yang dimiliki oleh organisasi yang bertanggung jawab atas implementasi database ini. URL tidak dapat digunakan untuk database queries. Field ‘owner identifier’ tidak boleh kosong dan kemudian diikuti oleh ‘actual identifier’ yang berukuran maksimal 64 byte. Dalam sebuah tag, bisa terdapat lebih dari satu frame UFID, tetapi ‘owner identifier’

harus berbeda.

<Header untuk UFID, ID: “UFID”>

Owner identifier <text string> 00h

Identifier <data binary maksimal 64 byte>

• Text Information Frames

Frame ini merupakan frame penting, mengandung informasi seperti artis, album dan lain-lain. Dalam sebuah tag, hanya boleh ada satu jenis text information frame. Semua frame ini mendukung multiple strings, disimpan sebagai null separated list, dimana null direpresentasikan oleh termination code untuk karakter encoding. Semua text frame identifier diawali dengan

“T”. Hanya text frame identifier yang diawali dengan “T”, kecuali frame

“TXXX”. Semua text information frame memiliki format berikut ini:

19 Nilsson, M. (2000). ID3v2.4.0 native frames (plain text document) <http://

www.id3.org/develop.html>

(24)

<Header untuk ‘Text information frame’, ID: “T000” – “TZZZ”, kecuali

“TXXX”>

Text encoding XXh

Information <text string(s) menurut encoding>

Berikut ini akan dijelaskan sebagian text information frame:

§ Identification Frames

- TIT1 (Content group description)

Frame ini digunakan jika lagu termasuk dalam kategori musik yang lebih besar. Contohnya, musik klasik sering dipilah dalam bagian musik yang berbeda (misalnya: “Piano Concerto”, “Weather – Hurricane”)

- TIT2 (Title/Songname/Content Description)

Merupakan nama sesungguhnya (contoh: “Adagio”, “Hurricane Donna”)

- TIT3 (Subtitle/Description Refinement)

Frame ini digunakan untuk informasi yang langsung berhubungan dengan isi lagu (contoh: “Op. 16” atau “Performed live at Wembley”).

- TALB (Album/Movie/Show Title)

Frame ini ditujukan untuk judul rekaman (atau sumber suara) dari mana audio pada file tersebut diambil.

- TOAL (Original Album/Movie/Show Title)

Frame ini dimaksudkan untuk judul dari rekaman asli (atau sumber suara), jika misalnya musik dalam file tersebut merupakan sebuah cover dari lagu yang dirilis sebelumnya.

- TRCK (Track Number/Position in Set)

Merupakan string numerik yang mengandung nomor urut dari file audio pada rekaman aslinya. Nomor urut ini dapat diikuti dengan karakter “/” dan sebuah string numerik yang mengandung jumlah total track atau elemen pada rekaman aslinya. Contohnya: “4/9”.

- TPOS (Part of a Set)

Merupakan string numerik yang menjelaskan bagian mana dari sebuah set, audio tersebut berasal. Frame ini digunakan jika sumber yang

(25)

dijelaskan dalam frame “TALB” dibagi menjadi beberapa medium, contohnya double CD. Nilainya dapat diikuti dengan karakter “/” dan sebuah string numerik yang mengandung jumlah total bagian dalam set tersebut. Contohnya: “1/2”.

- TSST (Set Subtitle)

Frame ini dimaksudkan untuk subtitle bagian dari sebuah set dari mana track ini berasal.

- TSRC

Frame ini harus mengandung International Standard Recording Code [ISRC] (12 karakter).

§ Involved Person Frames

- TPE1 (Lead Artist/Lead Performer/Soloist/Performing Group) Frame ini digunakan untuk artis utama.

- TPE2 (Band/Orchestra/Accompaniment)

Frame ini digunakan untuk informasi tambahan tentang performer dalam rekaman tersebut.

- TPE3 (Conductor)

Frame ini digunakan untuk nama dari konduktornya.

- TPE4 (Interpreted, Remixed, or Otherwise Modified by)

Frame ini mengandung informasi mengenai orang-orang di balik interpretasi remix dan semacamnya dari piece lain yang ada.

- TOPE (Original Artist/Performer)

Frame ini dimaksudkan untuk performer dari rekaman aslinya, jika misalnya musik dalam file tersebut merupakan cover dari sebuah lagu yang dirilis sebelumnya.

- TEXT (Lyricist/Text Writer)

Frame ini dimaksudkan untuk penulis teks atau lirik dalam rekaman tersebut.

- TOLY (Original Lyricist/Text Writer)

Frame ini dimaksudkan untuk penulis teks dari rekaman asli, jika misalnya musik dalam file tersebut merupakan cover dari sebuah lagu yang dirilis sebelumnya.

(26)

- TCOM (Composer)

Frame ini dimaksudkan untuk nama komposer.

- TMCL (Musician Credits List)

Frame ini dimaksudkan sebagai sebuah mapping antara alat-alat musik dan musisi yang memainkannya. Setiap field ganjil merupakan sebuah alat musik dan setiap field genap merupakan seorang artis atau sebuah daftar artis.

- TIPL (Involved People List)

Frame ini mirip dengan musician credits list, tetapi pemetaan antara fungsi-fungsi, seperti produser dan nama-nama.

- TENC (Encoded by)

Frame ini berisi nama orang atau organisasi yang meng-encode file audio tersebut. Field ini bisa mengandung sebuah pesan copyright, jika file audio tersebut di-copyright oleh encoder tersebut.

§ Rights and License Frames - TCOP (Copyright message)

Frame ini dimaksudkan untuk copyright holder dari suara asli, bukan file audio itu sendiri. Frame ini berupa string diawali dengan sebuah tahun dan sebuah karakter spasi (membentuk 5 karakter). Keberadaan frame ini hanya berarti informasi copyright itu tidak tersedia atau telah dihapus, dan tidak boleh diinterpretasikan ke alat dimana audio tersebut merupakan public domain. Setiap kali field ini ditampilkan, field tersebut harus didahului oleh “Copyright “ © ” “.

- TPRO (Produced Notice)

Frame ini dimaksudkan untuk production copyright holder dari suara asli, bukan file audio itu sendiri. Frame ini berupa string diawali dengan sebuah tahun dan sebuah karakter spasi (membentuk 5 karakter). Keberadaan frame ini hanya berarti informasi production copyright itu tidak tersedia atau telah dihapus, dan tidak boleh diinterpretasikan ke alat dimana audio tersebut merupakan public domain. Setiap kali field ini ditampilkan, field tersebut harus didahului

(27)

oleh “Produced “ (P) ” “, dimana (P) merupakan satu karakter yang menunjukkan huruf P dalam sebuah lingkaran.

- TPUB (Publisher)

Frame ini mengandung nama dari label atau publisher.

- TOWN (File Owner/Licensee)

Frame ini mengandung nama dari pemilik atau licensee dari file tersebut dan isinya.

- TRSN (Internet Radio Station Name)

Frame ini mengandung nama stasiun radio internet dari mana audio tersebut di-stream.

- TRSO (Internet Radio Station Owner)

Frame ini mengandung nama pemilik stasiun radio internet dari mana audio tersebut di-stream.

§ User Defined Text Information Frame

Frame ini dimaksudkan untuk informasi teks satu string mengenai file audio dengan cara yang mirip dengan frame “T” lainnya. Tubuh frame terdiri atas deskripsi string, direpresentasikan sebagai terminated string, diikuti oleh actual string. Pada setiap tag bisa terdapat lebih dari satu frame “TXXX”, tetapi tidak bisa memiliki deskripsi yang sama.

<Header untuk ‘User defined text information frame’, ID: “TXXX”>

Text encoding XXh

Description <text string menurut encoding> 00h (00h) Value <text string menurut encoding>

• URL Link Frame

Dengan frame ini, data dinamik seperti webpage dengan informasi tur, informasi harga atau berita-berita biasa dapat ditambahkan pada tag. Dalam sebuah tag, hanya boleh ada satu URL link frame untuk setiap jenisnya, kecuali jika disebutkan dalam deskripsi frame. Jika text string diikuti oleh sebuah string termination, semua informasi yang mengikutinya harus diabaikan dan tidak ditampilkan. Semua identifier URL link frame diawali dengan “W”. Hanya identifier URL link frame yang diawali dengan “W”, kecuali “WXXX”. Semua URL link frame memiliki format sebagai berikut:

(28)

<Header ‘URL link frame’, ID: “W000” – “WZZZ”, kecuali “WXXX” >

URL <text string>

§ URL Link Frames – Detail

- WCOM (Commercial Information)

Frame ini merupakan URL pointing pada sebuah webpage dengan informasi seperti di mana album tersebut dapat dibeli. Dalam sebuah tag, bisa terdapat lebih dari satu frame “WCOM”, tetapi tidak memiliki isi yang sama.

- WCOP (Copyright/Legal Information)

Frame ini merupakan URL pointing pada sebuah webpage dengan informasi seperti di mana syarat-syarat penggunaan dan kepemilikan file dijelaskan.

- WOAF (Official Audio File Website)

Frame ini merupakan URL pointing pada sebuah file specific webpage.

- WOAR (Official Artist/Performer Webpage)

Frame ini merupakan URL pointing pada artists official webpage.

Dalam sebuah tag bisa terdapat lebih dari satu frame “WOAR” jika audio mengandung lebih dari satu performer, tetapi tidak memiliki isi yang sama.

- WOAS (Official Audio Source Webpage)

Frame ini merupakan URL pointing pada official webpage untuk sumber dari file audio, seperti sebuah film.

- WORS (Official Internet Radio Station Homepage)

Frame ini mengandung sebuah URL pointing pada homepage stasiun radio internet.

- WPAY (Payment)

Frame ini merupakan URL pointing pada sebuah webpage yang menangani proses pembayaran dari file ini.

- WPUB (Publishers Official Webpage)

Frame ini merupakan URL pointing pada official webpage untuk publisher.

(29)

§ User Defined URL Link Frame

Frame ini dimaksudkan untuk link URL mengenai file audio dengan cara yang mirip dengan frame “W” lainnya. Tubuh frame terdiri atas deskripsi string, direpresentasikan sebagai terminated string, diikuti oleh URL yang sebenarnya. URL selalu di-encode dengan ISO-8859-1. Dalam setiap tag bisa terdapat lebih dari satu frame “WXXX”, tetapi tidak boleh memiliki deskripsi yang sama.

<Header untuk ‘User defined URL link frame’, ID: “WXXX”>

Text encoding XXh

Description <text string according to encoding> 00h (00h) URL <text string>

• Comments

Frame ini dimaksudkan untuk semua jenis full text information yang tidak sesuai untuk semua frame lainnya. Frame ini terdiri atas sebuah header diikuti oleh encoding, bahasa dan content descriptors dan diakhiri dengan actual comment dalam bentuk text string. Karakter newline diperbolehkan dalam comment text string. Dalam sebuah tag boleh terdapat lebih dari satu frame

“COMM”, tetapi tidak boleh memiliki bahasa dan content descriptor yang sama.

<Header untuk ‘Comment’, ID: “COMM”>

Text encoding XXh

Bahasa XXh XXh XXh

Short content descrip. <text string menurut encoding> 00h (00h) The actual text <full text string menurut encoding>

• Seek frame

SEEK frame merupakan feature tambahan yang terdapat pada ID3v2.4 tag yang tidak ditemukan pada ID3v2.3 tag. Frame ini mengindikasikan di mana tag lainnya dalam sebuah file/stream dapat ditemukan. Nilai offset minimum ke tag berikutnya dihitung dari akhir tag ini sampai awal tag berikutnya.

Dalam sebuah tag hanya boleh ada satu frame “SEEK”.

<Header untuk ‘Seek frame’, ID: “SEEK”>

Offset minimum ke tag berikutnya XXh XXh XXh XXh

(30)

2.4.2.6. Lokasi Tag20

Lokasi default ID3v2 tag adalah sebelum data audio (prepend) sehingga player dapat mengambil keuntungan dari informasi tersebut jika data di-stream.

Pada ID3v2.4 terdapat 3 macam kombinasi penempatan ID3v2 tag, yaitu:

• Tag diletakkan sebelum data audio (prepend).

• Sebuah tag dengan semua informasi vital diletakkan sebelum data audio (prepend) dan tambahkan tag kedua pada akhir file (append), sebelum tag dari sistem tagging yang lain. Tag pertama harus memiliki frame SEEK.

• Tambahkan tag pada akhir file (append), sebelum tag dari sistem tagging yang lain.

Dalam kasus kedua dan ketiga, tag dapat dengan mudah ditambahkan setelah data audio jika tidak ada tag lain. Metode untuk menemukan ID3v2 tag adalah:

• Cari tag yang ditaruh sebelum data audio sesuai format ID3v2 header.

• Jika frame SEEK ditemukan, gunakan nilainya untuk melakukan searching selanjutnya.

• Cari tag footer, telusuri dari akhir file.

Untuk setiap tag baru yang ditemukan, tag yang lama harus dibuang kecuali update flag pada extended header diset.

2.5. LAME Encoder

LAME encoder merupakan back-end dari encoder yang digunakan pada software ini sehingga perlu diketahui aturan command line. Command line21 keseluruhan diawali dengan ‘lame’ diikuti oleh command line parameternya.

Setelah menuliskan command line dari parameternya, dilanjutkan dengan nama file WAV yang akan di-encode lengkap dengan path-nya kemudian nama file MP3 lengkap dengan path-nya. Berikut ini akan dijelaskan command line untuk setiap parameter-nya dalam LAME encoder.

20 ibid 13

21 Full command line switch reference (online) <http://lame.sourceforge.net/doc/html/

switchs.html>

(31)

• Bitrate

Untuk MPEG1 (sampling frequencies 32, 44.1 dan 48 kHz):

nilai_bitrate = 32,40,48,56,64,80,96,112,128,160,192,224,256,320.

Untuk MPEG2 (sampling frequencies 16, 22.05 dan 24 kHz):

nilai_bitrate = 8,16,24,32,40,48,56,64,80,96,112,128,144,160.

Default adalah 128 kbit untuk MPEG1 dan 64 kbit untuk MPEG2.

Jika digunakan VBR, -b berarti bitrate minimum yang digunakan.

Semakin besar bitrate yang digunakan, semakin bagus kualitas suara yang dihasilkan dan semakin besar pula ukuran file yang dihasilkan. Demikian pula sebaliknya.

Command line: -b nilai_bitrate Contoh: -b 128

• Mode

Mode digunakan untuk memilih jenis stereo atau mono encoding yang digunakan.

Tabel 2.13. Daftar Mode dan Nilainya

Mode Nilai_Mode

Stereo S

Joint Stereo J Forced Joint Stereo F

Mono M

Joint stereo merupakan mode default untuk file stereo dengan VBR jika –V (nilai VBR quality) lebih dari 4 atau fixed bitrates 160 kbit atau kurang. Pada fixed bitrates yang lebih tinggi atau VBR settings yang lebih tinggi, default- nya adalah stereo.

§ stereo

Pada mode ini, tidak ada penggunaan potentially existing correlations antara 2 input channels. Permintaan bit antara kedua channel bisa dinegosiasikan, contohnya dengan memberikan satu channel lebih banyak bit jika channel yang lain mengandung silence atau membutuhkan lebih sedikit bit disebabkan lower complexity.

(32)

§ joint stereo

Pada mode ini, digunakan sebuah korelasi antara kedua channel. Sinyal tersebut akan dimatrikskan menjadi sum ("mid"), dikomputasikan oleh L+R, dan perbedaan ("side") sinyal, dikomputasikan oleh L-R, dan lebih banyak bit yang dialokasikan ke mid channel.

Secara efektif, ini akan meningkatkan bandwidth jika sinyal tersebut tidak memiliki terlalu banyak stereo separation, sehingga memberikan keuntungan yang signifikan dalam kualitas encoding.

Penggunaan mid/side stereo yang tidak sesuai dapat menghasilkan audible compression artifacts. Terlalu banyak switching antara mid/side dan regular stereo dapat menyebabkan suara yang terdengar jelek. Untuk menentukan kapan harus meng-switch ke mid/side stereo, LAME menggunakan algoritma yang jauh lebih sophisticated daripada yang dijelaskan dalam dokumentasi ISO, dan aman digunakan dalam mode joint stereo.

§ forced joint stereo

Mode ini akan memaksa MS joint stereo pada semua frame. Ini agak lebih cepat daripada joint stereo, tetapi ini hanya bisa digunakan jika setiap frame dari input file memiliki sangat sedikit stereo separation.

§ mono

Inputan akan di-encode sebagai sebuah sinyal mono. Jika inputan berupa sinyal stereo, akan di-downsample menjadi mono. Downmix dikalkulasi dari penjumlahan channel kiri dan kanan.

Command line: -m nilai_mode Contoh: -m j

• Jika digunakan optimization

Optimization berfungsi untuk menentukan prioritas optimasi yang digunakan dalam encoding, yaitu berdasarkan speed atau quality.

§ Speed

Encoder dipaksa menggunakan mode encoding yang lebih cepat, tetapi dengan kualitas yang lebih rendah.

(33)

Noise shaping tidak diperbolehkan, tetapi psycho acoustics akan tetap dikomputasi untuk alokasi bit dan deteksi pre-echo.

§ Quality

Menggunakan beberapa perbaikan kualitas. Encoding akan lebih lambat, tetapi hasilnya memiliki kualitas yang lebih tinggi.

Command line untuk speed adalah -f sedangkan untuk quality adalah -h.

• Jika digunakan CRC error protection

Ini berarti akan ditambahkan sebuah kode cyclic redundancy check (CRC) pada setiap frame, mengijinkan untuk mendeteksi error transmisi yang dapat muncul pada stream MP3. Ini membutuhkan 16 bit per frame yang akan digunakan untuk encoding, dan kemudian agak mengurangi kualitas suara.

Command line: -p

• Jika digunakan MP3 flags

Flags digunakan untuk menentukan apakah file MP3 hasil encoding tersebut dinyatakan sebagai copy (non-original) atau memiliki copyright.

Command line untuk copy adalah -o sedangkan untuk copyright adalah -c.

• Jika digunakan VBR

§ Menggunakan ABR sebagai ganti VBR atau tidak

♦ Kalau digunakan ABR

Encoding dilakukan dengan menggunakan targeted average bitrate, mengijinkan penggunaan frame dengan ukuran yang berbeda-beda.

Range yang diijinkan adalah 8-310.

Command line: --abr nilai_ABRTargetBitrate

Nilai ini bisa dikombinasikan dengan -b and -B switches seperti:

lame --abr 123 -b 64 -B 192 a.wav a.mp3

yang akan membatasi ukuran frame yang diijinkan antara 64 dan 192 kbit.

♦ Kalau tidak digunakan ABR, harus ditentukan VBR quality

Quality terdiri dari nilai 0 sampai 9. Nilai 4 merupakan default quality sedangkan 0 merupakan highest quality.

Command line: -V nilai_quality Contoh: -V 0

(34)

§ VBR maximum bitrate

Untuk MPEG1 (sampling frequencies 32, 44.1 dan 48 kHz):

nilai_bitrate = 32,40,48,56,64,80,96,112,128,160,192,224,256,320.

Untuk MPEG2 (sampling frequencies 16, 22.05 dan 24 kHz):

nilai_bitrate = 8,16,24,32,40,48,56,64,80,96,112,128,144,160.

Nilai ini menjelaskan bitrate maksimum yang diijinkan jika digunakan VBR/ABR. Penggunaan ini sebenarnya tidak direkomendasikan.

Dikarenakan adanya bit reservoir, sebuah 128 kbit CBR bitstream, dapat memiliki frame-frame yang menggunakan bit sebanyak mungkin seperti frame 320 kbit. Mode VBR meminimalkan penggunaan bit reservoir, oleh karena itu frame-frame 320 kbits perlu diijinkan untuk memperoleh fleksibilitas yang sama seperti CBR streams.

Command line: -B nilai_MaxBitrate Contoh: -B 320

§ Strictly enforce minimum bitrate (usahakan memberlakukan bitrate minimum). Sifatnya optional.

Ini terutama ditujukan untuk penggunaan hardware players yang tidak mendukung low bitrate MP3. Tanpa option ini, bitrate minimum akan diabaikan untuk passages of analog silence, contohnya ketika level musik di bawah absolute threshold of human hearing (ATH).

Command line: -F

§ Disable writing VBR tag (tidak perlu VBR tag). Sifatnya optional.

Tag ini ditanamkan dalam frame 0 dari file MP3. Tag ini mengandung beberapa informasi mengenai encoding options dari file tersebut, dan dalam VBR, tag ini mengijinkan VBR aware players secara tepat seek dan compute playing times dari VBR files.

Command line: -t

• Jika digunakan resampling

Digunakan untuk mengatur frekuensi sampling yang digunakan dalam encoding, yang terdiri atas frekuensi 8, 11.025, 12, 16, 22.05, 24, 32, 44.1 dan 48 kHz. Jika nilainya tidak dispesifikasikan, LAME akan secara otomatis me- resample inputan ketika menggunakan high compression ratios.

(35)

Command line: -resample nilai_frekuensi Contoh: -resample 32

• Jika digunakan highpass filter

Highpass filter digunakan untuk mengatur highpass filtering frequency (frekuensi di bawah nilai ini akan di-cutoff).

Command line: --highpass nilai_HighFilterFrequency

Jika digunakan width of highpass filter (nilai default-nya 15% dari highpass frequency):

Command line: --highpass –width nilai_HighFilterWidth

• Jika digunakan lowpass filter

Lowpass filter digunakan untuk mengatur lowpass filtering frequency (frekuensi di atas nilai ini akan di-cutoff).

Command line: --lowpass nilai_LowFilterFrequency

Jika digunakan width of lowpass filter (nilai default-nya 15% dari lowpass frequency):

Command line: --lowpass –width nilai_LowFilterWidth

Contoh: Jika file ‘coba.wav’ di folder ‘C:\’ akan di-encode menjadi ‘coba.mp3’

pada lokasi yang sama dengan source file-nya, dengan menggunakan bitrate 128 kbit dan mode joint stereo, maka command line-nya adalah:

lame -b 128 -m j “C:\coba.wav” “C:\coba.mp3”

2.6. Komponen Delphi

Dalam pembuatan software ini, digunakan beberapa komponen Delphi, yaitu komponen untuk membuat player, tampilan XP dan list view. Berikut ini akan dijelaskan mengenai ketiga jenis komponen tersebut:

2.6.1. Komponen untuk Membuat Player

Software ini menggunakan 2 buah komponen untuk membuat player yaitu ElPlayerMan dan Slider. Kedua komponen ini membutuhkan Elsound.h.

Jadi untuk menggunakan komponen ini, Elsounds perlu ditambahkan pada bagian uses.

(36)

2.6.1.1. ElPlayerMan

Gambar 2.6. Komponen ElPlayerMan

ElPlayerMan memiliki properti players: TElPlayers yang berfungsi untuk mengakses particular player menggunakan Players object. TElPlayers memiliki beberapa properti berikut ini:

• PathToDll: String

Digunakan untuk mendefinisikan path ke modul decoder yang di-load. Harus berupa nama file lengkap dengan path-nya. Pada software ini digunakan modul decoder ‘Elamp.esp’ (untuk file MP3) dan ‘Wavmp.esp’ (untuk file WAV).

• Init

Digunakan untuk inisialisasi modul.

• InputMode: TelSInputMode

Digunakan untuk mendefinisikan apakah modul harus membuka file tersebut dan membaca data (imFile mode), atau menggunakan OnInput* events untuk memperoleh datanya (imCallback mode).

• OutputMode: TElSOutputMode

TElSOutputMode = (omMMSystem, omFile, omDirectSound, omCallback);

Digunakan untuk mendefinisikan ke mana hasil decoded data harus dikirim.

§ OmMMSystem: Data akan dikirim ke audio device.

§ OmFile: Data akan di-write ke file WAV dalam format PCM.

§ OmDirectSound: Tidak diimplementasikan untuk MPEG decoder.

§ OmCallback: OnOutput* events akan digunakan untuk mengirim decoded samples ke program utama.

• OutputDevNumber: Integer

Digunakan untuk mengspesifikasikan audio device # jika OutputMode yang digunakan adalah omMMSystem.

(37)

• OnInputClose: TInputCloseEvent

type TInputCloseEvent = procedure(Sender : TObject; UserData : integer; var Success : boolean) of object;

Event ini digunakan jika InputMode diset imCallback. Program dapat menutup input stream dalam event handler. UserData adalah user-defined data yang di-pass ke modul oleh OnInputOpen event. Success variable digunakan untuk memberitahukan modul tersebut apakah operasi tersebut berhasil.

• OnInputGetSize: TInputGetSizeEvent

type TInputGetSizeEvent = procedure(Sender : TObject; UserData : integer;

var Size : integer; var Success : boolean) of object;

Event ini digunakan jika InputMode diset imCallback. Program harus mengembalikan input stream Size dalam event handler. UserData adalah user- defined data yang di-pass ke modul oleh OnInputOpen event. Success variable digunakan untuk memberitahukan modul tersebut apakah operasi tersebut berhasil.

• OnInputOpen: TInputOpenEvent

type TInputOpenEvent = procedure(Sender : TObject; var UserData : integer;

var Seekable, Success : boolean) of object;

Event ini digunakan jika InputMode diset imCallback. Program harus membuka input stream dalam event handler. Handler tersebut mengembalikan UserData ke modul tersebut. User data akan di-sent ke OnInput* event handlers. Seekable harus diset untuk mengindikasikan apakah stream tersebut seekable. Pada umumnya, file streams selalu seekable, tetapi untuk beberapa Internet streaming seeking mungkin menjadi masalah. Success variable digunakan untuk memberitahukan modul tersebut apakah operasi tersebut berhasil.

• OnInputRead: TInputReadEvent

type TInputReadEvent = procedure(Sender : TObject; UserData : integer;

Buffer : pointer; BytesToRead : integer; var BytesRead : integer; var Success : boolean) of object;

Event ini digunakan jika InputMode diset imCallback. Program harus membaca BytesToRead bytes dari stream ke Buffer dan mengembalikan

Referensi

Dokumen terkait

Mikronukleus adalah suatu kelainan pembelahan sel terutama pada fase anafase atau dari hasil pembelahan kromosom yang tidak memiliki sentromer sehingga terdapat

Santoso (1996) dan Direktorat Jendral Kehutanan (2007) menambahkan bahwa tipe ekosistem hutan hujan tropis terdapat di wilayah yang memiliki tipe iklim A dan B

Empat kewajiban utama yang harus dilaksanakan oleh negara-negara anggota Konvensi: (1) mendaftarkan lokasi lahan basah yaitu menetapkan sedikitnya satu kawasan lahan basah

Persamaan penelitian terdahulu dengan rencana penelitian yang dilakukan peneliti adalah terdapat variabel bebasnya yaitu Kompensasi dan Motivasi, persamaan variabel terikatnya

Penempatan gambar tokoh pahlawan dalam visual rupiah merupakan salah satu bentuk bukti, tanda bahwa rupiah memiliki peran sebagai media komunikasi untuk menyampaikan sejarah tokoh

Relasi DIS digunakan untuk menyatakan bahwa dua token tidak memiliki hubungan satu dengan yang lainnya, relasi ini juga dapat digunakan untuk menyatakan kata

Membaca pemahaman salah satu bentuk dari kegiatan membaca dengan tujuan utamanya untuk memahami isi pesan yang terdapat dalam bacaan. Membaca pemahaman lebih

Salah satu contoh bakteri patogen adalah Escherichia coli yang diketahui dapat menyebabkan diare, kolera, dan berbagai penyakit pada saluran pencernaan.. Escherichia