임의의 데이터를 쓸 수 /dev/dsp
있고 스피커에서 소음이 나올 수 있다는 것을 알고 있습니다. 하지만 파일에 어떤 데이터를 전달하더라도 소음은 동일합니다. 글을 써서 의미 있는 소리를 만들어내는 것이 가능한지 궁금합니다 /dev/dsp
.
답변1
가능한 프로그램임에도 불구하고 가능합니다.파일을 생성하다이런 종류의 원본 형식입니다.
작동 방식과 장치에서 사운드 출력을 위해 프로그래밍해야 하는 사항에 관심이 있다면 소스 코드를 확인하세요.삭스. 이 프로그램은 주어진 입력 파일을 트랜스코딩 하고 출력을 /dev/dsp
.-t oss
콘솔에서 사운드를 재생하는 가장 간단한 방법을 찾고 있다면 OSS 대신 ALSA를 사용하는 것이 더 나을 수도 있습니다. aplay
alsa-utils의 일부를 사용합니다 . 기본적으로 설치되어 있을 가능성이 높습니다.
답변2
이것고급 bash 스크립팅 가이드. 예제 29.2:
#!/bin/b[as][1]h
# music.sh
# Music without external files
# Author: Antonio Macchi
# Used in ABS Guide with permission.
# /dev/dsp default = 8000 frames per second, 8 bits per frame (1 byte),
#+ 1 channel (mono)
duration=2000 # If 8000 bytes = 1 second, then 2000 = 1/4 second.
volume=$'\xc0' # Max volume = \xff (or \x00).
mute=$'\x80' # No volume = \x80 (the middle).
function mknote () # $1=Note Hz in bytes (e.g. A = 440Hz ::
{ #+ 8000 fps / 440 = 16 :: A = 16 bytes per second)
for t in `seq 0 $duration`
do
test $(( $t % $1 )) = 0 && echo -n $volume || echo -n $mute
done
}
e=`mknote 49`
g=`mknote 41`
a=`mknote 36`
b=`mknote 32`
c=`mknote 30`
cis=`mknote 29`
d=`mknote 27`
e2=`mknote 24`
n=`mknote 32767`
# European notation.
echo -n "$g$e2$d$c$d$c$a$g$n$g$e$n$g$e2$d$c$c$b$c$cis$n$cis$d \
$n$g$e2$d$c$d$c$a$g$n$g$e$n$g$a$d$c$b$a$b$c" > /dev/dsp
# dsp = Digital Signal Processor
exit # A "bonny" example of an elegant shell script!
계산 결과에 대한 의견이 있나요?
답변3
최소한 FreeBSD에서는 /dev/dsp
샘플 속도가 8000Hz인 8비트 부호 없는 모노 오디오가 필요합니다. 기존 파일을 변환합니다.음악.m4a, 이 형식 ffmpeg
(헤더 없이 원시 오디오)의 경우 다음을 수행합니다.
ffmpeg -i music.m4a -ar 8000 -ac 1 -c:a pcm_u8 -f u8 music.raw
music.raw
결과 파일은 다음을 사용하여 재생할 수 있습니다.
cat music.raw > /dev/dsp
답변4
ALSA를 사용하는 경우 다음과 같이 aplay를 사용할 수 있습니다.
cat foobar.wav | aplay
출력은 다음과 같습니다.
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo