• 締切済み

waveOut関数での音量・音の強さ(db)の目安が判りません

http://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_func.htmlでは、 >サンプルでは128段階の音量調節を行えるように、512(=0xFFFF/128)ずつ値を上下させています。 と書かれています。 サンプルでは、1回音量を上げるたびに値が512ずつ上がり、1回音量を下げるたびに値が512ずつ下がるように設定されてあります。 この512が基準になる理由がよくわかりません。 これをdb単位で変更するように設定したいのですが、もともとの512の基準の意味がよくわからないため、この512をどのくらいの値に変えればよいのかわからずにいます。 1回音量を上げるたびに1db上がり、1回音量を下げるたびに1db下がるように設定するには、この512をどの値に変更すれば良いでしょうか?

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

あ, 音圧の場合はそっちでしたっけ>#2. ああ, 1次の FIR で 6 dB/oct だから 20倍しないといけないのか.

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

最大値の32767を仮に0dBとします。これを1.122で割っていきます 0dB=32767 -1dB=29204 -2dB=26028 -3dB=23198 -4dB=20675 -5dB=18428 -6dB=16424 -6dBでほぼ半分になります -7dB=14638 -8dB=13064 -9dB=11628 -10dB=10363 -11dB=9237 -12dB=8232 -12dBで半分の半分(最初の1/4) -13dB=7337 -14dB=6539 -15dB=5828 -16dB=5194 -17dB=4630 -18dB=4126 -18dBで最初の1/8 このように1dBがいくらという決め方は出来ません。 現在の音量に1.122をかけると1dBアップ1.122で割ると1dBダウンとしてください

  • KoHal
  • ベストアンサー率60% (110/181)
回答No.2

引用先の解説をもう一度良く読んでください。 ボリュームの大きさは1チャンネルあたりを2バイトで表し最小値0最大値が0xffffとありますね。 0xffff=65535ですから、ボリュームは0~65535で全65536通りの値で表されることになります。 これを128段階に分解するので、65536÷128=512、つまり512ずつ上下させればよいとなります。 10進数で見るとずいぶん半端な数値ですが、念のため同じ計算を16進数で表せば 65535=0xffff, 65536=0x10000, 128=0x80, 512=0x200ですから  65536÷128=512 → 0x10000÷0x80=0x200 となり非常に切りのいい計算になります。 つぎ。 音圧デシベルは 20log(増幅比)ですから、1dBで10^(1/20)=1.12201845430196… 音量を1dB増加させるたびにこの値をかけて行けばよいことになります。累乗になりますのでご注意。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

1 B = 10 dB が「10倍」だから, 1 dB は「10^0.1倍」です. ちなみに「512 が基準になっている」のはもともと「128段階の音量調節ができるようにする」ため.

time0space
質問者

補足

質問したのは1dbの定義や意味ではなく、512をどう変更すれば良いのかです。 「512が基準になっている」のが「128段階の音量調節ができるようにする」ためであることについては、既にURL先からこちらが引用した一文の通りです。 >>サンプルでは128段階の音量調節を行えるように、512(=0xFFFF/128)ずつ値を上下させています。 最初に取り上げたこの引用文と、「ちなみに」から始まっている >「512 が基準になっている」のはもともと「128段階の音量調節ができるようにする」ため. というご指摘は、ほとんど単に言い換えただけのものに過ぎないと思えてなりません。 なぜ「512が基準になっている」場合に「128段階の音量調節ができる」のかを理解するためには、何らかの知識が必要なのだと思います。ですが最初に取り上げた引用文やその他URL先の説明を読んでもそれがわからず、その結果dbごとの音量調節を配備するための方向性が掴めなかったので、ここで質問させていただきました。

