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ı?
Daqarta veya virtins multi-instrument işine yarayabilir. Ayrıca Audiocity de sinyal üretme imkanı var.
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
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)
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?
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;
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ı.
http://www.cncdesigner.com/wordpress/wp-content/uploads/Sinyal_Jenaratoru.zip (http://www.cncdesigner.com/wordpress/wp-content/uploads/Sinyal_Jenaratoru.zip)