問題タブ [alsa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
112 参照

c++ - このパラメータの正しい型は何ですか?

これは、すべての ALSA 関係者向けです。ここで健全性チェックが必要です。alsa-lib api を使用してサウンドを再生しています。データをドライバーに書き込むために使用している関数は次のとおりです。

3 番目のパラメーターは、フレーム カウントまたはバッファーのサイズ (バイト単位) である必要がありますか? バイト単位のサイズが渡される例を数多く見てきたため、質問しています。1つの例がドキュメントに含まれています。

0 投票する
1 に答える
832 参照

c++ - ALSA: ループ音の問題

Embedded Linux ボードで ALSA ライブラリをテストする小さなプログラムを作成しました。プログラムは ALSA を構成し、1 つのサウンドを再生してから、1 分間待機してから終了します。

これが私が観察していることです。サウンドを再生した後、静かな一時停止があり、サウンドが再び再生されます。プログラム自体が再び再生されないことは 100% 確信しています。

さらに調査するために、別の実験を行いました。同じボードで aplay を使用して、別のサウンドを再生しました。これはうまくいきました。次に、hello world プログラムを再度実行しました。今回は周期的な音に加えて、aplay が奏でる音以外に​​も名残を聴かせてもらいました。

alsa-lib またはサウンド ドライバのいずれかのバッファがクリアされていないと思われます。または、ソフトウェア パラメータを正しく設定していない可能性があります。snd_pcm_dump は、次の情報を吐き出します。

また、Ubuntuで実行しているため、これが表示されないことにも言及する必要があります。

0 投票する
1 に答える
3139 参照

audio - ALSAで20ミリ秒ごとにオーディオデータを取得しますか?

snd_pcm_readi()を呼び出して、20ミリ秒ごとまたは40ミリ秒ごとにオーディオデータを取得したいと思います。データを同期的に取得する方法を知りたい...つまりXミリ秒ごと...

ご回答ありがとうございます。

0 投票する
2 に答える
14270 参照

c - Makefile条件付きインクルード

ALSAまたはOSSヘッダーのいずれかを必要とするアプリケーションを作成しようとしています。基本的に、/ etc / oss.confが存在しない場合は、コンパイラに定義を渡したいと思います。これは、soundcard.hヘッダーが存在しないことを意味している可能性があります(これについては、自由に修正してください。まだ新しいです。 OSSでの作業に)。OSSのドキュメントによると、次のようにincludeディレクティブを使用します。

1つの問題。OSSのサポートはオプションなので、ヘッダーが存在するかどうかを確認し、存在する場合は、コンパイラーに定義を渡します。問題は、ファイルがmakefileルールの外部に存在するかどうかを確認する方法がないことです。ルール内で、何らかの理由でifステートメントを使用した場合、CFLAGSを設定しようとしても変更されません。

(上記は、CFLAGSの元の値が${OSS_CONFIG}存在する場合でも出力するだけです。)もちろん、これは非常に醜いので、もっとクリーンな方法があるかどうか疑問に思います。それとも、これについて私が行っている方法は、子猫の大量虐殺を含む世界的な大変動のイベントを引き起こすことになるのでしょうか?

ああ、autoconfを使うように言わないでください。

0 投票する
0 に答える
352 参照

c - ALSA API を使用 - バッファがいっぱいになるまでサウンドが開始されない

私が使用しているアプリケーションは、十分なサウンドが生成された後にのみサウンドを再生します。マウスを無音で 10 回クリックすると、10 回クリックした後、マウスのクリック音が 10 回聞こえます (たとえば)。

この問題を軽減するために私が見つけた唯一の方法は、非常に短いバッファ サイズを設定することですが、これはやりたくありません。

start_threshold sw パラメータを使用しようとしましたが、効果がありません。

指定された量のデータが書き込まれ、バッファ サイズを下回ったときに、強制的に再生できるように思えますが、これは正しいですか? 期間の長さはバッファよりもはるかに短い可能性があるため(または例で見たように)、それが start_threshold が示しているようです。

私のコードは次のようなものです:

コール HW パラメータ設定

データを含むバイト配列を取得する

ループスルーし、毎回バッファに 1 バイト オフセットを加えた値に書き込みます

開始を呼び出します (これにより、再生が強制されますよね??)

-EPIPE がある場合は、prepare を呼び出して、offset に 0 を追加します (再生されるのはこれだけだと思います)。

ありがとう!

0 投票する
1 に答える
2921 参照

c++ - ALSA: サウンドの再生が終了したことを通知する方法

サウンド リクエストを受け取り、ALSA で再生する C++ オブジェクトがあります。サウンド要求を処理するスレッドがあります。一部のサウンドは周期的で、wav ファイルの内容が ALSA ライブラリに書き込まれた後に再スケジュールされます。すべてのデータがいつ再生されたかを知る方法はありますか? 関数 snd_pcm_writei はブロッキング書き込み関数ですが、必ずしもファイルが再生されたことを意味するわけではありません。

私が検討しているオプションの 1 つは、各サウンド ファイルを再生した後に snd_pcm_drain を呼び出し、次のファイルを再生するときに snd_pcm_prepare を呼び出すことです。これは良い解決策でしょうか?それともこれは非効率ですか?

更新: 「排水ソリューション」は機能しているようですが、あまり効率的ではありません。呼び出しが返されるまでに時間がかかり (一部のリソースがクリーンアップされる可能性があります)、プログラムに待ち時間が追加されます。多くの小さなファイルを連続して再生すると、遅延が最もよく見られます。各ファイルの間に数秒間の無音が聞こえます。これは実行中の snd_pcm_drain です。

0 投票する
2 に答える
306 参照

linux - ALSA:省電力ガイドライン

ALSAの省電力ガイドラインをどこでも知っている人はいますか?例えば...

  • サウンドが再生されていないときにPCMストリームを入れるのに最適な状態は何ですか?
  • 電力を節約するためにlibで無効にできるものはありますか?
  • してはいけないことは?
0 投票する
1 に答える
5593 参照

audio - Linux ALSA / Sound-APIの質問-どのようにミュートしますか?

  • Cを使用してサウンドをミュートするにはどうすればよいですか?ALSA関数呼び出しはありますか?

  • マイクをミュートできる他の関数呼び出し/APIはありますか?

  • ALSAを使用してオーディオ再生を行うためのコードを記述しましたが、サウンドの再生が始まる前にDELAYに気づきました...サウンド再生のDELAYまたはLATENCYを減らすにはどうすればよいですか?

バツ

0 投票する
1 に答える
960 参照

linux - ALSAストリームのボリュームを設定します

ALSAストリームのボリュームを設定できる必要があります(PCMインターフェイスからのsnd_pcm_t)。これは一般的な操作であり、なぜ簡単な方法がないのかわかりませんか?これどうやってするの?減衰したデータをストリーミングすることはオプションではありません。これは、データがバッファリングされるため、音量調整が途切れる原因になるためです。DirectSoundとWinMMでは、これは単純な関数呼び出しです。私は何かを逃したことがありますか?ミキサーインターフェースを使用する必要がありますか?制御インターフェース?snd_pcm_tと制御インターフェースの間に接続がありません。間違ったAPIを使用していますか?

0 投票する
1 に答える
2546 参照

linux - ALSAへの接続

いずれかのマシンで別のユーザーとしてALSAサウンドシステムに接続しようとすると、「ALSA lib pcm_dmix.c:975:(snd_pcm_dmix_open)IPCセマフォを作成できません」というメッセージが表示されます。マシンは、システムに別のユーザーとしてログインしています。aplayを使用するか、アプリケーションを使用するかは関係ありません。同じメッセージが表示されます。ルートとして実行すると、アプリケーションはALSAシステムに接続し、サウンドを再生します。コンソールにログインしているユーザーに訴えると、同じ失敗が発生します。

誰かアイデアはありますか?プログラムでsetcapを使おうとしましたが、「操作がサポートされていません」という理由で失敗しました。これは、アプリケーションがNFSマウントされたパーティションにあることが原因である可能性があります。