Merhaba. Bu konuda C# kodlama dili ile birlikte nasıl basit bir Ses Kayıt Programı / Ses Kaydedici yapılacağını göstereceğim. Bu işlem için NAudio NuGet paketini kullanacağız. Hemen başlayalım.
1. ADIM
NuGet üzerinden NAudio paketini yüklüyoruz. NAudio .NET Framework 4.7.2 ve sonraki sürümleri destekler.
2. ADIM
İlk önce iki adet Button, bir adet SaveFileDialog ekliyoruz. İlk Button'u kaydı başlatmak için, ikinci Button'u kaydı sonlandırmak için, SaveFileDialog'u ise wav dosyasının nereye kaydedileceğini seçmek için kullanacağız.
3. ADIM
İlk önce kodun en başına şunu ekliyoruz:
4. ADIM
public partial class Form1 : Form kodunun altına şunları yazıyoruz:
5. ADIM
Kaydı Başlat Button'a şu kodları yazıyoruz:
6. ADIM
Kaydı Durdur Button'a şu kodları yazıyoruz:
7. ADIM
Şimdi iki adet void oluşturacağız.
Kodun Tamamı:
Okuduğunuz için teşekkür ederim.
1. ADIM
NuGet üzerinden NAudio paketini yüklüyoruz. NAudio .NET Framework 4.7.2 ve sonraki sürümleri destekler.
2. ADIM
İlk önce iki adet Button, bir adet SaveFileDialog ekliyoruz. İlk Button'u kaydı başlatmak için, ikinci Button'u kaydı sonlandırmak için, SaveFileDialog'u ise wav dosyasının nereye kaydedileceğini seçmek için kullanacağız.
3. ADIM
İlk önce kodun en başına şunu ekliyoruz:
C#:
using NAudio.Wave;
4. ADIM
public partial class Form1 : Form kodunun altına şunları yazıyoruz:
C#:
private WaveInEvent waveIn;
private WaveFileWriter waveFileWriter;
5. ADIM
Kaydı Başlat Button'a şu kodları yazıyoruz:
C#:
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
waveIn = new WaveInEvent
{
WaveFormat = new WaveFormat(44100, 1)
};
waveIn.DataAvailable += OnDataAvailable;
waveIn.RecordingStopped += OnRecordingStopped;
waveFileWriter = new WaveFileWriter(saveFileDialog1.FileName, waveIn.WaveFormat);
waveIn.StartRecording();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
6. ADIM
Kaydı Durdur Button'a şu kodları yazıyoruz:
C#:
try
{
if (waveIn != null)
{
waveIn.StopRecording();
}
MessageBox.Show("dosya kaydedildi.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
7. ADIM
Şimdi iki adet void oluşturacağız.
C#:
private void OnDataAvailable(object sender, WaveInEventArgs e)
{
try
{
if (waveFileWriter != null)
{
waveFileWriter.Write(e.Buffer, 0, e.BytesRecorded);
waveFileWriter.Flush();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#:
private void OnRecordingStopped(object sender, StoppedEventArgs e)
{
try
{
waveFileWriter.Dispose();
waveIn.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Kodun Tamamı:
C#:
using System;
using System.Windows.Forms;
using NAudio.Wave;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private WaveInEvent waveIn;
private WaveFileWriter waveFileWriter;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
waveIn = new WaveInEvent
{
WaveFormat = new WaveFormat(44100, 1)
};
waveIn.DataAvailable += OnDataAvailable;
waveIn.RecordingStopped += OnRecordingStopped;
waveFileWriter = new WaveFileWriter(saveFileDialog1.FileName, waveIn.WaveFormat);
waveIn.StartRecording();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
if (waveIn != null)
{
waveIn.StopRecording();
}
MessageBox.Show("dosya kaydedildi.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void OnDataAvailable(object sender, WaveInEventArgs e)
{
try
{
if (waveFileWriter != null)
{
waveFileWriter.Write(e.Buffer, 0, e.BytesRecorded);
waveFileWriter.Flush();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void OnRecordingStopped(object sender, StoppedEventArgs e)
{
try
{
waveFileWriter.Dispose();
waveIn.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Okuduğunuz için teşekkür ederim.


