2011-06-21 18 views
2

私はMedia Playerコンポーネントでサウンドを録音できることを知っていますが、録音後にはそれを保存してから再生する必要があります。しかし、それを即座に演奏するか、またはカスタムディレイで演奏する方法はありますか?サウンドを録音して遅らせて再生する方法は?

答えて

3

LakeofSoft VC componentsで簡単に実行できます。彼らのvoice recording demoは好きなように動作します。

+1

無料で何か知っていますか? – Armin

+2

私は使用しませんでしたが、Delphi Area – SimaWB

+0

のウェーブオーディオパッケージ(http://www.delphiarea.com/products/delphi-packages/waveaudio/)を見れば私はこのパッケージを使用しました。 thx – Armin

2

あなたがでオーディオライブラリを試してみてください:http://www.un4seen.com/

「BASS」のDLLは、Windows XPとのWin 7で正常に動作彼らは非商用利用は無料です。ダウンロードには、オーディオファイルがまだメモリに保存されている間にオーディオファイルを保存せずに、オーディオファイルとして「保存」するか、オーディオファイルとして即座に「再生」できるようにするオーディオレコーダの単純なデルファイの例が含まれています。 「BASS」はDelphi 2007でうまく動作します。ここで

+0

@昨日と@SimaWB;あなたが導入したコンポーネントとdllは本当に素晴らしかったですが、残念ながら私は探していたものを見つけることができませんでした。他の方法で私を助けてくれますか? – Armin

+0

@Armin bass24.zipをダウンロードしてください。パッケージを解凍します。 'delphi'フォルダ、次に 'RecordTest'フォルダに移動します。メインパッケージフォルダに戻り、bass.dllをコピーしてRecordTestフォルダに貼り付けます。左ダブルRecordTest.dprをクリックします。これにより、コンパイラが起動します。例をロードします。例を実行します。これはbass.dllの使用を求めます。レコードボタンが記録されます。再生ボタンは、メモリから録音したものを再生します。 [保存]ボタンはファイルに保存されます。 tMediaPlayerで同様のことができますか?おそらく。イベントハンドラにカスタムコードを追加する必要があります。 – SteveJG

+0

@ SteveJG!私はBASS.DLLの使い方とコンパイラの実行方法を知っています!私はどのようにそれを行う方法を説明する前に、すべてのデモプログラムと 'レコードテスト'をチェックしました。私は声を録音して瞬時に(または0.5秒遅れて)再生したいと言っていたが、 'RecordTest'はうまく動かず、録音した声を瞬時に聞くことができなかった。ここでは、実行しないでくださいコンパイラ!今度はそれがはっきりすることを願ってちなみにBASS.DLLは素晴らしいです、ありがとうございました – Armin

1

はあなたがun4seenからRecordTest例を使用して、このような以下の機能を変更することができますhttp://www.un4seen.com/

からbass.dllでそれを行う方法です:

function RecordingCallback(Handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): boolean; stdcall; 
begin 
    BASS_StreamPutData(chan, buffer, length); // added: pass the captured data to the push stream 
    // Copy new buffer contents to the memory buffer 
    Form1.WaveStream.Write(buffer^, length); 
    // Allow recording to continue 
    Result := True; 

    Form1.WaveStream.Write(WaveHdr, SizeOf(WAVHDR)); 
    chan := BASS_StreamCreate(44100, 2, 0, STREAMPROC_PUSH, nil); // added: create a push stream 
    BASS_ChannelPlay(chan, False); // added: start it 
    // start recording @ 44100hz 16-bit stereo 
end; 


procedure TForm1.StopRecording; 
var 
    i: integer; 
begin 
    BASS_ChannelStop(rchan); 
    BASS_StreamFree(chan); // added: free the push stream 
    bRecord.Caption := 'Record'; 
    // complete the WAV header 
    WaveStream.Position := 4; 
    i := WaveStream.Size - 8; 
    WaveStream.Write(i, 4); 
    i := i - $24; 
    WaveStream.Position := 40; 
    WaveStream.Write(i, 4); 
    WaveStream.Position := 0; 
    // create a stream from the recorded data 
    chan := BASS_StreamCreateFile(True, WaveStream.Memory, 0, WaveStream.Size, 0); 
    if chan <> 0 then 
    begin 
     // enable "Play" & "Save" buttons 
     bPlay.Enabled := True; 
     bSave.Enabled := True; 
    end 
    else 
     MessageDlg('Error creating stream from recorded data!', mtError, [mbOk], 0); 
end; 

あなたが変更した後、レコードを押すと録音中に同時に音を鳴らします。

フォーラムでIanからこのコードを入手しました。

関連する問題