任意のデータを書き込ん/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