ALSA adalah singkatan dari Advanced Linux Sound Architecture. Mungkin mereka yang sering bermain dengan musik terutama sound card di Linux tanpa disadari telah menggunakan ALSA. Singkat cerita, ALSA mengatur perangkat audio dan komponennya dalam suatu hirarki contohnya seperti di bawah ini dimana terdapat dua mikrofon yaitu dari laptop dan USB-mikrofon.
wawan@wawan-K42Jc:~$ cat /proc/asound/cards
0 [MID ]: HDA-Intel - HDA Intel MID
HDA Intel MID at 0xd8800000 irq 48
1 [CameraB409241 ]: USB-Audio - USB Camera-B4.09.24.1
OmniVision Technologies, Inc. USB Camera-B4.09.24.1
Secara tidak langsung, ALSA bisa dikatakan sebagai sekumpulan dari sound driver sehingga tidak semua USB-mikrofon bisa dikenali oleh ALSA. Dalam tulisan ini, saya akan memberikan contoh terkait bagaimana mengenali USB-mikrofon di Linux yaitu untuk:
(1) PlayStation Eye dan
(2) Kinect XBOX 360.
PlayStation Eye
PlayStation Eye |
PlayStation Eye memiliki 4-channel audio input dan yang terpenting kita tidak perlu menginstall driver atau semacamnya untuk mengenalinya di Linux. Cukup sambungkan ke port USB dan secara otomatis PlayStation Eye akan dikenali sebagai ALSA device. Untuk memastikannya cukup ketik seperti command di bawah ini
wawan@wawan-K42Jc:~$ cat /proc/asound/cards
0 [MID ]: HDA-Intel - HDA Intel MID
HDA Intel MID at 0xd8800000 irq 48
1 [CameraB409241 ]: USB-Audio - USB Camera-B4.09.24.1
OmniVision Technologies, Inc. USB Camera-B4.09.24.1
atau
wawan@wawan-K42Jc:~/ALSA-test$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC269VB Analog [ALC269VB Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Untuk sekedar testing, kita bisa menggunakan command "arecord" dan "aplay" yang merupakan sound recorder dan player untuk ALSA sound card driver. Untuk mengetahui bagaimana cara penggunaannya, bisa dengan mengetik "arecord -h" di terminal Anda.
ringkasan singkat:
-D => nama device: plughw:card,device
-t => tipe file: wav, voc, raw atau au
-c => jumlah channel
-r => sampling rate: default = 8000 Hz
-f => format file: U8, S16_LE dll
-d => durasi dalam detik
-I => satu file untuk masing-masing channel
contoh:
arecord -D plughw:1,0 -t wav -c 4 -r 16000 -d 5 -f S16_LE ch.wav
setelah menjalankan command di atas pada terminal anda, hasilnya seperti ini
wawan@wawan-K42Jc:~/ALSA-test$ arecord -D plughw:1,0 -t wav -c 4 -r 16000 -d 5 -f S16_LE ch.wav
Recording raw data 'ch.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Channels 4
wawan@wawan-K42Jc:~/ALSA-test$ ls
ch.wav
Jika suara berhasil terekam, itu berarti USB-mikrofon anda berhasil dikenali oleh ALSA.
Kinect XBOX 360
Kinect XBOX 360 |
(1) Gunakan port USB2.0 ketimbang port USB3.0 untuk konek ke Kinect.
(2) Hanya support untuk Kinect XBOX bukan Kinect Windows
(3) Cek apakah kinect anda adalah "sebelum" firmware update pada Februari 2012 (setelah firmware update, tidak support dengan kinect-audio-setup)
Jika Kinect kita telah memenuhi syarat di atas, kemungkinan besar kita bisa merekam menggunakan mikrofon di Kinect. Langkah inti adalah menginstall kinect-audio-setup.
wawan@wawan-K42Jc:~$ sudo apt-get install kinect-audio-setup
kemudian restart laptop kalian dan sambungkan Kinect ke port USB2.0. Langkah berikutnya, cek apakah Kinect sudah terbaca menggunakan command seperti di bawah ini.
wawan@wawan-K42Jc:~$ cat /proc/asound/cards
0 [MID ]: HDA-Intel - HDA Intel MID
HDA Intel MID at 0xd8800000 irq 48
Jika belum berhasil dikenali oleh ALSA seperti Kinect saya di contoh di atas, langkah selanjutnya adalah menginstall dari binary code.
wawan@wawan-K42Jc:~$ sudo apt-get remove kinect-audio-setup
wawan@wawan-K42Jc:~$ sudo apt-get install libusb-1.0-0-dev
wawan@wawan-K42Jc:~$ mkdir kinect-binary
wawan@wawan-K42Jc:~$ cd kinect-binary
wawan@wawan-K42Jc:~/kinect-binary$ wget http://archive.ubuntu.com/ubuntu/pool/multiverse/k/kinect-audio-setup/kinect-audio-setup_0.3.orig.tar.gz
wawan@wawan-K42Jc:~/kinect-binary$ tar -xvzf kinect-audio-setup_0.3.orig.tar.gzwawan@wawan-K42Jc:~/kinect-binary$ cd kinect-audio-setup-0.3/
wawan@wawan-K42Jc:~/kinect-binary/kinect-audio-setup-0.3$ gedit ./kinect_upload_fw/kinect_upload_fw.c
Edit code pada baris antara 158 - 163 yang sebelumnya adalah
158 libusb_set_configuration(dev, 1);
159 libusb_claim_interface(dev, 0);
160
161 seq = 1;
162
163 bootloader_command cmd;
menjadi
158 int current_configuration = 0;
159 libusb_get_configuration(dev, ¤t_configuration);
160 if (current_configuration != 1)
161 libusb_set_configuration(dev, 1);
162
163 libusb_claim_interface(dev, 0);
164
165 libusb_get_configuration(dev, ¤t_configuration);
166 if (current_configuration != 1) {
167 res = -ENODEV;
168 goto cleanup;
169 }
170
171 seq = 1;
172
173 bootloader_command cmd;
kemudian simpan dan jalankan perintah berikut
wawan@wawan-K42Jc:~/kinect-binary/kinect-audio-setup-0.3$ sudo make install
wawan@wawan-K42Jc:~/kinect-binary/kinect-audio-setup-0.3$ sudo ./kinect_fetch_fw /lib/firmware/kinect
Selanjutnya restart lagi, dan cek apakah Kinect telah dikenali oleh ALSA menggunakan command berikut
wawan@wawan-K42Jc:~$ cat /proc/asound/cards
0 [MID ]: HDA-Intel - HDA Intel MID
HDA Intel MID at 0xd8800000 irq 48
1 [Audio ]: USB-Audio - Kinect USB Audio
Microsoft Kinect USB Audio at usb-0000:00:1d.0-1.2.1, high speed
Seperti terlihat di atas, akhirnya, Kinect berhasil dikenali oleh ALSA. Untuk memastikan bahwa kita bisa merekam suara atau tidak, bisa gunakan command berikut
arecord -D plughw:1,0 -t wav -c 4 -r 16000 -d 5 -f S16_LE ch.wav
Selamat mencoba.
No comments:
Post a Comment