Страница 2 из 2
Re: Фоновый звук приложения. Pascal
Добавлено: 13 дек 2006, 15:21
Колядин Максим
Спасибо. Если можно, приведите пожалуйста пример программы, воспроизводящей фоновыый звук, ато, несмотря на то что вы мне подробно объяснили, я не пойму как создать все эти процедуры, инициализации и т.д. Если можно то, пожалуйста, напишите мне код, буду очень благодарен. И извините за то что занимаю ваше драгоценное время, вы мне уже какой раз помогаете.
Re: Фоновый звук приложения. Pascal
Добавлено: 13 дек 2006, 22:41
Колядин Максим
Ладно, с процедурами я уже сам разобрался, а теперь опять проблема - Wav какого формата там нужно воспроизводить???
______
Вот данные, с которыми мне советывали выоспроизводить
Качество звука - 176 кб.с
Размер аудио образца - 8 бит
Каналы - 1(моно)
Частота дискритизации - 22 кГц
Формат аудио - PCM
_________
Сделал wav-ку с этими данными, почему не воспроизводится, хотя файл-пример, с точно такими же данными проигрывается без проблем?
Re: Фоновый звук приложения. Pascal
Добавлено: 13 дек 2006, 23:14
somewhere
Ты лучше свой код покажи
Re: Фоновый звук приложения. Pascal
Добавлено: 14 дек 2006, 00:32
Колядин Максим
Код слишком длинный, сюда не помещается, вот он в Zip.
(Wav-player.ZIP)
И вот ещё wav-файл, который воспроизводится этой программой.
(WAV.ZIP).
Re: Фоновый звук приложения. Pascal
Добавлено: 14 дек 2006, 10:45
somewhere
Колядин Максим, оно тебе надо, так париться. Вот путь намного проще.
Код: Выделить всё
uses Crt, Audio;
Type MySound = object(SoundBlasterPro)
procedure InBuffer(var Buffer; Size:Word); virtual;
procedure PlayBackReady; virtual;
end;
var
Aud : MySound;
Buf : Array [0..16383] of byte;
PlayEnd : boolean;
F : File;
procedure MySound.InBuffer(var Buffer; Size:Word);
var cnt : word;
begin
if not eof(F) then BlockRead(F, Buffer, Size, cnt);
end;
procedure MySound.PlaybackReady;
begin
PlayEnd := true;
end;
begin
Assign(F, 'Whitney.wav');
Reset(F, 1);
Aud.Init($220, 5, 1);
Aud.SetOutput(Mono, True);
ClrScr;
PlayEnd := false;
Aud.PlaySample(11025, filesize(F));
While (not keypressed) and (not PlayEnd) do
begin
GotoXY(1,1);
Writeln('Some idle process #',random(1000));
end;
Writeln('Playback finished');
end.
PlaybackReady - вызывается когда число проигранных сэмлов достигнет заданному в PlaySample значению.
InBuffer - подгружает внутренний буффер, модуль Audio сам делает своп (swap) двух буфферов, чтобы не было прерывания звучания.
Главное просто разобраться в модуле, не надо искать готовых решений - надо чуть-чуть подумать просто и тогда может ты еще проще реализуешь то, что тебе нужно.
Re: Фоновый звук приложения. Pascal
Добавлено: 14 дек 2006, 15:02
Колядин Максим
Нихрена себе, - ИГРАЕТ!!!!!! Блин, откуда ты всё знаешь?? Настоящий профессилнал! !!!Огромное спасибо!!!
А ты говоришь просто надо в модуле разобраться, как ты это делаешь, если к нему не прилогается никакой инструкции? Например, откуда ты знаешь, что в модуле Audio.tpu значат какие процедуры? Ещё раз, спасибо.
Re: Фоновый звук приложения. Pascal
Добавлено: 14 дек 2006, 16:21
somewhere
" писал(а):если к нему не прилогается никакой инструкции? Например, откуда ты знаешь, что в модуле Audio.tpu значат какие процедуры
Ну так в том архиве что я выложил есть еще Audio.pas, там есть все процедуры и функции модуля. Просто прочитал и все...
Re: Фоновый звук приложения. Pascal
Добавлено: 14 дек 2006, 17:15
Колядин Максим
Понятно, вообщем проблема решена, ты мне снова очень помог, Спасибо!