Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
 
Elsa Meier
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 52
1

Вывести wav-файл на встроенный динамик ПК

16.02.2018, 18:07. Просмотров 499. Ответов 20
Метки нет (Все метки)

Заголовок - тема лабораторной по дисциплине "ЭВМ и периферийные устройства".
Понятия не имею с чего начать. Программа должна быть написана на языке ассемблера, можно использовать системные библиотеки, Windows API, и другие инструменты.
Ассемблер знаю только основы, раньше работала лишь с FASM.
Что посоветуете использовать? Что изучить? Какую среду лучше использовать для этих целей?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2018, 18:07
Ответы с готовыми решениями:

Вывести информацию о WAV файле
Было задание вывести информацию о WAV файле, я разобрался с заголовком, вывел...

Вывести на экран сведения о звуковом файле в формате Wav
Тут такая штука, буквально через неделю сдавать курсач по Ассемблеру. А я...

Встроенный динамик в материнке
Добрый день. Можете привести код программы, которая до загрузки виндовса...

Нужен драйвер на встроенный динамик, где найти
И к нему код, как им воспользоваться. В случае отсутствия звуковой платы...

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

20
Kukuxumushu
1280 / 565 / 105
Регистрация: 13.06.2015
Сообщений: 1,897
Завершенные тесты: 2
16.02.2018, 20:39 2
Elsa Meier, "встроенные динамик" - это PC-speaker чтоль? На него вы wav-файл никогда не выведите, т.к. он не поддерживает амплитудную модуляцию. Вот на звуковое устройство по умолчанию (или не по умолчанию) вывести можно.
0
The trick
Модератор
7384 / 2643 / 759
Регистрация: 22.02.2013
Сообщений: 3,822
Записей в блоге: 76
16.02.2018, 21:53 3
Kukuxumushu, а как же PWM?
0
ФедосеевПавел
Модератор
3856 / 2177 / 894
Регистрация: 01.02.2015
Сообщений: 7,248
16.02.2018, 21:57 4
Не совсем так.
Почитав сегодня по этой теме, уяснил, что существует WinAPI Beep(dwFreq, dwDuration)
https://ru.wikipedia.org/wiki/Beep

Единственно, что начиная с Windows 7 была произведена глубокая переработка этой функции - отныне вывод звука направляется на звуковое устройство "по-умолчанию", а не однозначно на системный динамик.

Ничего другого я не нашёл.

Т.е. нужно разобрать формат wav и извлекать из него пары чисел - длительность и частота - и при помощи Beep отправлять на системный динамик. Сколько помню - это несжатые данные, состоящие из некоего заголовка и набора пар значений длительность+частота.

Единственно - как перенаправить именно на системный динамик непонятно. Если есть возможность - спросите у преподавателя - не исключена вероятность, что задание составлялось до Windows 7 и подразумевало Beep.
0
The trick
Модератор
7384 / 2643 / 759
Регистрация: 22.02.2013
Сообщений: 3,822
Записей в блоге: 76
16.02.2018, 22:01 5
Так wav файл (на устройство по умолчанию) можно вообще одной функцией проиграть sndPlaySound или mciExecute (mciSendString).
0
ФедосеевПавел
Модератор
3856 / 2177 / 894
Регистрация: 01.02.2015
Сообщений: 7,248
16.02.2018, 22:13 6
Согласен, но тогда студент Elsa Meier ничего не узнает ни о ассемблере ни о Windows - такое задание для закрепления знаний.
0
Kukuxumushu
1280 / 565 / 105
Регистрация: 13.06.2015
Сообщений: 1,897
Завершенные тесты: 2
16.02.2018, 22:13 7
The trick, PWM - это конечно ЛОЛ (самый уровень для лабы ). Только вот беда - через виду нет доступа к порту, который дёргает ногой спикера.
0
The trick
Модератор
7384 / 2643 / 759
Регистрация: 22.02.2013
Сообщений: 3,822
Записей в блоге: 76
16.02.2018, 22:20 8
ФедосеевПавел, форматов wav файлов большое количество, писать под каждый формат не имеет смысла, и нужно ли? Нужно дождаться ТС.
Kukuxumushu, единственный способ, да и не особо сложный я так думаю. А из ядра?
0
Kukuxumushu
1280 / 565 / 105
Регистрация: 13.06.2015
Сообщений: 1,897
Завершенные тесты: 2
16.02.2018, 22:35 9
Цитата Сообщение от The trick Посмотреть сообщение
А из ядра?
А чёрт его знает, это уже надо в разделе драйверов спрашивать, тут я не спец)
0
Jin X
4636 / 1390 / 162
Регистрация: 14.12.2014
Сообщений: 2,685
Записей в блоге: 8
Завершенные тесты: 2
17.02.2018, 01:28 10
У меня ощущение, что TC нужно сделать прогу под ДОСку (DOSBox), никаких библиотек и WinAPI тут использовать не надо.
Всё делается через порты (программирование таймеров и динамика) с перехватом прерывания int 8, чтоб частота была чёткая.
Старые MOD/STM-плееры прекрасно воспроизводили музыку через PC Speaker.

