Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 61
1

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

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

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

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

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

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

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

20
1572 / 806 / 145
Регистрация: 13.06.2015
Сообщений: 2,868
16.02.2018, 20:39 2
Elsa Meier, "встроенные динамик" - это PC-speaker чтоль? На него вы wav-файл никогда не выведите, т.к. он не поддерживает амплитудную модуляцию. Вот на звуковое устройство по умолчанию (или не по умолчанию) вывести можно.
0
Модератор
8224 / 3058 / 812
Регистрация: 22.02.2013
Сообщений: 4,355
Записей в блоге: 78
16.02.2018, 21:53 3
Kukuxumushu, а как же PWM?
0
Модератор
Эксперт по электронике
6880 / 3404 / 1348
Регистрация: 01.02.2015
Сообщений: 10,728
Записей в блоге: 1
16.02.2018, 21:57 4
Не совсем так.
Почитав сегодня по этой теме, уяснил, что существует WinAPI Beep(dwFreq, dwDuration)
https://ru.wikipedia.org/wiki/Beep

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

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

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

Единственно - как перенаправить именно на системный динамик непонятно. Если есть возможность - спросите у преподавателя - не исключена вероятность, что задание составлялось до Windows 7 и подразумевало Beep.
0
Модератор
8224 / 3058 / 812
Регистрация: 22.02.2013
Сообщений: 4,355
Записей в блоге: 78
16.02.2018, 22:01 5
Так wav файл (на устройство по умолчанию) можно вообще одной функцией проиграть sndPlaySound или mciExecute (mciSendString).
0
Модератор
Эксперт по электронике
6880 / 3404 / 1348
Регистрация: 01.02.2015
Сообщений: 10,728
Записей в блоге: 1
16.02.2018, 22:13 6
Согласен, но тогда студент Elsa Meier ничего не узнает ни о ассемблере ни о Windows - такое задание для закрепления знаний.
0
1572 / 806 / 145
Регистрация: 13.06.2015
Сообщений: 2,868
16.02.2018, 22:13 7
The trick, PWM - это конечно ЛОЛ (самый уровень для лабы ). Только вот беда - через виду нет доступа к порту, который дёргает ногой спикера.
0
Модератор
8224 / 3058 / 812
Регистрация: 22.02.2013
Сообщений: 4,355
Записей в блоге: 78
16.02.2018, 22:20 8
ФедосеевПавел, форматов wav файлов большое количество, писать под каждый формат не имеет смысла, и нужно ли? Нужно дождаться ТС.
Kukuxumushu, единственный способ, да и не особо сложный я так думаю. А из ядра?
0
1572 / 806 / 145
Регистрация: 13.06.2015
Сообщений: 2,868
16.02.2018, 22:35 9
Цитата Сообщение от The trick Посмотреть сообщение
А из ядра?
А чёрт его знает, это уже надо в разделе драйверов спрашивать, тут я не спец)
0
xgetbv
5568 / 1722 / 190
Регистрация: 14.12.2014
Сообщений: 3,247
Записей в блоге: 11
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
Заблокирован
17.02.2018, 03:20 11
Зачем нужен драйвер и как написать простейший драйвер
Исполняем системным динамиком "Марш гладиаторов" (Opus 68 march (Vjezd gladiátorů)) чешского композитора Julius Fučík (1872-1916), написан марш в 1897 году, работало под 32-разрядными Windows XP и Windows Seven
0
xgetbv
5568 / 1722 / 190
Регистрация: 14.12.2014
Сообщений: 3,247
Записей в блоге: 11
17.02.2018, 11:05 12
Я думаю, можно где-то найти исходники звукового драйвера для PC Speaker.
Во-первых, посмотреть гуляющие по инету исходники Windows 2000.
Во-вторых, посмотреть исходники ReactOS.
0
Модератор
8224 / 3058 / 812
Регистрация: 22.02.2013
Сообщений: 4,355
Записей в блоге: 78
17.02.2018, 11:30 13
Так разве 0x61 порт не отвечает за спикер?
Так по сути, если нет аппаратного ШИМа (как на AVR к примеру), то нужно всего 2 таймера (даже один можно или вообще без них). Один отвечает за частоту дискретизации, второй за частоту ШИМа. В первом прерывании пишем в регистр число соответствующее амплитуде семпла, во втором считаем до этого значения и переключаем бит в спикере на противоположный и сбрасываем счет. Конечно под ОС типа Windows в юзермоде не получится этого сделать.
0
xgetbv
5568 / 1722 / 190
Регистрация: 14.12.2014
Сообщений: 3,247
Записей в блоге: 11
17.02.2018, 14:27 14
Вот ещё гляньте: Проиграть звук .wav через спикер
0
Заблокирован
17.02.2018, 14:33 15
The trick,
а в Зачем нужен драйвер и как написать простейший драйвер разве речь не о 42h, 43h, 61h портах? 17 вариантов простейших драйверов (ну как "простейших") и 3 способа загрузки таких драйверов
0
Модератор
8224 / 3058 / 812
Регистрация: 22.02.2013
Сообщений: 4,355
Записей в блоге: 78
17.02.2018, 14:58 16
Uncle Remus, я смотрел здесь https://ru.wikipedia.org/wiki/... 0%9F%D0%9A
для ШИМа используется 0x61 порт для прямого управления мембраной.
0
Заблокирован
17.02.2018, 15:04 17
The trick,
спасибо за ссылку, посмотрю
0
xgetbv
5568 / 1722 / 190
Регистрация: 14.12.2014
Сообщений: 3,247
Записей в блоге: 11
17.02.2018, 22:07 18
The trick, порт 61h просто включает и выключает динамик, но для равномерности звучания и соблюдения точных задержек нужно управление таймерами, поэтому используются 4Xh порты и перехват int 8.
1
xgetbv
5568 / 1722 / 190
Регистрация: 14.12.2014
Сообщений: 3,247
Записей в блоге: 11
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 просмотров)
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 61
21.02.2018, 18:02  [ТС] 20
Всем спасибо за огромное количество информации. Буду читать и разбираться)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2018, 18:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Проиграть Wav-файл
Привет, каким образом можно в pascal проиграть wav файл? Нашел в интернете про mmsystem, но не...

Сохранение в wav файл
Доброго времени суток, подскажите пожалуйста, как писать данные в много-канальный wav файл. Имеются...


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

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

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