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

Вниз

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

 
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 вся ветка

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

Наверх





Память: 0.48 MB
Время: 0.048 c
5-1121079938
Dimk
2005-07-11 15:05
2006.01.22
Как использовать созданные в Delphi компоненты в C++ Builder


2-1136449174
JOYMAN
2006-01-05 11:19
2006.01.22
Поверх всех окон сделать


2-1136544210
Bopros
2006-01-06 13:43
2006.01.22
Маленькой приложение с Build with runtime packages


4-1131650096
Consigliere
2005-11-10 22:14
2006.01.22
Уважаемые господа подскажите как отключить порты.


14-1135671516
ronyn
2005-12-27 11:18
2006.01.22
paramstr





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский