우분투 사운드 프로그래밍

익명 사용자의 이미지

우분투에서 사운드 출력을 할 일이생겼습니다.
그런데 의외로 래퍼런스를 인터넷에서 찾기가 쉽지 않군요 .. TT
찾기는 찾았습니다.

http://sunnmoon.egloos.com/1833613
http://manuals.opensound.com/developer/singen.c.html

위 두 번째 url 에서 알려주는 것은 OSS 4.x API 샘플 (OSS 4.x Programmer's Guide) 입니다.
그런데 실행해보니 /dev/dsp: No such file or directory 라고 하는군요... 아마 우분투에서는 장치명이 조금 다른가보죠?

위 문제에 대한 것도 궁금하지만 전반적으로 리눅스(우분투 11.10)에서 사운드 프로그램을 하는데 필요한 ABC 부터 배울 수 있는 좋은 래퍼런스를 찾습니다.

책, 웹사이트 등 어떤 것이라도.... 뭐가 있을까요?

지금 당장은 wav 파일의 재생, 정지, 다시 시작 정도의 기능구현을 할 수 있어야 합니다. 나중에는 더 많은 기능을 구현해야 하구요..

감사합니다.

cleansugar의 이미지

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

익명 사용자의 이미지

자세히는 모르지만 ALSA를 공부해보시는 게 어떨까요.

Advance Linux Sound Architecture입니다.

아마 사용하고 계신 우분투도 오픈 사운드 시스템보다는 알사를 사용하고 있을 것 같은데요.

poplinux의 이미지

/proc/devices 를 읽어보면 설치되어 있는 사운드 장치의 Major 번호를 확인할 수 있습니다.

우분투면 아마 대충 아래와 같을 겁니다.

Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
5 ttyprintk
6 lp
7 vcs
10 misc
13 input
21 sg
29 fb
81 video4linux
99 ppdev
108 ppp
116 alsa
128 ptm
136 pts
180 usb
188 ttyUSB
189 usb_device
216 rfcomm
226 drm
250 mei
251 hidraw
252 usbmon
253 bsg
254 rtc

보시면 116번이 alsa 로 되어 있는 것을 보실 수 있습니다.

그리고 /dev/snd 에 가셔서 확인해 보시면

drwxr-xr-x 2 root root 60 2012-01-09 08:50 by-path
crw-rw----+ 1 root audio 116, 7 2012-01-09 08:50 controlC0
crw-rw----+ 1 root audio 116, 6 2012-01-09 08:50 hwC0D0
crw-rw----+ 1 root audio 116, 5 2012-01-09 08:50 hwC0D3
crw-rw----+ 1 root audio 116, 4 2012-01-12 13:33 pcmC0D0c
crw-rw----+ 1 root audio 116, 3 2012-01-12 14:25 pcmC0D0p
crw-rw----+ 1 root audio 116, 2 2012-01-09 13:51 pcmC0D3p
crw-rw----+ 1 root audio 116, 1 2012-01-09 08:50 seq
crw-rw----+ 1 root audio 116, 33 2012-01-09 08:50 timer

major 116 번 alsa 관련된 디바이스 파일들이 있는 것을 볼 수 있습니다.

결국, alsa 를 사용중이란걸 확인하신겁니다.

alsa 는 구글에서 검색해 보시면 자세히 나와 있습니다.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

익명 사용자의 이미지

감사합니다.
ALSA 로군요... poplinux 님께서 확인해주셔서 감사드립니다.
rockbox 는 정확히 뭔지는 모르겠지만 재밌는 사이트 같습니다.

익명_사용자의 이미지

단순 출력은, alsa-library를 직접 사용하시는것보다
존재하는 멀티미디어 framework를 이용하시는것을 추천합니다.

가령, gstreamer를 이용하셔도 되고,
libvlc도 좋은 선택이 되겠죠.

qt/kde의 phonon도 좋은선택입니다.
코드 10줄 아래로 mp3 file player를 만들수도 있습니다.(결국 phonon도 gstreamer나 libvlc를 쓰지만..)

저는 gstreamer, libvlc, phonon를 모두 사용해봤습니다만( 비디오 플레이어를 만들기위해 )

가장 손쉽게 단순한 플레이어를 제작할수 있는것은 phonon입니다.
가장 강력한것은 libvlc입니다.

gstreamer는 아이디어, 디자인, 취지는 제일 좋지만, 실제 구현물과 프로젝트 완성도가 디자인을 따라올만큼 성숙하지 못하여, 저는 약간의 회의감을 갖고있습니다.
그래도, 뭐..나쁜선택은 아닙니다.
더군다나, gtk를 선호하시는 분이라면..gobject를 통하여 좀 더 자연스럽게 사용을 하실수 있습니다.

결국 구현하시고자 하는 기능이, playback, rewind, foward, stop, pause, resume 등의 미디어플레이어 기능 위주라면
phonon을 추천(개인적인 의견)합니다.

libvlc는 streaming-server로서의 기능까지 제공하며, 상당히 강력한 부가기능들이 있습니다.
특히 네트워크 스트림과 관련하여 부가기능이 많으며
encoder, transcoder의 기능까지도 제공합니다. 즉, 단순 player가 아니라
멀티미디어 종합 framework로도 쓸수 있습니다.

gstreamer는 libvlc와 phonon에서 제공하는 기능들을 다 제공할수 있지만(디자인상)
실제구현에서 vlc만큼 강력한 부분까지 구현되지 않았습니다.

저도 gstreamer를 사정상 어쩔수 없이 쓰고있는데, 개인적으로 추천하는 framework은 아닙니다.
그냥 전반적인 디자인만 너무 좋을뿐입니다. 실제로 libvlc의 강력한 기능들을 gstreamer로 구현하실려면
직접 plugin을 제작하시거나, 많은 작업을 하셔야합니다.

하지만, 단순 플레이어를 만드는데는 세가지 framework 모두 충분합니다.

익명 사용자의 이미지

ALSA 로 하는 방법으로 찾아본 지금까지 가장 좋은 리소스는 아래의 리눅스 저널 웹사이트에 올려진 내용입니다.

http://www.linuxjournal.com/article/6735?page=0,0

다른 누군가가 이 쓰레드를 검색하신다면 도움이 되실줄로 믿고 올려봅니다.

프레임워크 알려주신 분도 감사합니다.

cleansugar의 이미지

rockbox 개발자들이 앞으로는 안드로이드용 소프트웨어로 전향하자는데 잠정 합의했다고 합니다.
http://en.wikipedia.org/wiki/Rockbox

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.