Возможно ли построить музыкальный плеер в сборке (я думаю по линиям NASM)? Каковы препятствия, с которыми можно столкнуться в процессе его строительства?Построение музыкального плеера со сборкой
ответ
Возможно - все возможно в сборе.
Основная проблема - мотивация - сборка не самая результативная из окружения, поэтому вы действительно должны создать что-то в сборке перед тем, как начать.
Довольно возможно. Основные препятствия будут связаны с выбранным api, хотя я не понимаю, почему это было бы слишком сложно.
Да, это так. Вы могли бы просто использовать OS API и/или звуковую библиотеку, что было бы бессмысленно, поэтому я предполагаю, что вы хотите узнать, как звук кодируется и реализуется компьютерным оборудованием.
В основном звуковая карта требует потока значений (что-то вроде 48000 в секунду, оно зависит от качества звука), которые представляют собой целевое положение диафрагмы динамика в это время.
Файлы WAV просто хранят эти цифры в файле. Это занимает много места.
MP3, OGG и т.д. применяются математические преобразования в данные для того, чтобы уменьшить объем пространства, необходимого, по:
- уменьшения точности частот, которые человеческий слух менее чувствителен к
- компресса повторяющийся звук
Чтобы действительно «достичь» всей музыкальной пьесы, вам нужно будет декодировать аудиофайл и настроить звуковое оборудование и записать в него поток данных. Можно сделать :)
Возможно, но код будет отличаться в зависимости от ОС, которую вы хотите поддержать (например, код для Windows будет полностью отличаться от кода для Linux).
Простейший случай, вероятно, будет программой для воспроизведения MIDI и/или WAV-файлов под Windows (которые он уже поддерживает довольно прямо, поэтому вы в основном просто рассказываете, какой файл играть, и оттуда он обрабатывает).
Написание чего-то вроде вашего собственного MP3-декодера в сборке было бы значительно сложнее - откровенно говоря, в том диапазоне, в котором вы должны были быть действительно фанатичным о языке ассемблера, чтобы серьезно его рассмотреть.
Я не согласен. С достойным макроассемблером, который поддерживает структуры данных, писать MP3-декодер на языке ассемблера было бы не намного сложнее, чем писать на C (конечно, предполагая, что вы достаточно квалифицированы на языке ассемблера). Это, безусловно, займет значительно больше времени, но большая часть сложности написания MP3-декодера заключается в понимании того, что необходимо, и как только вы преодолеете это препятствие, язык реализации не является большой проблемой. – Artelius
@Artelius: Мой опыт показал обратное, но кто знает, опыт может быть помехой. –
Ну, может быть, я немного * фанатичен в отношении ассемблера :) – Artelius
[Уже существует для Windows] (http://www.igorware.com/small-player), но он закрыт. –