Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


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

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

Купить рекламу на форуме 20000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2021, 18:00   #1
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 899
По умолчанию Bass регулировка по отдельности левого и правого каналов звука

Добрый вечер Форумчане!
Подскажите пожалуйста есть ли способ регулировки по отдельности левого и правого каналов звука.

интересует примерно следующее но так не работает видимо для midi
Код:
Samples:= BASS_SampleLoad(false, Pchar(OpenDialog1.filename),0,0,10, BASS_SAMPLE_LOOP);
Channel:= BASS_SampleGetChannel(Samples, false);
BASS_ChannelSetAttribute(Chanel, BASS_ATTRIB_MUSIC_VOL_CHAN + 1, 0.1);
BASS_ChannelSetAttribute(Chanel, BASS_ATTRIB_MUSIC_VOL_CHAN + 2, 0.1);
BASS_ChannelPlay(Channel, FALSE);
Так работает но это балансировка каналов, а мне нужно каждому из каналов задать свой уровень.
Код:
Samples:= BASS_SampleLoad(false, Pchar(OpenDialog1.filename),0,0,10, BASS_SAMPLE_LOOP);
Channel:= BASS_SampleGetChannel(Samples, false);
//установка громкости звука
BASS_ChannelSetAttribute(Channel,BASS_ATTRIB_VOL, vol);
//установка баланса
BASS_ChannelSetAttribute(Channel,BASS_ATTRIB_PAN,Ball);
BASS_ChannelPlay(Channel, FALSE);
Есть ли еще способы регулировки по отдельности каждый из каналов?
За ранее спасибо!
Aliens_wolfs на форуме Ответить с цитированием
Старый 15.01.2021, 22:38   #2
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 102
По умолчанию

Каналы можно регулировать по-отдельности используя bassmix и конкретно BASS_Mixer_ChannelSetMatrix
будет что-то вроде вот такого
Код:
var     
  matrix : array of single;
  mixer,channel:HSTREAM;
  //....
    BASS_Init(-1,44100,0,Handle, nil));
    mixer := BASS_Mixer_StreamCreate(44100,2, 0);
   //...
      channel:= BASS_StreamCreateFile(false,pchar(Self.OpenDialog1.FileName),0,0,BASS_STREAM_DECODE  {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
    BASS_Mixer_StreamAddChannel(mixer, channel, BASS_MIXER_MATRIX or BASS_STREAM_AUTOFREE);
    SetLength(matrix, 2*2);
    matrix[0]:=0.5;   matrix[1]:=0; // l=0.5
    matrix[2]:=0;   matrix[3]:=0.7; // r=0.7
    BASS_Mixer_ChannelSetMatrix(channel, matrix);
    BASS_ChannelPlay(mixer, false);
DIONISKA вне форума Ответить с цитированием
Старый 21.02.2021, 13:22   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 899
По умолчанию

Спасибо!
Попробую
Aliens_wolfs на форуме Ответить с цитированием
Старый 07.03.2021, 15:32   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 899
По умолчанию

Получилось таким методом управлять каналами.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
BCH: BASS_CHANNELINFO;
begin
if OpenDialog1.Execute then
begin
Channel:= BASS_StreamCreateFile(false, pchar(OpenDialog1.FileName), 0, 0, BASS_STREAM_DECODE  {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
BASS_ChannelGetInfo(Channel, BCH);
Mixer := BASS_Mixer_StreamCreate(BCH.freq, BCH.chans, 0);
BASS_Mixer_StreamAddChannel(Mixer, Channel, BASS_MIXER_MATRIX);
SetLength(matrix, 2 * 2);
matrix[0]:=0.2;  matrix[1]:=0; // левый канал
matrix[2]:=0;   matrix[3]:= 1; // правый канал
BASS_Mixer_ChannelSetMatrix(channel, matrix);
BASS_ChannelPlay(Mixer, false);
end;
end;
Спасибо DIONISKA за подсказку

Всю библиотеку BASS и BASSMIX брал от сюда "COM BASS Mixer Library component"
https://www.3delite.hu/Object%20Pasc...ssmixerlibrary

Последний раз редактировалось Aliens_wolfs; 07.03.2021 в 18:22.
Aliens_wolfs на форуме Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите высоту дерева H и удалите в нем все вершины на глубине H/2, у которых высота левого поддерева равна высо-те правого поддер Nika1997 Общие вопросы Delphi 0 06.03.2015 19:20
Регулировка звука C# N1VaL C# (си шарп) 12 10.10.2013 16:18
Регулировка звука левого и правого каналов Smerch66 Мультимедиа в Delphi 5 19.01.2011 13:24
Регулировка звука? cargo29 Мультимедиа в Delphi 5 12.01.2011 19:33
Регулировка звука bookkc Помощь студентам 5 02.11.2010 22:15



Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS