Picproje Elektronik Sitesi

DİJİTAL & ANALOG ELEKTRONİK => Ses Frekansı => Müzik Elektroniği => Konuyu başlatan: z - 17 Kasım 2015, 06:37:40

Başlık: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: z - 17 Kasım 2015, 06:37:40
Bu günlerde ses sinyal jenaratörüne ihtiyacım var.

Devre kuracaktım ki PC ses kartını kullanabilirsem devreydi beslemeydi uğraşmama gerek kalmayacak ve ses sinyalini kulaklık çıkışından alabilirim.

Bunun için hazır program yada Delphi için örnek kod bilen varmı?
Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: zipzip - 17 Kasım 2015, 08:04:46
Daqarta veya  virtins multi-instrument işine yarayabilir. Ayrıca Audiocity de sinyal üretme imkanı var.
Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: polleme - 17 Kasım 2015, 08:09:39
Bu yapılır ama ses kartı çıkışına devreden gelecek ters bir gerilimle zarar verme ihtimaline karşı tedbirli olmak gerek. Bunun için bir buffer kullanabilirsiniz ama yine küçük de olsa bir devre yapımı ve yine bir besleme gündeme gelecektir. Bir örnek:

https://sites.google.com/site/hobbydebraj/home/pc-based-signal-generator
Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: OG - 17 Kasım 2015, 11:16:43
http://www.planet-source-code.com (http://www.planet-source-code.com)
buradan bulup derlediğim basit bir şey
http://s3.dosya.tc/server6/2szzz7/SinTH.exe.html (http://s3.dosya.tc/server6/2szzz7/SinTH.exe.html)

mesaj birleştirme:: 17 Kasım 2015, 11:28:32

Bu daha güzelmiş

http://www.dosya.tc/server5/qgc9vz/Oscillator.exe.html (http://www.dosya.tc/server5/qgc9vz/Oscillator.exe.html)

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=39362&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=39362&lngWId=1)
Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: z - 17 Kasım 2015, 15:31:59
Alıntı yapılan: polleme - 17 Kasım 2015, 08:09:39
Bu yapılır ama ses kartı çıkışına devreden gelecek ters bir gerilimle zarar verme ihtimaline karşı tedbirli olmak gerek. Bunun için bir buffer kullanabilirsiniz ama yine küçük de olsa bir devre yapımı ve yine bir besleme gündeme gelecektir. Bir örnek:

https://sites.google.com/site/hobbydebraj/home/pc-based-signal-generator

Kulaklık çıkışı ile kulaklığı süren çip arasında kapasitif kuplaj yokmu?
Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: z - 17 Kasım 2015, 18:15:57

uses
  MMSystem;
type
  TVolumeLevel = 0..127;

procedure MakeSound(Frequency{Hz}, Duration{mSec}: Integer; Volume: TVolumeLevel);
  {writes tone to memory and plays it}
var
  WaveFormatEx: TWaveFormatEx;
  MS: TMemoryStream;
  i, TempInt, DataCount, RiffCount: integer;
  SoundValue: byte;
  w: double; // omega ( 2 * pi * frequency)
const
  Mono: Word = $0001;
  SampleRate: Integer = 11025; // 8000, 11025, 22050, or 44100
  RiffId: string = 'RIFF';
  WaveId: string = 'WAVE';
  FmtId: string = 'fmt ';
  DataId: string = 'data';
begin
  if Frequency > (0.6 * SampleRate) then
  begin
    ShowMessage(Format('Sample rate of %d is too Low to play a tone of %dHz',
      [SampleRate, Frequency]));
    Exit;
  end;
  with WaveFormatEx do
  begin
    wFormatTag := WAVE_FORMAT_PCM;
    nChannels := Mono;
    nSamplesPerSec := SampleRate;
    wBitsPerSample := $0008;
    nBlockAlign := (nChannels * wBitsPerSample) div 8;
    nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
    cbSize := 0;
  end;
  MS := TMemoryStream.Create;
  with MS do
  begin
    {Calculate length of sound data and of file data}
    DataCount := (Duration * SampleRate) div 1000; // sound data
    RiffCount := Length(WaveId) + Length(FmtId) + SizeOf(DWORD) +
      SizeOf(TWaveFormatEx) + Length(DataId) + SizeOf(DWORD) + DataCount; // file data
    {write out the wave header}
    Write(RiffId[1], 4); // 'RIFF'
    Write(RiffCount, SizeOf(DWORD)); // file data size
    Write(WaveId[1], Length(WaveId)); // 'WAVE'
    Write(FmtId[1], Length(FmtId)); // 'fmt '
    TempInt := SizeOf(TWaveFormatEx);
    Write(TempInt, SizeOf(DWORD)); // TWaveFormat data size
    Write(WaveFormatEx, SizeOf(TWaveFormatEx)); // WaveFormatEx record
    Write(DataId[1], Length(DataId)); // 'data'
    Write(DataCount, SizeOf(DWORD)); // sound data size
    {calculate and write out the tone signal} // now the data values
    w := 2 * Pi * Frequency; // omega
    for i := 0 to DataCount - 1 do
    begin
      SoundValue := 127 + trunc(Volume * sin(i * w / SampleRate)); // wt = w * i / SampleRate
      Write(SoundValue, SizeOf(Byte));
    end;
    {now play the sound}
    sndPlaySound(MS.Memory, SND_MEMORY or SND_SYNC);
    MS.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MakeSound(1200, 1000, 60);
end;

Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: Mucit23 - 17 Kasım 2015, 20:29:22
Abi android telefon kullanıyorsan bu konuda birkaç güzel uygulama var. Şiddetle tavsiye ederim.

Frekans aralığı elbette donanımın müsade ettiği sınırlar içerisindedir.
Bunları bir incele
https://play.google.com/store/search?q=frequency%20generator&c=apps&docType=1&sp=CAFiFQoTZnJlcXVlbmN5IGdlbmVyYXRvcnoFGADAAQKKAQIIAQ%3D%3D%3AS%3AANO1ljKSRhA&hl=tr
Zamanında FFT ile çalışıyorken bana bayağı bir kolaylık sağlamıştı.
Başlık: Ynt: PC ses kartından ses sinyal jenaratörü yapmak
Gönderen: z - 18 Kasım 2015, 02:04:12
http://www.cncdesigner.com/wordpress/wp-content/uploads/Sinyal_Jenaratoru.zip (http://www.cncdesigner.com/wordpress/wp-content/uploads/Sinyal_Jenaratoru.zip)