Помощь - Поиск - Пользователи - Календарь
Полная версия: Звуки в дельфи
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
TarasBer
Как реализовать на дельфе проигрыш звука заданной частоты? Я вот через писиспикер попробовал, таким вот модулем (текст взял с какого-то сайта), но он вылетает с ошибкой привеллегед инструктион.
volvo
Посмотри "DRKB -> Работа с графикой и мультимедиа -> Работа со звуком -> Как проиграть ноту", там показывается вариант с использованием Windows.Beep
TarasBer
Не , виндовз.бип мне не подходит, так как мне надо проигрывание тона на фоне других процессов, как процедура саунд в паскале. А лучше вообще не писиспикером а чем-нибудь менее противным.
volvo
Ну, тогда тебе прямая дорога к использованию MIDI Functions
TarasBer
Э, я надеюсь, там можно обойтись трёмя процедурами, или 20 строк подключения и проверок?
Что-то сложное вроде на вид. Неужели такое элементарное действие, как вывод звука, в дельфе делается на порядок сложнее чем в паскале?
volvo
Цитата
я надеюсь, там можно обойтись трёмя процедурами, или 20 строк подключения и проверок?
Использовал в проекте на чистом API - инициализация в 2 строки + 2 основных процедуры (MidiNoteOff, MidiNoteOn) вида:

function MidiOutMessage(hMidi: HMIDIOUT;  iStatus: integer;  iChannel: integer;
iData1: integer; iData2: integer): DWORD;
var
dwMessage: DWORD;
begin
dwMessage:= iStatus or iChannel or (iData1 shl 8) or (LongInt(iData2) Shl 16);
result := midiOutShortMsg(hMidi,dwMessage);
end;


function MidiNoteOff(hMidi: HMIDIOUT; iChannel: integer; iOct: integer;
iNote: integer; iVel: integer): DWORD;
begin
result := MidiOutMessage(hMidi,$080,iChannel,12*iOct+iNote,iVel);
end;
function MidiNoteOn(hMidi: HMIDIOUT; iChannel: integer; iOct: integer;
iNote: integer; iVel: integer): DWORD;
begin
result := MidiOutMessage(hMidi,$090,iChannel,12*iOct+iNote,iVel);
end;

использование совершенно прозрачно...
TarasBer
Использование не прозрачно, что писать в ивел и канал? А подключение как выглядит? И это какие модули подключать надо (или где качать), чтоб это всё компилировалось, такой вот глупый вопрос?
Вопрос про модули снимаю, модуль ммсистем нашёл.
TarasBer
Кажись разобрался с мидями, с помощью вот этой прекрасной странички: http://promidi.by.ru/delphi_midi/. Всё, спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.