libsdl.org Webサイトのドキュメントにはこれらの機能が表示されていませんが、SDLにはあなたが行っている以上のミュート機能はないと思います。APIを見ると、内部ソフトウェアミキサーを制御しているだけだと思います(PCMボリュームコントロールはSDL 1.3ウィッシュリストにあります)が、ボリュームを調整し、alsamixerでシステムボリューム設定を表示することでこれを確認できます(<Esc >終了するキー)。汚い回避策は、システムコールを使用してミキサープログラムを実行することです。#include <stdlib.h>
を持って実行する必要がありますsystem("amixer set Headphone mute");
。それを超えて、私は実際のミュートのためにalsaのようなものを調べて、後で簡単に置き換えることができるように独自のミュート関数を作成します。Windowsをサポートする必要がある場合は、#ifdef _WIN32/#else/#endif
その中にブロックを書き込むことができます。
私はハードウェアのソフトウェアの問題を修正することを推奨していませんが、より良いサウンドカードが必要なようです。また、コンピュータのリアジャックをフロントジャックよりも使用している方が、おそらくより良いサウンドが得られます。私はいつもマザーボードに接続されている細いサウンドケーブルからたくさんのノイズを拾ってきました。