Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler: Windows/protected mode

Войти
Регистрация
Восстановить пароль
 
 
Elsa Meier
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 52
#1

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

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

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

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

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

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

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

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

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

20
Kukuxumushu
1516 / 471 / 85
Регистрация: 13.06.2015
Сообщений: 1,598
Завершенные тесты: 2
16.02.2018, 20:39 #2
Elsa Meier, "встроенные динамик" - это PC-speaker чтоль? На него вы wav-файл никогда не выведите, т.к. он не поддерживает амплитудную модуляцию. Вот на звуковое устройство по умолчанию (или не по умолчанию) вывести можно.
0
The trick
Модератор
7601 / 2562 / 753
Регистрация: 22.02.2013
Сообщений: 3,780
Записей в блоге: 76
16.02.2018, 21:53 #3
Kukuxumushu, а как же PWM?
0
ФедосеевПавел
Модератор
3393 / 1890 / 754
Регистрация: 01.02.2015
Сообщений: 6,427
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
Модератор
7601 / 2562 / 753
Регистрация: 22.02.2013
Сообщений: 3,780
Записей в блоге: 76
16.02.2018, 22:01 #5
Так wav файл (на устройство по умолчанию) можно вообще одной функцией проиграть sndPlaySound или mciExecute (mciSendString).
0
ФедосеевПавел
Модератор
3393 / 1890 / 754
Регистрация: 01.02.2015
Сообщений: 6,427
16.02.2018, 22:13 #6
Согласен, но тогда студент Elsa Meier ничего не узнает ни о ассемблере ни о Windows - такое задание для закрепления знаний.
0
Kukuxumushu
1516 / 471 / 85
Регистрация: 13.06.2015
Сообщений: 1,598
Завершенные тесты: 2
16.02.2018, 22:13 #7
The trick, PWM - это конечно ЛОЛ (самый уровень для лабы ). Только вот беда - через виду нет доступа к порту, который дёргает ногой спикера.
0
The trick
Модератор
7601 / 2562 / 753
Регистрация: 22.02.2013
Сообщений: 3,780
Записей в блоге: 76
16.02.2018, 22:20 #8
ФедосеевПавел, форматов wav файлов большое количество, писать под каждый формат не имеет смысла, и нужно ли? Нужно дождаться ТС.
Kukuxumushu, единственный способ, да и не особо сложный я так думаю. А из ядра?
0
Kukuxumushu
1516 / 471 / 85
Регистрация: 13.06.2015
Сообщений: 1,598
Завершенные тесты: 2
16.02.2018, 22:35 #9
Цитата Сообщение от The trick Посмотреть сообщение
А из ядра?
А чёрт его знает, это уже надо в разделе драйверов спрашивать, тут я не спец)
0
Jin X
❗❗ RTFM 👈
3495 / 1049 / 144
Регистрация: 14.12.2014
Сообщений: 2,217
Записей в блоге: 4
Завершенные тесты: 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
❗❗ RTFM 👈
3495 / 1049 / 144
Регистрация: 14.12.2014
Сообщений: 2,217
Записей в блоге: 4
Завершенные тесты: 2
17.02.2018, 11:05 #12
Я думаю, можно где-то найти исходники звукового драйвера для PC Speaker.
Во-первых, посмотреть гуляющие по инету исходники Windows 2000.
Во-вторых, посмотреть исходники ReactOS.
0
The trick
Модератор
7601 / 2562 / 753
Регистрация: 22.02.2013
Сообщений: 3,780
Записей в блоге: 76
17.02.2018, 11:30 #13
Так разве 0x61 порт не отвечает за спикер?
Так по сути, если нет аппаратного ШИМа (как на AVR к примеру), то нужно всего 2 таймера (даже один можно или вообще без них). Один отвечает за частоту дискретизации, второй за частоту ШИМа. В первом прерывании пишем в регистр число соответствующее амплитуде семпла, во втором считаем до этого значения и переключаем бит в спикере на противоположный и сбрасываем счет. Конечно под ОС типа Windows в юзермоде не получится этого сделать.
0
Jin X
❗❗ RTFM 👈
3495 / 1049 / 144
Регистрация: 14.12.2014
Сообщений: 2,217
Записей в блоге: 4
Завершенные тесты: 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
17.02.2018, 14:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2018, 14:33
Привет! Вот еще темы с ответами:

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

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

Запись Wav в файл - C#
Пишу на C#. Имеется написанный код для записи звука с микрофона в поток(исходник будет ниже). Мне надо сохранить его в файл формата Wav...

Запаковать .WAV файл - C#
Здравствуйте! В моей программе используется .WAV файл, сейчас к нему просто написан путь. Хотелось бы сделать универсальную программу,...


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

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

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