Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Как подать на колонки звук определенной частоты???   Найти похожие ветки 

 
rolex   (2005-07-24 20:06) [0]

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


 
DrPass ©   (2005-07-24 21:37) [1]

windows.beep


 
Sound   (2005-07-24 22:19) [2]

auxGetDevCaps
auxGetNumDevs
auxGetVolume
auxOutMessage
auxSetVolume
PlaySound
sndPlaySound
waveInAddBuffer
waveInClose
waveInGetDevCaps
waveInGetErrorText
waveInGetID
waveInGetNumDevs
waveInGetPosition
waveInMessage
waveInOpen
waveInPrepareHeader
waveInProc
waveInReset
waveInStart
waveInStop
waveInUnprepareHeader
waveOutBreakLoop
waveOutClose
waveOutGetDevCaps
waveOutGetErrorText
waveOutGetID
waveOutGetNumDevs
waveOutGetPitch
waveOutGetPlaybackRate
waveOutGetPosition
waveOutGetVolume
waveOutMessage
waveOutOpen
waveOutPause
waveOutPrepareHeader
waveOutProc
waveOutReset
waveOutRestart
waveOutSetPitch
waveOutSetPlaybackRate
waveOutSetVolume
waveOutUnprepareHeader
waveOutWrite

Хотя, есть хороший компонент - MidiGen. Если нужно, ищи на Torry.


 
rolex   (2005-07-25 11:36) [3]


>
> DrPass ©   (24.07.05 21:37) [1]
> windows.beep

Нужно из колонок, а не из системного динамика.


> Sound   (24.07.05 22:19) [2]

MidiGen - установил, нету там такого.


 
CTPAX.RU ©   (2005-08-11 18:13) [4]

Люди, ну ответьте кто-нибудь поподробнее. Это многим надо. Желательно, чтобы можно было задавать не только частоту, но и длительность, и другие параметры звучания.


 
wnew ©   (2005-08-14 01:04) [5]


> rolex   (25.07.05 11:36) [3]
> MidiGen - установил, нету там такого.


Вчера  пытался возразить, но с дельфийскими мастерами что-то не не так было, поэтому не прошло. Повторяю.

Всё необходимое в MidiGen есть. Буквенное обозначение нот, чем не частота?
procedure TForm1.Button3Click(Sender: TObject);
begin
 MidiGen1.Instrument := mgAcousticSteelGuitar;
 MidiGen1.Duration := 100;
 MidiGen1.PlayString("C4,50;D,E,F,G,A,B");

end;


А выбором инструмента можете звук окрашивать от флейты до барабана:)

Можно и без этих компонентов:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled := True;
 Timer1.Interval := 1000;
 PlaySound("EINS",HInstance,SND_ASYNC or SND_RESOURCE or SND_NODEFAULT);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 PlaySound("DREI",HInstance,SND_ASYNC or SND_RESOURCE or SND_NODEFAULT);
 Timer1.Interval := 400;
 Timer1.Enabled := False;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
срабатывает по событию таймера.

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


 
vrem   (2005-08-14 08:29) [6]

rolex   (24.07.05 20:06)
Посмотри эту программу. Реализуется согласно [2], может изменишь под себя. Ха, 96-го года, но компилируется под дельфи 7 без пинков :)

На странице http://bbs.ru/cgi-bin/bbs2html?pub/language/delphi
находишь это:

sweepgen.arj    13k Dec-96  SweepGen turns a sound-equipped PC into an  Audio
                              Oscillator and Sweep Generator.   SweepGen is
                              written with Borland"s Delphi  2.0, and full
                              source is included, which  will be helpful in
                              understanding  programming sound hardware under
                              Windows.


 
CTPAX.RU ©   (2005-08-14 10:27) [7]

А где скачать MidiGen? Слово Torry мне мало что говорит.


 
Zeqfreed ©   (2005-08-15 01:42) [8]

CTPAX.RU ©   (14.08.05 10:27) [7]
http://www.yandex.ru/yandsearch?rpt=rad&text=torry
А слово яндекс о чем-нибудь говорит? Первый линк.


 
Zeqfreed ©   (2005-08-15 01:46) [9]

rolex   (24.07.05 20:06)
Кстати, по сабжу =)


uses mmSystem;

procedure MakeSound(Frequency,Duration : Integer);
var
WaveFormatEx: TWaveFormatEx;
MS: TMemoryStream;
i, TempInt, DataCount, RiffCount: integer;  
SoundValue: byte;  
w: double; // omega ( 2 * pi * frequency)
SampleRate : Integer;
const
Mono: Word = $0001;
RiffId: string = "RIFF";
WaveId: string = "WAVE";
FmtId: string = "fmt ";  
DataId: string = "data";  
begin
SampleRate := 44100;
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;


Линк на источник, к сожалению, утерян.


 
CTPAX.RU ©   (2005-08-15 09:06) [10]

> А слово яндекс о чем-нибудь говорит?
 -(со злобой в голосе): Форумы в т.ч. для того и существуют, чтобы не лазить по поисковикам, а спросить у знающих людей и быстро перейти по КОНКРЕТНОЙ ссылке типа этой:
http://www.delphi32.com/vcl/5039 .


 
vrem   (2005-08-15 10:41) [11]

>спросить у знающих людей и быстро перейти
Точно! И ещё что бы формулировали определённым образом. а то что такое - ну может ответили, но не в привычной/ожидаемой форме. Воспринять и не получилось... да ещё злоба появилась. вот и ходи после такого по форумам...
;)


 
Zeqfreed ©   (2005-08-15 12:45) [12]

CTPAX.RU ©   (15.08.05 9:06) [10]
Т.е. тебе гораздо легче написать вопрос в форум и неизвестно сколько ждать ответ, который посредством поисковиков находится на несколько секунд? По-моему, это, как минимум, странно.



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

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
14-1135887087
Труп Васи Доброго
2005-12-29 23:11
2006.01.22
Радионаушники


1-1135057258
Separator
2005-12-20 08:40
2006.01.22
Поиск чеков на определенную сумму


1-1134906574
The Only
2005-12-18 14:49
2006.01.22
wm_keydown и memo


14-1135767143
Pete
2005-12-28 13:52
2006.01.22
нужна помощь в оценке проекта...


4-1131829875
nilin2005
2005-11-13 00:11
2006.01.22
переполнение буфера