デバイス指定してのWAVE再生


タロスケ  2007-02-03 04:20:18  No: 24741

API使ってのWAVEファイルの再生についてです。

http://forum.nifty.com/fdelphi/samples/01075.html

全くわからないので、まずはここのソースを元に、少しずつ勉強してるところですが、デバイスID「WavOutSetID」を指定して渡すと、WAVERR_BADFORMATが帰ってきます。
WAVE_MAPPERであれば、問題なく再生出来ています。
理由や調べるヒントなど教えていただければ幸いです。
よろしくお願いいたします。

FuncA('デバイス名');
waveOutOpen(@FhWavOut, WavOutSetID, PWaveFormatEx(FpSubchunk), DWORD(@waveOutProc),0,WAVE_FORMAT_QUERY);
//WAVERR_BADFORMAT => サポートされていないウェーブフォーム形式でオープンしようとしました。
//が返ってきちゃう

//再生デバイスID取得
function FuncA(WavOutName:String): Boolean;
var
  mmr : MMResult;
  caps: TWaveOutCaps;
  i, dwMaxDev: Integer;
begin
  Result:= False;
  WavOutSetID:= WAVE_MAPPER; //該当無ければWAVE_MAPPER

  dwMaxDev:= waveOutGetNumDevs(); //再生デバイスの個数
  if dwMaxDev = 0 then Exit;
  Result:= True;

  for i:=0 to dwMaxDev-1 do begin
    mmr:= waveOutGetDevCaps(i, @caps, SIZEOF(caps));
    case mmr of
      MMSYSERR_NOERROR : //正常
        if (WavOutName = caps.szPname) then
          WavOutSetID:= i;
      MMSYSERR_BADDEVICEID : //インデックス範囲外
        Break; 
      MMSYSERR_NODRIVER : //ドライバなし
        Continue;
    end;
  end;
end;


タロスケ  2007-02-03 05:28:48  No: 24742

追記いたします。

WAVEファイルが、PCM形式ですと問題なく再生でき、ADPCM形式ですと出来ないようです。
しかしながら、「PCM形式」しか再生できないとしても、その場合WAVE_MAPPERですとADPCM形式の再生が可能というところが判りません・・・

情報お待ちしております。
よろしくお願いいたします。


タロスケ  2007-02-05 18:31:02  No: 24743

文章が判りにくかったでしょうか。

PCM
  WAVE_MAPPER・デバイス指定:再生可能

ADPCM
  WAVE_MAPPER:再生可能
  デバイス指定:再生不可

よろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加