Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Генератор звуковых частот   Найти похожие ветки 

 
cherrex ©   (2004-07-24 14:41) [0]

нужно создать программу по Генерации звуковых частот. Пользователь вводит частоту (рапример 357Гц), а программа генерирует звук. помогите пожалуйсто, а то я даже не знаю ч чего начать, а лучше примерчик или ссылку на информацию.


 
Ig ©   (2004-07-24 17:06) [1]

Ищи TToneGen v.2.15, там можно сделать все, что тебе надо и даже больше :)


 
Константинов ©   (2004-07-24 18:29) [2]

Самый простой пример:

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;  

// How to call the function:  

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

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php


 
cherrex ©   (2004-07-26 12:25) [3]

Большое спосибо!!!



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.029 c
1-1096705174
ninja
2004-10-02 12:19
2004.10.17
AnsiString


3-1095736353
jojo
2004-09-21 07:12
2004.10.17
Нужна помощь с запросом SQL


14-1096288159
quickblack
2004-09-27 16:29
2004.10.17
Нужен Delphi 7 или6


1-1096802636
sdw_syscoder
2004-10-03 15:23
2004.10.17
TListView и TTreeView - виндовс испортил


14-1096005299
MBo
2004-09-24 09:54
2004.10.17
Пятничные задачки. И простые и сложные...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский