Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 363

/ вопрос открыт /

Привет всем!!!
Хочется узнать как в мультимедиа программах без использования API контроллирующих громкость системного звука и без использования библиотеки BASS можно контроллировать громкость звука воспроизводимого приложением.
Оч интересно.
Заранее списибо.

SOA Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: SOA (статус: Посетитель)
Вопрос отправлен: 27 июня 2010, 08:13
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, SOA!
а очень просто. если звук формируется самостоятельно, то в конце концов на выходе приложения получается набор отсчетов, которые и подаются апи фукнциям на воспроизведения. Программно эти отсчеты выглядят как массив чисел. Это же pcm файл.
Что бы уменьшить громкость в два раза к примеру, нужно просто умножить каждый отсчет на 0.5. И все.
Осталось решить последнюю проблему - а как подать данные операционной системе, что бы она их воспроизвела. для этого можно к примеру скачать компоненты http://www.torry.net/vcl/mmedia/audio/acmcomponents16.zip - там есть все, что нужно.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 27 июня 2010, 16:28
Оценка за ответ: 5

Комментарий к оценке: Спасибо!

Мини-форум вопроса

Всего сообщений: 36; последнее сообщение — 28 июня 2010, 18:28; участников в обсуждении: 5.

Страницы: [« Предыдущая] [1] [2]

