Phát nhạc với Raspberry Pi - USB Audio - Card âm thanh và Raspberry Pi

Mô tả dự án: 

Arduino đã phát nhạc nhưng lại rất vất vả. Mình muốn Raspberry Pi sẽ đảm nhận việc này để việc này đơn giản hơn. Mình sẽ hướng dẫn các bạn chơi các nhạc ở local (thẻ nhớ) và các bài nhạc ở trên Internet! Một cái hay nữa là, các package mà mình hướng dẫn các bạn đều có thư viện cho nodejs!

Chuẩn bị phần cứng

  • Loa có giắc cắm 3.5mm như hình (cái này tầm 50k)
  • Một usb audio (card âm thanh) (nếu muốn phát nhạc từ mạng) (cái này rẻ tầm 20k)

Phát nhạc từ thẻ nhớ (local)

Các bạn hãy đăng nhập bằng account pi và chạy các lệnh sau nhé.

Hãy chuẩn bị một file mp3 để test! Mình sẽ một file mp3 miễn phí từ http://download.wavetlan.com/SVV/Media/HTTP/http-mp3.htm để test nhé.

sudo wget http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3 -O test.mp3

Dòng trên sẽ download file tại http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3 và lưu lại với tên test.mp3.

Gắn loa vô raspberry vào jack 3.5mm như hình dưới

Và phát nhạc thôi

omxplayer test.mp3

Nếu bạn thích chơi màn hình HDMI và không có loa để test thì bạn cũng có thể test bằng màn hình đó bằng cách chuyển output âm thanh vào hdmi

omxplayer -o hdmi test.mp3

Nhược điểm của cách tiếp cận mặc định của Raspberry Pi đó là:

  • Không sử dụng ALSA
  • Chỉ chơi được ở local (thẻ nhớ)

 

Phát nhạc từ Internet

Nếu là một người ưa thích mạng thì bạn chẳng thể nào hài lòng với những hạn chế của omxplayer. Vì vậy, mình xin chia sẻ với các bạn cách sử dụng mpg123 để phát stream hoặc một file audio trên mạng!

Cài gói mpg123

sudo apt-get install -y mpg123

Bạn chạy thử với file test.mp3 vừa rồi! Nếu để ý kỹ thì bạn thấy âm lượng chỉ còn 50% trong khi bạn không làm gì khác ngoài việc cài gói này!

mpg123 http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3

Mình đã thử với các gói khác như mplayer, mpg321 thì đều cho kết quả tương tự. Như vậy, nếu các gói được xây dựng trên thư viện ALSA thì bạn buộc phải dùng một usb audio để phát!

Nhưng vấn đề nãy sinh đó là, bạn phải biết cách để phát nhạc vào usb driver này!

Card âm thanh và Raspberry Pi

Mặc định, Raspberry Pi sẽ sử dụng card âm thanh 0,0 để phát nhạc. Vậy card âm thanh 0,0 là gì?

Để biết được, đang có những card âm thanh nào đang kết nối vào raspi, ta chạy lệnh

arecord -l

Trong đó, ta thấy có 2 card, card 0 là card usb audio mà mình đang gắn, card 1 là card của webcam c170 logitech mà bài viết trước mình đã giới thiệu!

Card 0 có 1 subdevice có id là 0. Card 1 cũng có 1 subdevice với id là 0. 

Để xác định nơi sẽ phát âm thanh, bạn cần xác định subdevice mà raspi sẽ phát. Vì vậy, để phát nhạc, ta dùng subdevice 0 thuộc card 0, ký hiệu là

hw:0,0

Như vậy, ta chỉ cần chạy lệnh

mpg123 -a hw:0,0 http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3

... là đã có nhạc rock để nghe!

lên
11 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Truyền hình ảnh từ Camera bằng Raspberry Pi

Khi đọc các bài viết về Intel Galileo, mình thấy có bài MJPEG Streamer khá hay. Và qua đây, mình cũng xin chia sẻ cách để chạy MJPEG Streamer trên Raspberry Pi để truyền hình ảnh từ Camera trong mạng LAN.

lên
11 thành viên đã đánh giá bài viết này hữu ích.

Lập trình nhúng trên Raspberry Pi bằng ngôn ngữ Javascript trong môi trường NodeJS - chìa khóa thành công

Với kinh nghiệm của một hardcore developer, đã từng dùng nhiều ngôn ngữ lập trình như C++, python, bash, js,... trên Raspberry Pi. Mình nhận thấy, Javascript trên NodeJS là một trong những ngôn ngữ lập trình "làm việc tốt nhất" trên Raspberry Pi. Vì sao? Vì đơn giản, nó chạy trong môi trường NodeJS mà NodeJS là một hệ sinh thái với hệ thống thư viện mở lớn nhất thế giới. Tuy nhiên, nó không dễ tiếp cận như Python, Ruby. Vì vậy, bạn cần lườm trước mọi thứ trước khi dấn thân vào Javascript. Tuy nhiên, lợi ích của bạn khi biết Javascript đó là có thể lập trình MỌI NỀN TẢNG từ những board mạch nhỏ nhất như (Raspberry Pi, Intel Galileo, Arduino Yún,...) cho đến môi trường Web.

lên
10 thành viên đã đánh giá bài viết này hữu ích.