
Ubuntu日本語フォーラム
ログインしていません。
C言語のプログラム中に
\a
と記述するとビープ音が出ると本に書いてあるのですが
ビープ音を出せません。
何が原因でしょうか。
環境
OSはubuntu14.04
端末のvimでプログラムを記述し
clangでコンパイルし
端末上で実行しています。
よろしくおねがいします。
オフライン
とりあえず、コードを載せてみたらどうですか?
ただ昔はBeepのためのスピーカーがあって直接I/Oにマッピングされていたけれど、今は違うので、サウンド用のドライバとかが入っていないと出ないような気がします。
オフライン
明解C言語 中級編
一番最初のプログラムです。
#include<stdio.h>
int main(void)
{
int no;
int ans =7;
printf("いくつかな");
scanf("%d",&no);
if(no>ans)
puts("\aもっと小さいよ");
else if(no<ans)
puts("\aもっと大きいよ");
else
puts("正解です");
return 0;
}
こんな感じです。
オフライン
https://forums.ubuntulinux.jp/viewtopic.php?id=15119はもう試されました?
12.04 用のスレッドですが 14.04 でも同様ですので順に試してみることをおすすめします。
ただし、#15 中の pacat は誤記で正しくは paplay です。
オフライン
返事が遅くなってすいません。
順々に試してみたのですが
taka.zoo.n による投稿:
ソースで確かめたわけではありませんが、default.pa で # がコメントになるのは行頭だけのようです。(行末の空白文字も引数の値として扱われるようです。)ですから、
#追加
の部分を別の行に(行末にも余分な空白文字を入れないように注意して)編集してから pulseaudio を再起動(logout/login あるいは pulseaudio -k)してもう一度
pactl list short modules, pactl list samples を実行してみてみてください。「#追加」が有ったところが
19 module-x11-bell sample=x11-bell
ファイル名e: /usr/share/sounds/ubuntu/stereo/bell.ogg
media.filename = "/usr/share/sounds/ubuntu/stereo/bell.ogg"
となるようにしてから pactl play-sample x11-bell を実行してbeepがなるかどうか教えてください。
ここの「#追加」が何を指しているのかわからず
躓いていまいました。
どうすればよいでしょうか。
オフライン
cloudspider による投稿:
ここの「#追加」が何を指しているのかわからず
躓いていまいました。
これは https://forums.ubuntulinux.jp/viewtopic.php?id=15119の#15に書いた default.pa の変更の際にコメントを行末に足してしまったために発生した問題の分析と修正です。結局はそこの #15 の手順で解決できていました。
cloudspiderさんの現状を確認させてください。
(1) paplay で音源ファイルが再生出来ましたか?
(2) ~/.pulse/default.pa を作成・変更しましたか?
(3) xkbbell でビープ音が鳴りましたか?
オフライン
#15まで戻ってみました。
(1)paplayで音源ファイルは再生出来ました。
(2)なのですが/etc/pulse/default.paからホームディレクトリに移コピーし
「load-sample〜〜」の付近に
load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg load-module module-x11-bell sample=x11-bell
の2行を「#」なしで追加すれば良いということでしょうか。
(3)ですが
$xkbbell
を実行しても音はなりませんでした。
端末の「端末ベルを鳴らす」はチェックされています。
James による投稿:
ファイルの変更を pulse audio に認識させます。(logout/login でも可。)
これもよくわかりませんでした。
オフライン
cloudspider による投稿:
(2)なのですが/etc/pulse/default.paからホームディレクトリに移コピーし
「load-sample〜〜」の付近にコード:
load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg load-module module-x11-bell sample=x11-bellの2行を「#」なしで追加すれば良いということでしょうか。
いいえ、default.pa をコピーするのはホームディレクトリではありません。今確認してみたら 14.04 ではホームディレクトリの中の .config/pulse ディレクトリの中にコピーするのが正統なようです。(14.04 であってもホームディレクトリの中の .pulse の中でも動作していますがこれは互換性維持のためなのでしょう。いずれにせよホームディレクトリではありません。)
その後の変更に関しては上記のとおりです。
この作業を行っている時点で既に pulse audio daemon は変更前の default.pa の内容で起動しています。そこで、pulse audio daemon に変更後のファイルを読みこませねばなりません。そのために一旦ログアウトして再度ログインする、ということです。
その後で xkbbell を実行して結果を教えてください。
オフライン
default.paを.config/pulse に移動した後
ubuntuをログアウトし
再度ログインし直して
$xkbbell
を実行してみましたが
何の音もなることなく
$
となってしまいました。
オフライン
それでは、確認したいことがありますので、以下の3つのコマンドの実行結果を教えてください。
diff -u /etc/pulse/default.pa ~/.config/pulse/default.pa pactl list short modules pactl list samples
オフライン