Форум: "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.041 c