実際には、オーディオ デバイスの左チャネルと右チャネルのボリューム コントロールを、各チャネルに異なる番号を使用するユーザーに与えたいと考えています。私は "waveOutSetVolume()" を使用しました。これには 2 つの引数があります。1 つ目はハンドル、2 つ目は 16 進数または DWORD 番号です。
私は2つの数値を取得しました.各チャネルにそれぞれ1つずつ、それらを文字列に変換します.今、それらを「0x」形式の16進数に変換するにはどうすればよいですか? 一般的に、各チャンネルの音量を個別に変更する方法は?
void Audio::setChannelsVolume(int rightChannelVolume, int leftChannelVolume)
{
if(leftChannelVolume < 0)
leftChannelVolume = 0;
if(leftChannelVolume > 100)
leftChannelVolume = 100;
if(rightChannelVolume < 0)
rightChannelVolume = 0;
if(rightChannelVolume > 100)
rightChannelVolume = 100;
stringstream volume;
if(leftChannelVolume < 7 && leftChannelVolume > 0)
volume << "0x0" << std::hex << soundVolumeCalculus(leftChannelVolume);
else
volume << "0x"<< std::hex << soundVolumeCalculus(leftChannelVolume);
if(rightChannelVolume < 7 && rightChannelVolume > 0)
volume << "0" << std::hex << soundVolumeCalculus(rightChannelVolume);
else
volume << std::hex << soundVolumeCalculus(rightChannelVolume);
string str = volume.str();
cout<<str;
const char* ch = str.c_str();
waveOutSetVolume(hWaveOut,(DWORD)ch);
}
/////////////////////////////////////////////
int Audio::soundVolumeCalculus(int volume)
{
return (int)((65535*volume)/100);
}