関連するQ&A

  • waveout関数を使うと「○○は一度も使用されない」と表示されるのはなぜですか?

    C++をはじめたばかりなのですが、waveout関数に興味を持ち、今現在勉強中です。 初めに、仕組みを大まかにでも理解するために、サンプルを貼り付け、コンパイルし、実行してみました。 サンプルは、『Windowsプログラミング研究所(http://www13.plala.or.jp/kymats/index.html)』で公開されているものを使いました。公開されているページのURLは、http://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_stereo_16.cppです。 コンパイルに利用したのは、「CPad for Borland C++ Compiler」です。 ところが、以下のようなエラーが表示されました。 >警告 W8057 bb.cpp 44: パラメータ 'hinstPrev' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) >警告 W8057 bb.cpp 44: パラメータ 'lpszCmdLine' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland >Fatal: ファイル WINMM.LIB が開けません プログラミングの基礎が成っていないためなのでしょうが、「パラメータ 'hinstPrev' は一度も使用されない」や「パラメータ 'lpszCmdLine' は一度も使用されない」の意味がわかりませんでした。 サンプルが間違っているとは思えません。 となると、このサンプルを実行に移すための下準備が必要なのだと思うのですが、それが何なのかがわかりません。 waveout関数について説明されている他のサイトも検索してみたのですが、上のページで公開されているサンプルと同様の内容が公開されているばかりで、実行に移すための下準備が何なのかはわかりませんでした。 なぜ「○○は一度も使用されない」と表示されるのかを教えてください。 また、これを改善するには何が必要になるのかについても、ご教授ください。 できれば、waveout関数について、上に挙げたサイトよりも、より初心者向けに書かれたサイトがあれば、教えてもらえると幸いです。

  • Win32APIで入力した数値を反映させたアプリケーションを動かすにはどうすればよいでしょうか?

    C++をはじめたばかりなのですが、waveout関数に興味を持ち、今現在勉強中です。 http://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_stereo_16.cppに載っているサンプルをhttp://oshiete1.goo.ne.jp/qa5223409.htmlで頂いたアドバイスを参考にして、「CPad for Borland C++ Compiler」でも警告なしでコンパイルできるようにしました。 サンプルでは、 >#define F 400 //周波数(1秒間の波形数) で周波数が設定されてあります。 これを、ユーザがキーボードで数値を入力して自由に周波数を設定できるように変更しようと思いました。 コマンドプロンプトで数値を入力するのではなく、新しくウィンドウを開いて、数値を入力するためのボックスを開きたいと思います。 ですが、これをC++とWin32APIで実行するための専用の関数が見当たりません。 たとえば、『C/C++によるWin32API -APIサンプル集(http://homepage1.nifty.com/MADIA/vc/api/)』にあるサンプルプログラムを拝見させていただいたのですが、発見することができませんでした。予め設定された選択肢から選択するメニューについては紹介されていたのですが、入力フォームを作る方法については紹介されていなかったように思えます。 Win32APIで数値を入力して >#define F 400 の「400」の部分を変えるためには、どのようにすればよいでしょうか?

  • WAVファイルの音量調整には

    WAVファイルの音量調整には 「正規化(ノーマライズ)」とか「音声均一化」とか「オートマキシマイズ」とが色々ありますが、-12dBとか「チンプンカンプン」でよくわかりません。 最終的には映像ファイルからの音声やCDからの音声をmp3に変換してポータブルプレヤーで聴きたのです。 そのとき、音の大きさが大きかったり小さかったりではいちいち音量調節しなければならないので同じ音量にしたいのです。 映像ファイルから音声を取り出すのに使っているTMPGEncXPress4では正規化(ノーマライズ)とは別に音声均一化の「平均」というのがあります。 音声均一化の「平均」とは、全体の平均音量を調べ、その音量を「基準にする音量」で指定したdBになるよう調整します。 音声ファイルはSoundEngineFreeの音量調整では、オートマキシマイズは、聴覚的な音量レベルを検知し、設定した目標音量レベルに対して音量調整をするエフェクターです。 と説明されています。 この、音声均一化の「平均」とオートマキシマイズは同じものなのでしょうか? 目安として-10dB(ハードJ-POP)とか-12dB(ノーマルJ-POP)とか-13dB(ソフトJ-POP)の-xxdBの数値も同じと考えてよろしいのでしょうか? 映像の音量をTMPGEncXPress4で音声均一化の「平均」を使い-12dBに設定して音量調整し、音声だけをWAVファイルに出力した音量とSoundEngineのオートマキシマイズを使い-12dBに設定して音量調整したものは同じくらいの音量と考えてよろしいのでしょうか。 なにしろ、音が出てくると、dBとかが出てきてお年寄りには理解できません。 わけ分からない質問ですが音に詳しい方やさしく教えてください。

  • デシベル(dB)という単位について

    いつも参考にしています デシベル(dB)という単位についてご教示お願いします。 オーディオ機器で、デシベル(dB)の単位のメーターで、-∞から0までの範囲で メーターが触れますが、この-∞~0という値はどういったものなのでしょうか。 よくテレビでは騒音の測定で「~~は100dBの騒音だ」というのをやっていますが、 これとオーディオ機器のマイナスの値とは違うものなのでしょうか。 デシベルには相対的なものと絶対的なものがあるとWebで調べたのですが、それぞれの 0(または1?)の基準となる音量は何になっているのでしょうか。 また、オーディオのマイナスの値ものをよくテレビで言っているプラスの値に変換することは できるのでしょうか。 いろいろお聞きしてしまっていますが、ご教示お願いします。

  • MP3Gainについて

    MP3GainでMP3の音を一定にする事は出来たのですが、音量の設定値がいまいちだったようで・・・ 音量の設定のやり方は、□で囲んでいる『目標゛標準゛音量』と書いてる89dBという数字を95dB等に変えればいいのでしょうか? それと、一度変更した音量を戻す方法を教えて下さい。 因みに、日本語化パッチは入れてます。 是非分かる方宜しくお願いします。

  • どうしたら音が大きく出来ますか?

    オークションでGuyatoneのEDM-1というギターのPUを落札しました。 ギターアンプ(マーシャルMG15)につなぐと音は出るんですが、すごく小さいんです。 Guyatoneに問い合わせると、こんな返事でした。 [EDM-1]はエンクローズド・ダイナミックマイクですので、 出力は通常のエレキギターのPUよりかなり小さいです。 ギターアンプ等は入力レベルを-20dB程度に設定しているものが多いですが、 これですと増幅度が若干足らないと思います。 マイク入力端子(-45dB~-60dB)があるアンプでお試しいただくとかなり音量も上がると思います。 -45dB~-60dBとかいうのがどういうことか全然わからないんですけど、 ミキサーとかにつないでそれを僕のアンプにつなげば音は大きくなるのですか? 途中にエフェクターを挟むことは出来ますか? 教えてください。

  • 音量が少し小さいです。

    最近パソコンを購入し、自分でOS、ドライバをインストールしたのですが、音量が小さいのですがなぜですか?? デバイスマネージャの?マークが消え、多分しっかり入ってると思うし、「設定」-「マルチメディア」-「音楽CD」の音楽CDの音量も最高になっています。もしよかったら、教えてください。 それと、windowsを起動する時、windows98の画面が出た直後に一度真っ黒な画面が出て、文字化けした文字がたくさん出てきて、リターンを2度押さないと起動しません。起動したあとも、よく覚えていませんが、「msnp32.dllが見つかりません?一部のシステムが使用できません」というような感じなエラーメッセージがでます。なぜですか?もし、誰かわかるかた教えてください。 質問が多くなってすみませんが、最後にもう一つ質問があります。internetをやっている時に、pageを開くたびに「scriptエラー」と出ます。別に、internetには障害がないのですが毎回出てくるので気になるので教えてください。

  • mp3の音量とクリッピング歪み

    音量(音圧?)が小さいmp3ファイル(そのほとんどがなぜか古い曲)があるのでどうにかしたいと過去の質問を調べたところ、「SoundPlayer Lilith」というソフトを見つけ使ってみました。 ゲインを変更する際にピーク値を-0.01dBに設定するとクリッピングが発生しない範囲での最大音量ということになりますよね? でもこれで変換すると、音が小さいと思っていたファイルで元のファイルと比べて+0.06dB程度、普通だと思っていたファイルではマイナスになってしまいます。 つまり普通だと思っていたファイルはほとんどクリッピングが発生していたということですよね? 小さいと思っていたものが普通で、普通と思っていたものが大きかったということでしょうか? それともリッピングって普通ある程度は発生するものなのでしょうか? 公式HPに「過度のクリッピング歪みは最悪の場合、再生機器やスピーカーを損傷する恐れがあります。」と書いてありました。 ここで言う過度とは「最大値」のことでしょうかそれとも「回数」のことでしょうか? PeakではなくAvgの設定で-20.0dBが最適と書いてありましたが、これだとかなり音が小さくなってしまうものもあります。自分の持っているファイルはおそらく全部-20以上だと思います。 結局どうしたら良いのでしょうか? 全部Avgを-20.0dBに統一して、プレイヤーの音量を大きめにするのが良いかとも思ったのですが、普通のCD-DA方式のCDを聴くときとボリュームを変えるのも嫌だし、普通に取り込んだファイルをほとんど変換しないといけないというのも納得いかないです。それともmp3ってそういうものなのでしょうか? また、その場合音質は変わってしまったりするのでしょうか? あと、多少のクリッピングはOK(普通)だとしたら、どの程度までなのでしょうか? 質問多くてすみません。 音響関係に詳しい方、同じソフトを使っている方、よろしくお願いします。

  • iモーションの携帯着信音の音量を上げるのに苦労して

    います。 最近携帯を機種変更しました。P702iDからF-06Dに変わったのです。 GPS機能・辞書機能それにワンプッシュの開操作を条件にしたらこうなりました。 旧機種ではCDから抜き取ったお気に入りの音楽を着信音にしていましたので、 同じようにしたいと、機種変更時にデータ移行してもらった音楽(3gpファイル)を新機種でも着信音に再設定したいと思ったのですが、3gpデータはこのようなやり方でデータ移動した場合着信音に使えないことが分かりました。そこでパソコンからこのファイルをメールに添付して新機種に送信し、このデータを保存してこれを着信音に設定したのです。これはうまくいきました。しかし旧機種に比較してはるかに音量が小さいのです。それで再度ドコモに問い合わせると、メール添付のデータは音量が小さくなるといわれました。実は旧機種では、パソコンで仮のホームページを立ち上げてその頁にリンクさせた3gpファイルを携帯にダウンロードしていたことを思い出し、再度試してみましたが音量はそんなに変わりません。そこで今度は「MP3Gain」というソフトを使って、元々の音源のmp3の音量を上げることにしたのです。105dbにしたら少し音割れしましたが音量はまぁまぁになったのでこれを携帯にダウンロードしました。所がこれを着信音に設定しようとしても、このファイルにアクセスできないのです。メールに添付して送信保存の方法も試しましたが同じです。 ここへきてついに万策尽きてしまいました。以前のほうがはるかに音量も大きくクリアな音質だったので、こんなことなら変更しなければ「良かったという後悔の念が沸いてきますが後の祭りです。 どなたかアドヴァイスよろしくお願いいたします。

  • Win7+IE9を使用時、音量設定が保存されない

     当方、OSはWindous7、ブラウザはIE9を使用している者です。  よくメディアプレイヤーなどで音楽を聴いたりするのですが、プレイヤーの音量をMAXにしても聞こえる音が小さいので、システム側の音量(コントロールパネルでいじるやつです。正式名称はなんていうんだ……)を上げてみることにしました。  具体的には、音源ミキサーを開き、左から「スピーカー」「システム音量」「WMP」と並んでいるメニューの「スピーカー」と「WMP」の値を上げました(「WMP」の最大値を上げたら「スピーカー」も一緒に上がった)。  ここまではよかったのですが、その後、IE9を立ち上げてニコニコ動画やYoutubeを視聴したところ、音がでかい! 慌てて音源ミキサーを開くと先ほどのメニューの一番右に、新たに「IE」の項目が追加されていました。値は「スピーカー」「WMP」と同じです。  そこで、「IE」のボリュームを下げて一件落着……と思ったのですが、それから一旦ブラウザを終了させ、再度IE9を立ち上げてみると、先ほど設定した「IE」の音量設定がなぜか「スピーカー」「WMP」と同じ値にまで勝手に戻っていました。  ちなみに、一旦ブラウザを終了させるとメニューの中の「IE」項目は消失し、再度ブラウザを立ち上げ音楽がなるサイトにつないだら再び項目が現れました。この際、音量設定がリセットされた状態になっています。  わかりづらかったら申し訳ありません。簡単にいうと、Windowsの音量設定で変更したはずの「IE」のボリューム値が、ブラウザを再起動させるたびにリセットされてしまう、という状態になっています。  いちいち音量設定をいじるのは面倒ですし、かといって「スピーカー」の音量を変更して全体のボリューム値を下げたら「WMP」まで一緒になって小さい音になってしまう……。  何か、よい解決方法をご存知の方がいらっしゃいましたら、なにとぞご教授をお願いします。

専門家に質問してみよう