Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 19:26   #1
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
Вопрос Генерирование звука в Delphi7

Здравствуйте!

Подскажите пожалуйста, если кто то знает, как в Delphi7 можно сгенерировать звуковой сигнал с заданной частотой?

Последний раз редактировалось Miha85193; 02.06.2010 в 01:34.
Miha85193 вне форума Ответить с цитированием
Старый 01.06.2010, 20:51   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

1- вариант

2- вариант
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 01.06.2010, 23:49   #3
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Ужс... Вы чего хоть так молодёжь пугаете ...

Код:
function  BuildSinForm(Freq, SampRate, CurSamp, HB : DWORD) : SmallInt; stdcall;
var
 kSamp : extended;
begin
 kSamp := Pi2/(SampRate/Freq); //На сколько "поворачивается" Y в радианах на inc(CurSamp)
 Result := round(HB * Sin(CurSamp * kSamp));
end;
Miha85193, если не понятно, то учите математику.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 02.06.2010, 02:02   #4
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

Ну на счет математики вроде разобрался, а вот в остальном, не совсем понимаю, что должно приводить в эту функцию действие. Ведь генерация звуковых колебаний (как известно из физики) это циклическое явление. Да и потом, какой механизм этого всего, вообще не ясно. Думаю для понимания одной математикой тут не обойтись.
Miha85193 вне форума Ответить с цитированием
Старый 02.06.2010, 08:13   #5
Demi
Пользователь Подтвердите свой е-майл
 
Аватар для Demi
 
Регистрация: 28.03.2007
Сообщений: 52
По умолчанию

Двигайтесь в сторону BASS.DLL если хотите именно услышать звук..
Там есть такой пример.
GLEngine2D - сайт проекта
FreeRating Cайт нашей команды
Demi вне форума Ответить с цитированием
Старый 02.06.2010, 08:42   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
notHaker
Что-то я не понял а чем собсно beep не устроил?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2010, 09:27   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Вы чего хоть так молодёжь пугаете
собственно, а где в вашем способе генерация, исключая математику и чем beep() так страшен
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.06.2010, 11:06   #8
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Сколько критики...

Цитата:
BuildSinForm(Freq, SampRate, CurSamp, HB : DWORD)
Freq - генерируемая частота
SampRate - частота дескретизации
CurSamp - текущий сэмпл
HB - максимальная амплитуда

Цитата:
Думаю для понимания одной математикой тут не обойтись.
делаете цикл и вставляете вместо CurSamp значение i цикла и получаете на выходе функи значение амплитуды заданной частоты с учётом частоты дискретизации. И всё.

Цитата:
Пример
Код:
procedure TForm1.Button1Click(Sender : TObject); //Не помню как точно
var
  CurAmp : integer;
begin
for i := 0 to Form1.ClientWidth - 1 do
begin
  CurAmp := BuildSinForm(2, Form1.ClientWidth, i, Form1.ClientHeght div 2);
  Form1.Canvas.LineTo(i, CurAmp + Form1.ClientHeght div 2); //Рисуем график
end;
end;
Цитата:
Что-то я не понял а чем собсно beep не устроил?
Он ничему не учит.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 02.06.2010, 11:31   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Он ничему не учит.
ОФФТОП: Класная отмазка ))))))))))))))))))))))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2010, 13:33   #10
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

Цитата:
Что-то я не понял а чем собсно beep не устроил?
Всё было бы хорошо если бы у разработчиков этих функций, было не всё так плохо с фантазией. Есть Beeb - Object Pascal, и есть Beeb - WinAPI, с параметрами. Но последняя работает только в NT.
Miha85193 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проигрывание звука EdNovice Общие вопросы .NET 4 22.03.2009 20:30
Генерация звука N!ckeL Общие вопросы Delphi 1 19.06.2008 09:19
Воспроизведение звука Djaconda Общие вопросы C/C++ 14 09.06.2008 00:19
Воспроизведение звука! Небесный Мультимедиа в Delphi 7 20.10.2007 09:48