Tes mikrofon menggunakan ALSA (persiapan sebelum menggunakan HARK)


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
Seperti halnya PlayStation Eye, Kinect XBOX 360 bisa juga dikenali oleh ALSA setelah kita melakukan sedikit modifikasi yaitu menginstall paket kinect-audio-setup. Berdasarkan website resmi dari HARK di link ini, ada beberapa hal yang perlu diperhatikan untuk mengetahui apakah Kinect kita dapat dikenali oleh ALSA atau tidak:

(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.gz
wawan@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, &current_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, &current_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