Фоновый звук приложения. Pascal

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Спасибо. Если можно, приведите пожалуйста пример программы, воспроизводящей фоновыый звук, ато, несмотря на то что вы мне подробно объяснили, я не пойму как создать все эти процедуры, инициализации и т.д. Если можно то, пожалуйста, напишите мне код, буду очень благодарен. И извините за то что занимаю ваше драгоценное время, вы мне уже какой раз помогаете.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Ладно, с процедурами я уже сам разобрался, а теперь опять проблема - Wav какого формата там нужно воспроизводить???
______
Вот данные, с которыми мне советывали выоспроизводить
Качество звука - 176 кб.с
Размер аудио образца - 8 бит
Каналы - 1(моно)
Частота дискритизации - 22 кГц
Формат аудио - PCM
_________
Сделал wav-ку с этими данными, почему не воспроизводится, хотя файл-пример, с точно такими же данными проигрывается без проблем?
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Ты лучше свой код покажи
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Код слишком длинный, сюда не помещается, вот он в Zip.
(Wav-player.ZIP)
И вот ещё wav-файл, который воспроизводится этой программой.
(WAV.ZIP).
Вложения
WAV.ZIP
(4.92 КБ) 26 скачиваний
Wav-player.ZIP
(2.5 КБ) 26 скачиваний
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Колядин Максим, оно тебе надо, так париться. Вот путь намного проще.

Код: Выделить всё

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) двух буфферов, чтобы не было прерывания звучания.
Главное просто разобраться в модуле, не надо искать готовых решений - надо чуть-чуть подумать просто и тогда может ты еще проще реализуешь то, что тебе нужно.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Нихрена себе, - ИГРАЕТ!!!!!! Блин, откуда ты всё знаешь?? Настоящий профессилнал! !!!Огромное спасибо!!!
А ты говоришь просто надо в модуле разобраться, как ты это делаешь, если к нему не прилогается никакой инструкции? Например, откуда ты знаешь, что в модуле Audio.tpu значат какие процедуры? Ещё раз, спасибо.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):если к нему не прилогается никакой инструкции? Например, откуда ты знаешь, что в модуле Audio.tpu значат какие процедуры
Ну так в том архиве что я выложил есть еще Audio.pas, там есть все процедуры и функции модуля. Просто прочитал и все...
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Понятно, вообщем проблема решена, ты мне снова очень помог, Спасибо!
Ответить