это должно быть возможно, но если вы согласитесь с качеством, это другая история.
во-первых, wav - это импульсно-кодовая модуляция (pcm), динамик ПК - это в значительной степени история включения или выключения, поэтому есть 2 варианта ... проанализировать частоту, которую wav намеревается архивировать (будет сложно, если их несколько частоты), а затем заставьте динамик воспроизводить эту частоту или смиритесь с тем фактом, что она может быть только «включена» или «выключена», и просто «включите или выключите», если данные в wav достигают определенной предустановки порог объем / пкм.
Кроме того, wav будет иметь гораздо более высокую частоту дискретизации, чем, вероятно, может обрабатывать аппаратная часть динамика (не уверен в этом, но не в состоянии установить другие амплитуды, кроме просто «столько напряжения, сколько может выдержать устройство», либо «ноль», между которыми нет ничего здесь большая проблема
Теперь ... то, что вы хотите изучить для метода 1, это ioctl(x, KIOCSOUND, 1193180/ требуемый-частота-в-Гц); с 0, очевидно, выключен. KDMKTONE ioctl на fd в / dev / console, похоже, должен производить указанные тоны в течение периода, указанного в jiffies.
но если вы хотите сделать это правильно, я бы взял таблицу данных микросхемы, к которой подключен динамик, и просто обратился к ней напрямую, даже не беспокоясь о /dev /console или любом другом материале linux ... так что вы действительно можете , просто включите напряжение или выключите его. который дал бы pcm модулированный звук ... просто без какого-либо изменения амплитуды между "громким" и "ничем".
возможно, все методы звучат как дерьмо в любом случае ... но сначала анализ частоты, а затем воспроизведение частоты не сработает для музыки, которая обычно содержит несколько частот одновременно.
Кажется, что весь ioctl KIOCSOUND/KDMKTONE зависит от настроек clocktick в ядре, а также от наличия /dev /console и дескриптора файла для того, что он открыт. кажется, что они не «просто обращаются к выводу ввода-вывода микросхемы, к которой подключен звуковой сигнал».
программируемый таймер прерываний (PIT) Intel 8259 порт ввода / вывода $ 0042 ж / д счетчик PIT 2, кассета и динамик (XT, AT, PS / 2)
в основном обычный подход заключается в программировании его на желаемую частоту, а затем он будет издавать звуковые сигналы, но вам нужно просто «включить» или «выключить», поэтому в основном 0 Гц или очень низкая Гц, затем перепрограммируйте PIT, когда данные из wav изменяется от '1' до 0, чтобы снова его отключить ... и так далее. обработка частоты дискретизации файла WAV зависит от программного обеспечения, как и все остальное. (возьмите среднее значение или просто пропустите сэмплы, если оно слишком высокое - оно в любом случае является аналоговым, и вы можете производить только цифровой вывод;)