min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 19:30 [#21]:

Цитата (SOA):

Ну так и писал бы что спектр а не громкость

А я так и написал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
SOA

SOA (статус: Посетитель), 27 июня 2010, 19:30 [#22]:

Да а где?
min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 19:35 [#23]:

Цитата (SOA):

Да а где?

Да вот:

Цитата (min@y™):

Да потому что в wav-файле находится спектр изменения звукового сигнала, а не громкость от 0 до 255 в каждом байте. Всё намного сложнее, чем ты думаешь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
SOA

SOA (статус: Посетитель), 27 июня 2010, 19:42 [#24]:

Действительно и десяти постов не прошло.
Только не обижайтесь ничего личного, только подсчет постов между вопросом и ответом на него.
min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 19:47 [#25]:

Цитата (SOA):

Только не обижайтесь ничего личного, только подсчет постов между вопросом и ответом на него.

А ты про структуру wav-файла и не спрашивал. Я её, между прочим, и не знаю. Лет дцать назад я тоже писал плейер и меня Bass.dll вполне устроила.
Я честно пытался найти для тебя решение в интернете, но не нашёл. Сходи по ссылке академика, может там что-то дельное.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
SOA

SOA (статус: Посетитель), 27 июня 2010, 19:56 [#26]:

Интересное кино, а как же пост про то что в wav находится спектр изменения звукового сигнала, а щас пишете что про структуру wav файла не знаете. Я например про структуру wav файла тоже не знаю, потому и спрашиваю что да как, да и потом интересно использовать не только wav но и mp3 формат т.к. места меньше занимает, но не суть.
min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 20:08 [#27]:

Цитата (SOA):

а как же пост про то что в wav находится спектр изменения звукового сигнала, а щас пишете что про структуру wav файла не знаете.

Так и есть. Знаю, что там находится, но как закодировано, параметры, смещения и прочую лабуду - не знаю и знать не хочу. Я решаю проблемы по мере их поступления. Понадобится - узнаю.

Цитата (SOA):

интересно использовать не только wav но и mp3 формат

Я тоже писал свой допотопный плейер исключительно для mp3. Тогда ещё размеры HDD были очень скромными, хранить несколько гигов пиратского музона на винте было непозволительной роскошью. Поэтому мы писали их на болванки, а прога, записанная вместе с музонами на диск автораном запускалась при его вставке в привод, выводила на экран плейлист и начанала проигрывать файлы. Вот и всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 20:10 [#28]:

Вот тебе ссылка, посмотри. Не знаю, пригодится или нет, но всё же...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 27 июня 2010, 21:18 [#29]:

от кого - от кого, а от min@y™ такой безграмотности не ожидал...
Внутри Wav файла находятся отсчеты. Это фактически уровни громкости. Просто измеряются тысяч 20-40 раз в секунду (по умному - частота дискретизации, обычно для звука 44100 или 22050). В wav файл может записываться по разному - либо один байт на отсчет (очень редко) или два байта на отсчет (чаще) или даже 8 байт на отчет. Также может быть один канал, а может и 4.
Сам файл по себе состоит с двух частей - заголовка фиксированного размера, откуда можно и вычитать все нужные данные. А дальше идут собственно отсчеты.

И умножать/делить нужно не байты, а отсчеты.

Сам wav файл парситься просто на ура за пол вечера. Сложно там абсолютно ничего.

А вот в mp3 и других сжатых форматах храниться уже в хитром формате. Утверждать что там спектр - неграмотно. Но если хочется его воспроизвести, то все равно придется сделать декомпресию (а для этого применить к примеру lame декодер, так как ручками писать декодер долгое занятие и литературы почитать нужно очень-очень много). А вот на выходе декодера получаем снова тот же wav (только тут его корректней называть pcm).
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 21:48 [#30]:

Цитата (Вадим К):

от кого - от кого, а от min@y™ такой безграмотности не ожидал...

Ты мне ещё репутацию заминусуй!
Я не обязан знать всё на свете - это невозможно. У меня и так хлама в башке хренова гора, только кроссворды на скорость гадать. Неужели моё незнание формата PCM меня дискредитирует? Нужно будет - узнаю, а пока - без надобности.
Сам-то как думаешь, вот то, что ты тут понаписал, поможет автору вопроса решить задачу?
Ты оперируешь сухими фактами, забывая, что разговариваешь с живыми людьми, причём, все эти люди разные. А челу просто нужен кусок готового кода, которого у меня нету. И у тебя - тоже.

З.Ы. Ты бы залез ко мне в аську, мне давно хочется поговорить с умным человеком. К тому же, я через полтора месяца к тебе на (в) Украину собираюсь в гости.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Толяныч

Толяныч (статус: 4-ый класс), 27 июня 2010, 22:29 [#31]:

Может по ходу обсуждения и я для себя проясню один вопрос. Не проблема воспроизвести звук из wav файла. А вот если он формируется в самом приложении? Записывать в tmp.wav - как-то неприлично, а если из массива отсчетов - можно как-нибудь озвучить?
Вот в DOS можно было в ОЗУ виртуальный диск сделать и работать через него с временными файлами - быстро и удобно. В Windows ведь виртуального диска нет ?
min@y™

min@y™ (статус: Доктор наук), 27 июня 2010, 22:39 [#32]:

Цитата (Толяныч):

В Windows ведь виртуального диска нет ?

Есть. Но это уже совсем другая история.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 27 июня 2010, 23:15 [#33]:

а зачем виртуальные диски, создавать файлы?
Я привел в ответе пример компонента. У него есть событие, по которому нужно очередную порцию данных в виде массива скармливать, а он проиграет.

to min@y™
для начала придется забыть все бранные слова:) потом спиртные напитки. И лишь потом можно стучать в асю:)
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 28 июня 2010, 08:26 [#34]:

Цитата (Вадим К):

для начала придется забыть все бранные слова:) потом спиртные напитки. И лишь потом можно стучать в асю:)

Что, думаешь, не справишься? Тренируй силу воли и у тебя всё получится!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
SOA

SOA (статус: Посетитель), 28 июня 2010, 16:56 [#35]:

To Толяныч: на msdn если что есть драйвер для создания RAM диска правда max на 64 Mb, но зато в RAM!!!
Если будешь искать набирай RAM disk.
;)
Толяныч

Толяныч (статус: 4-ый класс), 28 июня 2010, 18:28 [#36]:

Спасибо, прояснили. Пошел учить матчасть.

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 23:38
Выполнено за 0.03 сек.