2011-12-11 23 views
7

Bazı kodlara baktım, her şey bazı matematiksel işlev dalgaları oluşturuyor gibi görünüyor, ancak tek bir ton veya özel tek tonlarla yapılan özel bir dalga istiyorum. Delphi ile tek bir ton veya özel dalga nasıl çalabilirim?

benim cevaba yakın olan bu How can I generate continuous tones of varying frequencies?

okuyun. Assumin waveOutWrite'i yukarıdaki linkte kullanacağım, amp/frek'in HWAVEOUT'daki her Örnek için nasıl hesaplandığını anlayamıyorum. Samples[i] := round(vol*sin(omega*t));

bazı amfi ile 15kHz frekans tek sesi istediğiniz varsayarsak (ki önemli değil), nasıl bir örnek [1] hesaplanır:

linkinden kodunda

Böyle yapmış?

cevap

9

sürekli (zaman) bir sinüs dalgası PI de, 3.14 ..., f Hertz olarak sesi frekansı ve t saniye olarak zamandır olduğu, A bir genlik A*sin(2*PI*f*t), olarak tanımlanabilir. Eğer sürekli zamanım yok çünkü zaman ayrık olduğundan

Şimdi, sen t yerine dt*i yerine ve dt numuneler veya 1/sample rate ve i arasındaki zamanı numune sayısı A*sin(2*PI*f*dt*i), olsun. Bunu A*sin(2*PI*(f/Fs)*i) olarak heceleyebilirsiniz. Belirli bir örnekleme oranını Fs (örnek/saniye veya basitçe Hz) seçtikten sonra, en yüksek tonun asla Fs/2 Hz'den daha büyük olamaz.

+0

Çok teşekkür ederim! – MitziMeow

İlgili konular