お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2016-05-05 16:27:23

cloudspider
メンバ
登録日: 2011-08-04

C言語のビープ音が出ない

C言語のプログラム中に
\a
と記述するとビープ音が出ると本に書いてあるのですが
ビープ音を出せません。
何が原因でしょうか。


環境
OSはubuntu14.04
端末のvimでプログラムを記述し
clangでコンパイルし
端末上で実行しています。

よろしくおねがいします。

オフライン

 

#2 2016-05-05 16:36:08

array
メンバ
登録日: 2007-03-13

Re: C言語のビープ音が出ない

とりあえず、コードを載せてみたらどうですか?
ただ昔はBeepのためのスピーカーがあって直接I/Oにマッピングされていたけれど、今は違うので、サウンド用のドライバとかが入っていないと出ないような気がします。

オフライン

 

#3 2016-05-05 16:41:23

cloudspider
メンバ
登録日: 2011-08-04

Re: C言語のビープ音が出ない

明解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;
}

こんな感じです。

オフライン

 

#4 2016-05-06 06:26:57

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: C言語のビープ音が出ない

https://forums.ubuntulinux.jp/viewtopic.php?id=15119はもう試されました?
12.04 用のスレッドですが 14.04 でも同様ですので順に試してみることをおすすめします。
ただし、#15 中の pacat は誤記で正しくは paplay です。

オフライン

 

#5 2016-05-17 01:18:04

cloudspider
メンバ
登録日: 2011-08-04

Re: C言語のビープ音が出ない

返事が遅くなってすいません。

順々に試してみたのですが

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がなるかどうか教えてください。

ここの「#追加」が何を指しているのかわからず
躓いていまいました。

どうすればよいでしょうか。

オフライン

 

#6 2016-05-17 10:10:30

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: C言語のビープ音が出ない

cloudspider による投稿:

ここの「#追加」が何を指しているのかわからず
躓いていまいました。

これは https://forums.ubuntulinux.jp/viewtopic.php?id=15119の#15に書いた default.pa の変更の際にコメントを行末に足してしまったために発生した問題の分析と修正です。結局はそこの #15 の手順で解決できていました。

cloudspiderさんの現状を確認させてください。
(1) paplay で音源ファイルが再生出来ましたか?
(2) ~/.pulse/default.pa を作成・変更しましたか?
(3) xkbbell でビープ音が鳴りましたか?

オフライン

 

#7 2016-05-17 20:21:46

cloudspider
メンバ
登録日: 2011-08-04

Re: C言語のビープ音が出ない

#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 でも可。)

これもよくわかりませんでした。

オフライン

 

#8 2016-05-18 07:08:06

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: C言語のビープ音が出ない

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 を実行して結果を教えてください。

オフライン

 

#9 2016-05-23 01:03:37

cloudspider
メンバ
登録日: 2011-08-04

Re: C言語のビープ音が出ない

default.paを.config/pulse に移動した後
ubuntuをログアウトし
再度ログインし直して
$xkbbell
を実行してみましたが
何の音もなることなく
$
となってしまいました。

オフライン

 

#10 2016-05-24 19:56:12

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: C言語のビープ音が出ない

それでは、確認したいことがありますので、以下の3つのコマンドの実行結果を教えてください。

コード:

diff -u /etc/pulse/default.pa ~/.config/pulse/default.pa
pactl list short modules
pactl list samples

オフライン

 

#11 2016-06-04 18:52:01

cloudspider
メンバ
登録日: 2011-08-04

Re: C言語のビープ音が出ない

日を改めてみると
見事になりました。

本当にありがとうございました。
感謝感激です。

オフライン

 

Board footer

Powered by FluxBB