Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public partial class MainWindow : Window
- {
- private AudioLive MyLive;
- public MainWindow()
- {
- InitializeComponent();
- MyLive = new AudioLive();
- MyLive.Init();
- }
- private void ButtonStart(object sender, RoutedEventArgs e)
- {
- MyLive.StartLive();
- }
- private void ButtonEnd(object sender, RoutedEventArgs e)
- {
- MyLive.EndLive();
- }
- }
- class AudioLive
- {
- private WaveIn m_Recorder;
- private BufferedWaveProvider m_BufferedWaveProvider;
- private SavingWaveProvider m_SavingWaveProvider;
- private WaveOut m_Player;
- public void Dispose()
- {
- Dispose(true);
- }
- protected virtual void Dispose(bool disposing)
- {
- if (m_Recorder != null)
- {
- m_Recorder.Dispose();
- }
- m_Recorder = null;
- if (m_SavingWaveProvider != null)
- {
- m_SavingWaveProvider.Dispose();
- }
- m_SavingWaveProvider = null;
- }
- private void RecorderOnDataAvailable(object sender, WaveInEventArgs waveInEventArgs)
- {
- m_BufferedWaveProvider.AddSamples(waveInEventArgs.Buffer, 0, waveInEventArgs.BytesRecorded);
- }
- public bool Init()
- {
- m_Recorder = new WaveIn();
- m_Recorder.WaveFormat = new WaveFormat(44100, 2);
- m_Recorder.DataAvailable += RecorderOnDataAvailable;
- // set up our signal chain
- m_BufferedWaveProvider = new BufferedWaveProvider(m_Recorder.WaveFormat);
- return true;
- }
- public void StartLive()
- {
- m_SavingWaveProvider = new SavingWaveProvider(m_BufferedWaveProvider, "live.wav");
- // set up playback
- m_Player = new WaveOut();
- m_Player.Init(m_SavingWaveProvider);
- // begin playback & record
- m_Player.Play();
- m_Recorder.StartRecording();
- }
- public void EndLive()
- {
- // stop recording
- m_Recorder.StopRecording();
- // stop playback
- m_Player.Stop();
- m_Player.Dispose();
- // finalise the WAV file
- m_SavingWaveProvider.Dispose();
- }
- }
Add Comment
Please, Sign In to add comment