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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2011, 19:24   #1
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию Проиграть данные с модема с методом Bass.dll

Здравствуйте форумчане!!!
Подскажите кто нибудь, как проиграть данные с модема с помощью bass.dll. Звуковые данные я получаю воспроизвожу с помощью ACMWaveOut хотелось бы с помощью Bass без сохранения в файл, сразу с буфера.

Последний раз редактировалось Aliens_wolfs; 13.06.2011 в 19:42.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.06.2011, 20:15   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

выбери это устройство через Bass_Init и делай с ним что хочешь...
ZuBy вне форума Ответить с цитированием
Старый 13.06.2011, 20:36   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

if not BASS_Init(-1, 8000, 0, Handle, nil) then
begin
ShowMessage('Can''t initialize device');
Exit;
end;

...........
stream:=BASS_StreamCreate(8000, 1, 0, buf, 0);
BASS_ChannelPlay(stream,true);

Не получается выдает ошибку.
А вот с stream:=BASS_StreamCreateFile(false , PChar(Filename), 0, 0, 0); работает постоянно файл приходится создавать. Мне нужно с буфера сразу воспроизводить

Последний раз редактировалось Aliens_wolfs; 13.06.2011 в 20:49.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.06.2011, 20:46   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

что за ошибка?
ZuBy вне форума Ответить с цитированием
Старый 13.06.2011, 20:55   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Ошибка Privileged instruction

Как
BASS_ChannelPlay(stream,true);
эту строку отключаю ошибка непоявляется

работает так
stream:=BASS_StreamCreateFile(false , PChar(Filename), 0, 0, 0);
BASS_ChannelPlay(stream,true);
Неудобно что приходиться в этот файл заголовок создавать

Последний раз редактировалось Aliens_wolfs; 13.06.2011 в 20:59.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.06.2011, 20:59   #6
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

а что у тебя модем стоит дефалтным в системе?
ZuBy вне форума Ответить с цитированием
Старый 13.06.2011, 21:08   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Модем простой с подержкой голосовых данных, написал прогу которая открывает порт и с помощью модемных команд я получаю звуковые данные вот эти данные хочу воспроизвести с помощью Bass. С помощью модуля ACMWaveOut воспроизводит.

procedure TForm1.Button2Click(Sender: TObject);
begin
ComPorts.WriteStr('AT+FCLASS=8'+#13 ); //переход в голосовые данные модема
ComPorts.WriteStr('AT+VSM=128,8000' +#13); //формат голосовых данных ADPCM
ComPorts.WriteStr('AT+VLS=1'+#13); //снимать звук с линии
ComPorts.WriteStr('AT+VRX'+#13); //получаю данные
Plays:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ComPorts.Open('COM6',115200,8,0,1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if not BASS_Init(-1, 8000, 0, Handle, nil) then
begin
ShowMessage('Can''t initialize device');
Exit;
end;
ComPorts:=TComPorts.Create;
ComPorts.OnRead:=OnReadComPort;
end;

//Функция получения данных с буфера модема
procedure TForm1.OnReadComPort(Sender: TObject; ComPort: TComPort);
var
stream : HSTREAM;
begin
if Plays then
begin
BASS_SetConfig(BASS_CONFIG_BUFFER, ComPort.BufSize);
stream:=BASS_StreamCreate(8000, 1, 0, ComPort.BuF, 0);
BASS_ChannelPlay(stream,true);
Bass_StreamFree(stream);
end;
end;

Мне нужно работать с Буфером с помощью Bass

Последний раз редактировалось Aliens_wolfs; 13.06.2011 в 23:37.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.06.2011, 21:12   #8
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

нее, я вот о чем

if not BASS_Init(-1, 8000, 0, Handle, nil) then
"-1" - звук. устройство по умолчанию, тебе надо его заменить на индекс модема (может 2?)
ZuBy вне форума Ответить с цитированием
Старый 13.06.2011, 21:57   #9
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Сейчас попробую

if not BASS_Init(2, 8000, 0, Handle, nil) then
begin
ShowMessage('Can''t initialize device');
Exit;
end;

выдает ошибку

с другими индексами тоже ошибка
Инициализация не проходит

тут видимо нужно с BASS_StreamCreate правильно работать

Последний раз редактировалось Aliens_wolfs; 13.06.2011 в 22:41.
Aliens_wolfs вне форума Ответить с цитированием
Старый 14.06.2011, 08:52   #10
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

попробуй так
Код:
var
stream : HSTREAM;
begin
if Plays then 
begin
//BASS_SetConfig(BASS_CONFIG_BUFFER, ComPort.BufSize);
stream:=BASS_StreamCreateFile(true, ComPort.BuF, 0, Comport.bufSize, 0);
BASS_ChannelPlay(stream,true);
Bass_StreamFree(stream); // зачем завершать его?
end;
ZuBy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как воспроизвести звук с модема используя BASS Aliens_wolfs Компоненты Delphi 0 20.05.2011 13:50
Bass. Проиграть потоковое аудио с прокруткой Delphi_ProGer Помощь студентам 0 25.02.2011 21:07
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
BASS DLL ygy Мультимедиа в Delphi 4 29.09.2009 04:39
BASS.DLL VintProg Мультимедиа в Delphi 2 21.09.2009 16:36