Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проиграть звук определённой частоты [D7, XP]


komsomolec ©   (2005-11-26 19:37:00) 

Подскажите, пожалуйста, как проиграть звук определённой частоты используя звуковую карту?
Я пробовал использовать SetVoiceSound, но компилятору она не понравилась...


programania   (2005-11-28 01:27:00) [1]

>как проиграть звук определённой частоты используя звуковую карту?

Звук одной частоты слушать утомительно: в ушах начинает звенеть
Поэтому лучше музыкальный автомат - его можно выдержать дольше
http://programania.com/syn.zip    8кб
Играет через колонки сам или клавишами 0..9-= для delphi5 XP,
а лишнее выкинуть нетрудно, хотя интереснее добавить


упаковщик   (2005-11-27 22:54:00) [2]

Ну можешь записать в ресурс звук определённой частоты, а потом с помощью API функции "PlaySound" воспроизвести. Даже можешь в ресурс записать длительность звучания с запасом, а потом с помощью таймера и PlaySound воспроизвести с необходимой длительностью. Между прочим, записанные в ресурс звуки гитары, а потом воспроизведёные через таймер звучат куда лучше, чем сгенерированные миди звуковой картой:)

Если это не устраивает, то смотри справку по функциям API модуля MMSystem или установи компонент MidiGen, который может очень многое и с помощью которого, можно легко изучить функции API для midi.


komsomolec   (2005-11-27 20:51:00) [3]

Не-е-е, парни. Мне надо через звуковую карту и колонки, а не из System Speaker. Ваш Beeper выдаёт звук именно из System Speaker. Помогите, чем могете.


Antonn   (2005-11-27 18:32:00) [4]

begin...end ©   (26.11.05 20:00) [6]
WinXp pro, D7
а биип который по умолчанию. ну просто beep;
посмотрю, чем отличаются...


komsomolec   (2005-11-27 18:09:00) [5]

Кстати, ка правильно использовать SetVoiceSound?


komsomolec   (2005-11-27 18:04:00) [6]

Спасибо, только вот ответ реально страшноватый, как для начинающего :-)


begin...end   (2005-11-26 20:00:00) [7]

> Antonn ©   (26.11.05 19:53) [5]

Система какая? И какой Beep -- из Windows или из SysUtils?


Antonn   (2005-11-26 19:53:00) [8]

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


Antonn   (2005-11-26 19:49:00) [9]

begin...end ©   (26.11.05 19:48) [3]
Ну зачем так страшно, вопрос же про XP :-)

ну нравятся мне коды, реализованые ассемблерными вставками:)

> Это сейчас так модно? :-)

больше строчек - больше зарплата:))


begin...end   (2005-11-26 19:48:00) [10]

> Antonn ©   (26.11.05 19:43) [2]

Ну зачем так страшно, вопрос же про XP :-)

> mov eax, Win32Platform
> cmp eax, VER_PLATFORM_WIN32_NT

Это сейчас так модно? :-)

cmp Win32Platform, VER_PLATFORM_WIN32_NT


Antonn   (2005-11-26 19:43:00) [11]

procedure Beeper(Frequency, Duration: Integer);
asm
  push edx
  push eax
  mov eax, Win32Platform
  cmp eax, VER_PLATFORM_WIN32_NT
  jne @@9X
  call Windows.Beep
  ret
@@9X:
  pop eax
  pop edx
  push ebx
  push edx
  mov bx, ax
  mov ax, 34DDh
  mov dx, 0012h
  cmp dx, bx
  jnc @@2
  div bx
  mov bx, ax
  in al, 61h
  test al, 3
  jnz @@1
  or al, 3
  out 61h, al
  mov al, 0B6h
  out 43h, al
@@1:
  mov al, bl
  out 42h, al
  mov al, bh
  out 42h, al
  call Windows.Sleep
  in al, 61h
  and al, 0FCh
  out 61h, al
  jmp @@3
@@2:
  pop edx
@@3:
  pop ebx
end;


begin...end   (2005-11-26 19:41:00) [12]

Windows.Beep


Наверх

Титульная страница Поиск, карта сайта Написать письмо