Гляньте здесь: Вывод звука средствами BIOS/UEFI файл SOLO2.zip. Там, возможно, есть инфа о том, как импульс передавать (не уверен, но если что, в инете это можно найти по запросу а-ля "программирование pc speaker"... кстати, наберите, там много всего интересного, с примерами даже).
Кстати, вот ещё: https://habrahabr.ru/post/138144/

Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Т.е. нужно разобрать формат wav и извлекать из него пары чисел - длительность и частота - и при помощи Beep отправлять на системный динамик. Сколько помню - это несжатые данные, состоящие из некоего заголовка и набора пар значений длительность+частота.
О чём вы?
Никаких пар длительностей и частот там нет. Это не MIDI и XM. Там записана просто амплитуда (ИКМ).
1
Uncle Remus
Заблокирован
17.02.2018, 03:20 11
Зачем нужен драйвер и как написать простейший драйвер
Исполняем системным динамиком "Марш гладиаторов" (Opus 68 march (Vjezd gladiátorů)) чешского композитора Julius Fučík (1872-1916), написан марш в 1897 году, работало под 32-разрядными Windows XP и Windows Seven
0
Jin X
4636 / 1390 / 162
Регистрация: 14.12.2014
Сообщений: 2,685
Записей в блоге: 8
Завершенные тесты: 2
17.02.2018, 11:05 12
Я думаю, можно где-то найти исходники звукового драйвера для PC Speaker.
Во-первых, посмотреть гуляющие по инету исходники Windows 2000.
Во-вторых, посмотреть исходники ReactOS.
0
The trick
Модератор
7384 / 2643 / 759
Регистрация: 22.02.2013
Сообщений: 3,822
Записей в блоге: 76
17.02.2018, 11:30 13
Так разве 0x61 порт не отвечает за спикер?
Так по сути, если нет аппаратного ШИМа (как на AVR к примеру), то нужно всего 2 таймера (даже один можно или вообще без них). Один отвечает за частоту дискретизации, второй за частоту ШИМа. В первом прерывании пишем в регистр число соответствующее амплитуде семпла, во втором считаем до этого значения и переключаем бит в спикере на противоположный и сбрасываем счет. Конечно под ОС типа Windows в юзермоде не получится этого сделать.
0
Jin X
4636 / 1390 / 162
Регистрация: 14.12.2014
Сообщений: 2,685
Записей в блоге: 8
Завершенные тесты: 2
17.02.2018, 14:27 14
Вот ещё гляньте: Проиграть звук .wav через спикер
0
Uncle Remus
Заблокирован
17.02.2018, 14:33 15
The trick,
а в Зачем нужен драйвер и как написать простейший драйвер разве речь не о 42h, 43h, 61h портах? 17 вариантов простейших драйверов (ну как "простейших") и 3 способа загрузки таких драйверов
0
The trick
Модератор
7384 / 2643 / 759
Регистрация: 22.02.2013
Сообщений: 3,822
Записей в блоге: 76
17.02.2018, 14:58 16
Uncle Remus, я смотрел здесь https://ru.wikipedia.org/wiki/%D0%94...A_%D0%9F%D0%9A
для ШИМа используется 0x61 порт для прямого управления мембраной.
0
Uncle Remus
Заблокирован
17.02.2018, 15:04 17
The trick,
спасибо за ссылку, посмотрю
0
Jin X
4636 / 1390 / 162
Регистрация: 14.12.2014
Сообщений: 2,685
Записей в блоге: 8
Завершенные тесты: 2
17.02.2018, 22:07 18
The trick, порт 61h просто включает и выключает динамик, но для равномерности звучания и соблюдения точных задержек нужно управление таймерами, поэтому используются 4Xh порты и перехват int 8.
1
Jin X
4636 / 1390 / 162
Регистрация: 14.12.2014
Сообщений: 2,685
Записей в блоге: 8
Завершенные тесты: 2
17.02.2018, 23:16 19
Нашёл качественный плеер WAV (вернее, RAW) с исходниками на паскале, см. аттач pcm_pcsp.zip !!! Качайте и разбирайтесь! Там всё разбито по модулям, с демо и пр. Откомпилил сам.



Ещё плеер WAV под DOS (kpc.zip), но он под DOSBox не пашет, требует Pentium+ . Так что, VMWare в руки. Не пробовал, качество не знаю.

Ну и ещё какой-то unit (stmplay.zip) для воспроизведения STM. Думаю, там можно много всего интересного найти по сабжу
Правда, комментов нет (и я его не пробовал)

Вот тут можно много всего нарыть: http://pascal.sources.ru/sound/

p.s. Помню подростками угарали с другом над прогой SHULER.
ВНИМАНИЕ!!! 18+ содержит нецензурную лексику!!!
Всё равно скачать...
1
Вложения
Тип файла: zip pcm_pcsp.zip (244.8 Кб, 3 просмотров)
Тип файла: zip kpc.zip (34.5 Кб, 2 просмотров)
Тип файла: zip stmplay.zip (6.3 Кб, 2 просмотров)
Elsa Meier
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 52
21.02.2018, 18:02  [ТС] 20
Всем спасибо за огромное количество информации. Буду читать и разбираться)
0
21.02.2018, 18:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2018, 18:02

Написать программу, формирующую по исходному WAV файлу новый WAV файл
Написать программу, формирующую по исходному WAV файлу новый WAV файл, со...

Создать wav файл имея raw файл с данными
Всем хорошего настроения! Пишу программу для обработки аudio данных, и есть...

Wav файл
Помогите пожалуйста. Пытаюсь разобраться с чтением и обработкой данных из wav...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru