Своя громкость звука в приложении

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Своя громкость звука в приложении

Сообщение Source » 01.11.2007 (Чт) 23:52

Можно в своей программе установить свою громкость (не зависимую от системных настроек громкости через sndvol32.exe) проигрываемых ею звуковых файлов WAV? Как это сделать?

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 02.11.2007 (Пт) 0:56

А если при запуске запоминать эти настройки, потом ставить свои, а когда программа свернута или её главное окно становится неактивным, а так же при закрытии программы восстанавливать эти настройки?
Подпись проходит рефакторинг

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 02.11.2007 (Пт) 1:14

нет, менять настройки пользователя на свои не пойдёт

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 04.11.2007 (Вс) 20:30

Source писал(а):Можно в своей программе установить свою громкость (не зависимую от системных настроек громкости через sndvol32.exe) проигрываемых ею звуковых файлов WAV?
Зависит от того, через что ты будешь воспроизводить этот звук.
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 04.11.2007 (Вс) 22:20

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

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 04.11.2007 (Вс) 22:58

Lumen, как ты себе это представляешь? Ты слушаешь музыку, запускаешь мою прогу, музыка стала тише. Ты увеличил громкость. Так и будешь каждый раз вручную подгонять громкость при старте моей проги и тихо ругать меня? А если прога будет то ставить прежнюю громкость, то свою в зависимости от состояния её окна, представляешь, как тебе будет весело?

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 04.11.2007 (Вс) 23:09

Ну так и воспроизводи звук своей проги например через ActiveMovie control type library. Там и громкость, и баланс, и скорость...
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Своя громкость звука в приложении

Сообщение BV » 05.11.2007 (Пн) 10:17

Source писал(а):Можно в своей программе установить свою громкость (не зависимую от системных настроек громкости через sndvol32.exe) проигрываемых ею звуковых файлов WAV? Как это сделать?


Для начала -- чем воспроизводить собираешься? winmm -- MCI_SETAUDIO/MCI_DGV_SETAUDIO_VOLUME, dshow -- IBasicAudio...
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 05.11.2007 (Пн) 15:16

я уже скачал примеры с DirectShow. Я так понимаю, что там громкость задаётся в процентах от системной громкости, т.е. звук можно сделать тише, но громче никак. Или всё же можно задать абсолютную громкость? Также я в примерах не нашёл флагов управления воспроизведением звука, т.е. мне надо, чтобы звук не воспроизводился повторно, если такой звук уже воспроизводится и т.д., т.е. аналоги флагов ф-и PlaySound. Или хотя бы узнать, что звук уже воспроизведён или никакие звуки сейчас не воспроизводятся.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 05.11.2007 (Пн) 22:48

Я так понимаю, что там громкость задаётся в процентах от системной громкости, т.е. звук можно сделать тише, но громче никак. Или всё же можно задать абсолютную громкость?
Нет, нельзя. Выше системной громкости ты в своем приложении не задашь.
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 06.11.2007 (Вт) 10:22

Source писал(а):Также я в примерах не нашёл флагов управления воспроизведением звука, т.е. мне надо, чтобы звук не воспроизводился повторно, если такой звук уже воспроизводится и т.д., т.е. аналоги флагов ф-и PlaySound. Или хотя бы узнать, что звук уже воспроизведён или никакие звуки сейчас не воспроизводятся.


Если ты об уведомлениях MCI, то используй IMediaEvent.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 06.11.2007 (Вт) 17:20

а для DirectShow можно такое сделать?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 06.11.2007 (Вт) 17:33

Что?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 06.11.2007 (Вт) 18:15

Также я в примерах не нашёл флагов управления воспроизведением звука, т.е. мне надо, чтобы звук не воспроизводился повторно, если такой звук уже воспроизводится и т.д., т.е. аналоги флагов ф-и PlaySound. Или хотя бы узнать, что звук уже воспроизведён или никакие звуки сейчас не воспроизводятся. Для DirectShow!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 06.11.2007 (Вт) 18:55

:roll:

Используй IMediaEvent что бы узнать.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 90

    TopList