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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2010, 18:26   #1
dimka0986
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 16
По умолчанию Есть звук или нет

Помогите пожалуйста! Написал мультимедийный проигрыватель, но возникла проблема со звуком. Использовал TrackBar.
Код:
procedure TControlForm.TrackBar1Change(Sender: TObject);
var
volume:DWORD;
x : integer;

begin

  TrackBar1.Min := 0;
  TrackBar1.Max := 100;
volume := 65000* Round((TrackBar1.Position-TrackBar1.Min)/(TrackBar1.Max-TrackBar1.Min));
  TrackBar1.Enabled := true;
  volume := volume + (volume shl 16);
  waveOutSetVolume(WAVE_MAPPER,volume);
 end;
У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Вы не знали? Почитайте правила раздела...
Модератор


Поет только когда регулятор на второй половине риски. Получается, что звук просто включается и выключается.

Замечание учту!

Последний раз редактировалось mihali4; 17.01.2010 в 21:04.
dimka0986 вне форума Ответить с цитированием
Старый 17.01.2010, 19:05   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Попробуйте сделать так:
Код:
procedure TControlForm.TrackBar1Change(Sender : TObject);
var
volume:DWORD;
begin
TrackBar1.Min := 0;
TrackBar1.Max := 100;
volume := 65000* Round(TrackBar1.Position);
TrackBar1.Enabled := true;
volume := volume + (volume shl 16);
waveOutSetVolume(WAVE_MAPPER,volume );
end;
Если не получится, то попробуйте уменьшить значение 65000 и попробовать с другим значением.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 17.01.2010, 19:16   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
newvol:=(($ffff * fLeftVolume) div 100)+((($ffff * fRightVolume) div 100) shl $10);

//set volume
waveOutSetVolume(WAVE_MAPPER, newvol);
так вы сможете раздельно, если одним движком параллельно, то fLeftVolume=fRightVolume=TrackBar1. Position... диапазон от 0..100.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.01.2010, 20:32   #4
dimka0986
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 16
По умолчанию

Спасибо за помощь! Воспользовался
Код:
procedure TControlForm.TrackBar1Change(Sender : TObject);
var
volume:DWORD;
begin
TrackBar1.Min := 0;
TrackBar1.Max := 100;
volume := 500* Round(TrackBar1.Position);
TrackBar1.Enabled := true;
volume := volume + (volume shl 16);
waveOutSetVolume(WAVE_MAPPER,volume );
end;
Все работает! Единственный минус в том, что баланс звука меняет и в самом ПК.
dimka0986 вне форума Ответить с цитированием
Старый 17.01.2010, 20:36   #5
dimka0986
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 16
По умолчанию

Только не понял почему при 65000 Звук менялся в обратную сторону!
dimka0986 вне форума Ответить с цитированием
Старый 17.01.2010, 20:39   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

два канала регулировки находятся в одном 32 разрядном числе, каждое максимум 65535= $ffff = 0xffff и смещенный правый канал вверх (пост 3) ...так будет понятнее?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.01.2010, 20:47   #7
dimka0986
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 16
По умолчанию

С трудом! Более простым языком?
dimka0986 вне форума Ответить с цитированием
Старый 17.01.2010, 21:09   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

куда уж более простым... ну, вот визуально еще
Изображения
Тип файла: png 32.png (2.1 Кб, 156 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.01.2010, 21:13   #9
dimka0986
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 16
По умолчанию

Понял! У меня такая картина была видна когда я поставил 1000.
Звук увеличивался до середины, а затем от середины начал с 0.
А можно сделать так, чтобы уровень звука регулировался только у плеера?
dimka0986 вне форума Ответить с цитированием
Старый 17.01.2010, 21:25   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

только, если ваш плеер написан с использованием потоков (bass, та iнше) ...или directsound или directshow, т.е. процесс регулировки не будет связан с общими системными настройками, аудиокарты.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильно или нет вот в чём вопрос но ошибок нет... Alexcool Помощь студентам 2 10.01.2010 13:55
в справке есть а в модуле нет! Snoopy Общие вопросы C/C++ 1 18.09.2008 04:32
Звук есть,а картинки нет LexMan Помощь студентам 2 04.09.2008 19:47
Есть или нет MAcK SQL, базы данных 3 27.05.2008 14:45
Есть или нет... вот в чём вопрос...))) ZhekON Общие вопросы Delphi 9 24.09.2007 20:33