• Giriş

Gorsel Programlama

  • AnaSayfa
  • Hakkımızda
  • TOP-10 Proje
  • Download
  • Özel Ders
  • Reklam Verin
  • Destek
  • İletişim
RSS feed
  • Youdao
  • Xian Guo
  • Zhua Xia
  • Google
  • My Yahoo!
  • newsgator
  • Bloglines
  • iNezha
© 2009-2020 Gorsel Programlama

C# Ses Kaydı Programı

C# Ses Kaydı Programı

Daha fazlası için: gorselprogramlama.com

Bu uygulamanın tam halini görmek için iletişime geçebilirsiniz.(Programcı’nın Mail Adresi)

Programımıza başlamadan önce ilk olarak bunifu ve NAudio kütüphanelerimizi eklememiz gerekmekte. En alta linkleri bırakacağım sevgili okur.

Bunifu ekledikten sonra programımıza thinButton,bunifu.progressbar, tileButton ve iki adet label ekliyoruz. Tasarımızın aşağıdaki gibi yapıyoruz.

IMG-20190406-WA0004

Şimdi using kısımlarımızı ekliyoruz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Threading;
using System.Diagnostics;
using Bunifu.Framework.UI;
using System.Runtime.InteropServices;
using NAudio.CoreAudioApi;

Şimdi import etmemiz gereken dll’imizi tanımlıyoruz.

public partial class seskaydi : Form
 {
 public seskaydi()
 {
 InitializeComponent();
 }
 [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
 //İmport edilecek dll dosyamız.

 private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
 //Kayit için metodumuzu belirttik

Şimdi de load’ımızı tanımlayalım.

private void seskaydi_Load(object sender, EventArgs e)
 {
tmrKayitSure.Interval = 1000;//Bir saniyede çalışması için özelliğini belirttik.
tmrcm.Interval = 1;//saniyenin binde birinde çalışması için özelliğini tanımladık.
btnKayit.BackColor = Color.Transparent;//btnKayit arkaplanı transparan olsun dedik.
btnKayit.Visible = false;//btnKayit programın çalışma anında görünmez olsun .
tmrcm.Start();// Ses kaydımızın timerını şimdiden başlatalım.
var deviceEnumerator = new MMDeviceEnumerator();//cihazlarımızı saydıralım.
var devices = deviceEnumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);
//aktif ve giriş cihazlarını seçelim. (Capture:"Giriş",Active:"Aktif")
if (devices != null)//Eğer boş değilse
{
cmbMik.Items.AddRange(devices.ToArray());//cmbmik adlı comboboxumuza cihazlarımızı ekleyelim.
}
}

Ardından tmrKayitSure_Tick metodunu tanımlayalım.


private void tmr_Tick(object sender, EventArgs e)
 {
 string[] lbl = label1.Text.Split('.');//Süre labelimizi noktaya göre parçalayalım
 int[] saatdksn = new int[3];//3 boyutlu bir dizi tanımladık.
 saatdksn[0] = Convert.ToInt32(lbl[0]);//Süremizin saat kısmını tamamladığımız diziye attık.
 saatdksn[1] = Convert.ToInt32(lbl[1]);//Süremizin dakika kısmını tamamladığımız diziye attık.
 saatdksn[2] = Convert.ToInt32(lbl[2]);//Süremizin saniye kısmını tamamladığımız diziye attık.
 if(saatdksn[2] != 59)// Eğer saniyemiz 59 değil ise
 {
 label1.Text = saatdksn[0] + "." + saatdksn[1] + "." + (saatdksn[2] + 1);
 //saniye kısmını bir artırdık
 }
 else if(saatdksn[2]==59)//Eğer saniyemiz 59 ise
 {
 label1.Text = saatdksn[0] + "." + (saatdksn[1]+1) + "." + (0);
 //saniye kısmını sıfırlayıp dakika kısmını artıralım
 }
 if(saatdksn[1]==59 && saatdksn[2]==59)//Eğer dakika kısmı ve saniye kısmı 59 ise
 {
 label1.Text = (saatdksn[0]+1) + "." + 0 + "." + (0);
 //saat kısmını bir artırıp diğerlerini sıfırlayalım.
 }
 
 }

btnKaiyt_Click metodunu tanımlayalım.


private void btnKayit_Click(object sender, EventArgs e)
 {
 
 if(btnKayit.ButtonText== " ►")//eğer butonun texti play simgesi ise
 {
 btnKayit.ButtonText = "▐▐";//Buton metnini pause şeklinde yazdık
 tmrKayitSure.Start();//Kayit süremizi bir bir çalıştırdık.
 Record();//Kayda başladık.
 }
 else//eğer buton metni pause ise
 { 
 tmrKayitSure.Stop();//Kayıt süremizi durdurduk.
 btnKayit.ButtonText = " ►";//Buton metnimiz paly olsun dedik.
 SaveFileDialog dialog = new SaveFileDialog();//Kaydet diyaloğu tanımladık.
 dialog.Filter = "Ses Dosyası|*.wav";//dialog kaıt diyalogumuzu ses dosyası olarak filtreledik
 dialog.FileName = "adsiz.wav";//adsiz.wav olarak isim tanımladık.
if (dialog.ShowDialog()==DialogResult.OK)//Eğer dialoğumuzda tamam'a basılırsa
 {
 string dosyayolu = dialog.FileName;//Dosya yolumuzu aldık
 Save(dosyayolu);//Save metodumuz ile kaydettik.
 MessageBox.Show("Kaydedildi ✔", "-Bilgi-", MessageBoxButtons.OK, MessageBoxIcon.Information);
 //Mesaj kutumuzu "Kaydedildi" olarak gösterdik
 }
 else//Eğer dialogumuzda iptale tıklarsak
 {
 MessageBox.Show("Kaydedilmedi ✖", "-Bilgi-", MessageBoxButtons.OK, MessageBoxIcon.Information);
 //Mesaj kutumuzu "kaydedilmedi" olarak gösterdik
 }
 Closee();//Closee metodumuzu çalıştırdık.
 }
 }

Record,Closee,Save metodlarımızı tanımlamadığımız için hata verecek. Ancak şimdi bütün metotlarımızı tanımlayalım.


public static void Record()//Record metodu tanımladık
 {
 mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
 //Yönlendireceğimiz komutu tanımladık. (yeni wave tipinde record açalım.) 
 mciSendString("record recsound", "", 0, 0);
 }
 public static void Save(string path)//Dosya yoluna göre kaydeden save metodu tanımladık
 {
 mciSendString("save recsound " + path, "", 0, 0);//Dosya yolumuza kaydımızı kaydedelim.
 }

 public static void Closee()//Kaydı kapatama metodu tanımladık.
 {
 mciSendString("close recsound ", "", 0, 0);//Kaydı kapattık.
 }

tmrcm_Tick metodumuzu tanımlayalım.

private void tmrcm_Tick(object sender, EventArgs e)
 {
 if (cmbMik.SelectedItem != null)//Eğer mikrofon seçili ise
 {
 var device = (MMDevice)cmbMik.SelectedItem;//seçili mikrofonu cihaz olarak tanımladık.
 prgsSes.Value = (int)Math.Round(device.AudioMeterInformation.MasterPeakValue * 100);
 //Ses progressBarımız frekansa göre saniyenin binde birinde dolsun.
 }
 }


Form_Closing metodumuzu etkinleştirip aşağıdaki bloğu ekleyelim.


private void seskaydi_FormClosing(object sender, FormClosingEventArgs e)
 {
tmrcm.Stop();//Uygulamamız kapatılırken kayit süremiz dursun
tmrKayitSure.Stop();//Uygulamamız kapatılırken kayit süremiz dursun
 }

Sıradaki yapmamız gereken işlem ise combobox(cmbMik)’ımızdaki seçili öğe değişince ne olacağını yazmak…

private void cmbMik_SelectedIndexChanged(object sender, EventArgs e)
{
if(cmbMik.SelectedIndex!=-1)//Eğer mikrofonumuz seçili ise 
 {
btnKayit.Visible = true;//btnKayit görünür olsun dedik.
btnKaydedilenler.Visible = true;//btnKaydedilenler görünür olsun dedik.
 }
}

Son işlem olarak btnKaydedilenler butonuna tıkladıktan sonra olacakları yazalım ve uygulamamızı bitirelim.

private void btnKaydedilenler_Click(object sender, EventArgs e)
 {
 string acilacakDosya;//acilacakDosya yolu tanımladık. 
 acilacakDosya = @"C:\Users\onder\Music";//dosyayolunu acilacakDosya değişkenine atadık.
 Process.Start(acilacakDosya);//Dosya yolumuzdaki klasörü açtık
 }

Programımızın tam kod blogu ise şu şekilde olacak.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Threading;
using System.Diagnostics;
using Bunifu.Framework.UI;
using System.Runtime.InteropServices;
using NAudio.CoreAudioApi;
namespace seskaydi
{
 public partial class seskaydi : Form
 {
 public seskaydi()
 {
 InitializeComponent();
 }
 [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
 //İmport edilecek dll dosyamız.

 private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
 //Kayit için metodumuzu belirttik
 

 private void seskaydi_Load(object sender, EventArgs e)
 {
 tmrKayitSure.Interval = 1000;//Bir saniyede çalışması için özelliğini belirttik.
 tmrcm.Interval = 1;//saniyenin binde birinde çalışması için özelliğini tanımladık.
 btnKayit.BackColor = Color.Transparent;//btnKayit arkaplanı transparan olsun dedik.
 btnKayit.Visible = false;//btnKayit programın çalışma anında görünmez olsun .
 tmrcm.Start();// Ses kaydımızın timerını şimdiden başlatalım.
 var deviceEnumerator = new MMDeviceEnumerator();//cihazlarımızı saydıralım.
 var devices = deviceEnumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);
 //aktif ve giriş cihazlarını seçelim. (Capture:"Giriş",Active:"Aktif")
 if (devices != null)//Eğer boş değilse
 {
 cmbMik.Items.AddRange(devices.ToArray());//cmbmik adlı comboboxumuza cihazlarımızı ekleyelim.
 }
 }

 private void tmr_Tick(object sender, EventArgs e)
 {
 string[] lbl = label1.Text.Split('.');//Süre labelimizi noktaya göre parçalayalım
 int[] saatdksn = new int[3];//3 boyutlu bir dizi tanımladık.
 saatdksn[0] = Convert.ToInt32(lbl[0]);//Süremizin saat kısmını tamamladığımız diziye attık.
 saatdksn[1] = Convert.ToInt32(lbl[1]);//Süremizin dakika kısmını tamamladığımız diziye attık.
 saatdksn[2] = Convert.ToInt32(lbl[2]);//Süremizin saniye kısmını tamamladığımız diziye attık.
 if(saatdksn[2] != 59)// Eğer saniyemiz 59 değil ise
 {
 label1.Text = saatdksn[0] + "." + saatdksn[1] + "." + (saatdksn[2] + 1);
 //saniye kısmını bir artırdık
 }
 else if(saatdksn[2]==59)//Eğer saniyemiz 59 ise
 {
 label1.Text = saatdksn[0] + "." + (saatdksn[1]+1) + "." + (0);
 //saniye kısmını sıfırlayıp dakika kısmını artıralım
 }
 if(saatdksn[1]==59 && saatdksn[2]==59)//Eğer dakika kısmı ve saniye kısmı 59 ise
 {
 label1.Text = (saatdksn[0]+1) + "." + 0 + "." + (0);
 //saat kısmını bir artırıp diğerlerini sıfırlayalım.
 }
 
 }

 private void btnKayit_Click(object sender, EventArgs e)
 {
 
 if(btnKayit.ButtonText== " ►")//eğer butonun texti play simgesi ise
 {
 btnKayit.ButtonText = "▐▐";//Buton metnini pause şeklinde yazdık
 tmrKayitSure.Start();//Kayit süremizi bir bir çalıştırdık.
 Record();//Kayda başladık.
 }
 else//eğer buton metni pause ise
 { 
 tmrKayitSure.Stop();//Kayıt süremizi durdurduk.
 btnKayit.ButtonText = " ►";//Buton metnimiz paly olsun dedik.
 SaveFileDialog dialog = new SaveFileDialog();//Kaydet diyaloğu tanımladık.
 dialog.Filter = "Ses Dosyası|*.wav";//dialog kaıt diyalogumuzu ses dosyası olarak filtreledik
 dialog.FileName = "adsiz.wav";//adsiz.wav olarak isim tanımladık.
if (dialog.ShowDialog()==DialogResult.OK)//Eğer dialoğumuzda tamam'a basılırsa
 {
 string dosyayolu = dialog.FileName;//Dosya yolumuzu aldık
 Save(dosyayolu);//Save metodumuz ile kaydettik.
 MessageBox.Show("Kaydedildi ✔", "-Bilgi-", MessageBoxButtons.OK, MessageBoxIcon.Information);
 //Mesaj kutumuzu "Kaydedildi" olarak gösterdik
 }
 else//Eğer dialogumuzda iptale tıklarsak
 {
 MessageBox.Show("Kaydedilmedi ✖", "-Bilgi-", MessageBoxButtons.OK, MessageBoxIcon.Information);
 //Mesaj kutumuzu "kaydedilmedi" olarak gösterdik
 }
 Closee();//Closee metodumuzu çalıştırdık.
 }
 }
 public static void Record()//Record metodu tanımladık
 {
 mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
 //Yönlendireceğimiz komutu tanımladık. (yeni wave tipinde record açalım.) 
 mciSendString("record recsound", "", 0, 0);
 }
 public static void Save(string path)//Dosya yoluna göre kaydeden save metodu tanımladık
 {
 mciSendString("save recsound " + path, "", 0, 0);//Dosya yolumuza kaydımızı kaydedelim.
 }

 public static void Closee()//Kaydı kapatama metodu tanımladık.
 {
 mciSendString("close recsound ", "", 0, 0);//Kaydı kapattık.
 }

 private void tmrcm_Tick(object sender, EventArgs e)
 {
 if (cmbMik.SelectedItem != null)//Eğer mikrofon seçili ise
 {
 var device = (MMDevice)cmbMik.SelectedItem;//seçili mikrofonu cihaz olarak tanımladık.
 prgsSes.Value = (int)Math.Round(device.AudioMeterInformation.MasterPeakValue * 100);
 //Ses progressBarımız frekansa göre saniyenin binde birinde dolsun.
 }
 }

 private void seskaydi_FormClosing(object sender, FormClosingEventArgs e)
 {
 tmrcm.Stop();//Uygulamamız kapatılırken kayit süremiz dursun
 tmrKayitSure.Stop();//Uygulamamız kapatılırken kayit süremiz dursun
 }

 private void cmbMik_SelectedIndexChanged(object sender, EventArgs e)
 {
 if(cmbMik.SelectedIndex!=-1)//Eğer mikrofonumuz seçili ise 
 {
 btnKayit.Visible = true;//btnKayit görünür olsun dedik.
 btnKaydedilenler.Visible = true;//btnKaydedilenler görünür olsun dedik.
 }
 }

 private void btnKaydedilenler_Click(object sender, EventArgs e)
 {
 string acilacakDosya;//acilacakDosya yolu tanımladık. 
 acilacakDosya = @"C:\Users\onder\Music";//dosyayolunu acilacakDosya değişkenine atadık.
 Process.Start(acilacakDosya);//Dosya yolumuzdaki klasörü açtık
 }
 }
}
/*abdurrahman.onder@ogr.sakarya.edu.tr
 Masaüstü yazılım danışmanlığı ve geliştiriciliği yapıyorum. 
 Fikri olan ve program siparişi olanların programlarını yazarım*/

 

http://www.gorselprogramlama.com/wp-content/uploads/2019/04/sesKaydı.mp4

Program hafızası fazla olduğu için .zip şeklinde paylaşamıyorum 🙂 Ancak Programı kaynak olarak isteyecek olanlar mail atabilir. Sorgusuz sualsiz kaynak kodları kendileri ile paylaşacağım…

Drive adresi.

Mail Adresim: abdurrahman.onder@ogr.sakarya.edu.tr

Paylaş :
Tweet
Yorum Yazın | Geri
6 Nisan Cumartesi,2019 Tarihinde Yayınlanmıştır. Bulunduğu Kategori : C#, Görsel Programlama, GorselProgramlama.Com, Videolar
Etiket:
« C# Sesli Komut ile Renk Değiştirme C# Mobilya Mağazası Ürün ve Müşteri Takip Programı »
  1. hamza
    Cevap | Gönder
    Mar 15th, 2020 at 18:35 | #1

    dadasmail.com abi dosya ile atarmısın açil

Yorum Yazın ...

Cevabı İptal
XHTML: Bu Etiketleri Kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
RSS Bu Yazıya Yapılan Yorumlar


Site içi Arama

Takip et: @GorselProgram







Böyle bir web sayfam olsun diyorsanız iletişim bölümünden veya gorselprogram@gmail.com mail adresinden bize ulaşabilirsiniz.

Son Yazılar

  • C# Console Application İçi Boş Üçgen
  • C# WindowsForm Çekiliş Uygulaması
  • C# WindowsForm Login Remember Me (Remember me Checkbox)
  • Migros market 2 Reklam Banner Örneği — Flash
  • C# WindowsForm ile TC Kimlik Numarası, İsim, Soyisim, E-Mail Kontrol Yapıları

Etiket Bulutu

.NET Application basit C# C#.NET application C#.NET codes C#.NET examples C#.NET lessons C#.NET practice C#.net örnekleri c# console dersleri c# console örnekleri C# ders c# dersleri c# örnek c# örnekleri C.net dersleri c dersleri code console console örnekleri Csharp csharp dersleri csharp net csharp örnekleri c örnekleri download Flash örnekleri forms Forms örnekleri full indir kod kodlar nesne tabanlı programlama OleDbConnection OleDbDataAdapter tam sürüm uygulama vb net win windows windows forms application örnek ücretsiz

Kategoriler

  • Access (59)
  • Akış Diyagramı Flowchart (69)
  • Android Eğitimleri (2)
  • Asp Net (47)
  • C# (830)
  • C# Console (222)
  • Css (19)
  • Dersler (191)
  • Dökümanlar (21)
  • Dreamweaver (12)
  • Excel (8)
  • Fireworks (27)
  • Flash (76)
  • Görsel Programlama (419)
  • GorselProgramlama.Com (8)
  • Html (34)
  • Pascal (2)
  • Photoshop (5)
  • PHP (2)
  • Planlar (114)
  • Programlama Tanım (4)
  • Sınavlar (128)
  • Sql (10)
  • VB 6.0 (45)
  • VB.NET (219)
  • Videolar (65)
  • Word (7)

Arşiv

Bağlantılar

  • Html Dersleri
  • Muslu.NET
  • Programlama Dersleri

Kimler Sitede ?


    Computers Blogs Top programming blogs

   sayaç Powered by WordPress | Theme by NeoEase | Valid XHTML 1.1 and CSS 3 Yukarı