Обновить

Комментарии 96

В лохматые годы попадался файлец READY.COM, при запуске которого из спикера раздавался бодрый хрип "Я готова, мой повелитель!"

В Arbat была такая программа. :)

У нас был girl.exe с целым куплетом и припевом известной песни известной группы.

Подскажи код, как на C в Borland C++ написать программку воспроизводящую мелодию CHRONOS с ZX-Spectrum 48К ? Это у меня самая любимая биперная мелодия.

Это не самая тривиальная задачка, так сходу я её не смогу решить. Сам по себе движок в Chronos довольно замороченый, и его трудно положить на PC. Пожалуй, проще написать прямо целиковый эмулятор Спектрума без экрана и запускать в нём оригинальный код Z80, чем разбирать и переносить. Алгоритм синтеза там примерно такой, какой я показывал в одной из статей, только пять каналов, до пяти импульсов одновременно, а проблемы в том, что пять импульсов очень сильно влияют друг на друга, каналы расстраивают, друг друга, и ноты в композиции вручную настроены так, чтобы это компенсировать в каждом конкретном случае. Ну и сама структура трека сложная, трудно распарсить.

Спасибо, оч круто, но Спектрумовский оригинал мне нравится больше. Бипер - это не просто пищалка, а самый настоящий музыкальный инструмент.

А вот ещё шикарный метал-кавер на музыку из Earthworm Jim https://youtu.be/Qs4iC8O3ocY?list=RDQs4iC8O3ocY

Вспомнил ещё вот такую штуку. Здесь играет XM-модуль, который воссоздан по данным оригинального трека, поэтому звучит максимально аутентично, но чисто, без дикого алиасинга, как в оригинале: https://www.youtube.com/watch?v=0sm8HMFzvTY&t=315s (модуль тут: https://modarchive.org/index.php?request=view_by_moduleid&query=172861).

Так ведь алиасинг это самое вкусное в биперной музыке... собственно говоря за что и любят биперную музыку...

Соглашусь. Если бы мне как музыканту нужен был чистый звук, я бы выбирал другие инструменты, а не бипер. Но есть желающие зачем-то рафинировать. Непонятно, но, как говорится, пусть расцветают все цветы.

Громадное спасибо за статью!

Рад, что наши просьбы не прошли мимо. Очень и очень полезно. Можете, пожалуйста, скинуть exe-шник самим послушать?

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

Без регистрации скачивать не даёт ((

Тогда попробуйте вот отсюда.

Скачал, но запустить не смог.

Это программа для MS-DOS. Её нужно запускать на старом компьютере или в эмуляторе DosBox.

Ясно, спасибо.

Вопрос - можно ли средствами VBScript пикнуть системным бипером на win 10/11?

На winXP работало такое:

Set S = CreateObject("WScript.Shell")
S.Run "%comspec% /c" & Chr(7),0

Сейчас эту фишку отключили. А надо именно пикнуть спикером, а не звуковухой.

В Linux по-моему до сих пор этот драйвер есть ;-)

Называется - snd-pcsp, только надо выгрузить пищащий драйвер спикера (который pcspkr).
Пробовал, работает. Но на мелких спикерах - тихо.

"Спикеры: классический и современный"
Не, не так - спикер и пискер. Таки разные весовые категории.
Когда пошли "мультимедийные" компьютеры - со встроенным аудио и часто сидиромом, "спикер" частенько стали подключать к звуковой карте. Также у брендовых компиков встречается подобное.

Covox, mod, stm - наше всё.

Синтезатор Ямаха - апогей апофеоза.

Спасибо за ностальгии сеанс.

У меня на моей сборке подключён к SB16, если нет входного канала для Speaker, то я сделал схему подключения через разъём дочерних плат Подключаем PC-speaker к звуковой карте ES1868F

Наш товарищ выпускал даже мелкосерийную "постсоветскую" аудиокарту Selen Sound Card. По сути улучшенный стереоковокс в ISA-исполнении. Но звук был уже на порядок лучше, также с усилителем.

Еще из интересного: в описании сказано, что к пакету прилагалась и спаянная на коленке железка изображающая из себя двухканальный ковокс с усилителем и в которую, железку, можно было воткнуть колонки. Называлась сия аудиокарта -- SeleN sound card, и стоила она в 93 году (надеюсь!) 25к руб наличными. И естественно в сети отсутствует хоть какая-нибудь информация об ее устройстве. Есть только упоминание о некой муз. группе из сурового города Челябинска, что использовала этот муз. редактор и муз. железку в своем творчестве. Самое здесь удивительное что это группа зачем-то все еще существует и имеет свой сайт, где можно послушать звучание ковокса проливая при этом ностальгические слезы и утираясь рукавом.

http://old-dos.ru/index.php?page=screen&do=show&id=13598

Агаа..
Агаа..

Подбор музыки в этой статье просто офигенный! Я не слышал ранее из этого вообще ничего. Но при этом мои олдскулы не просто свело - а разорвало. Просто внезапное и мгновенное перемещение в прошлое. Спасибо.

Напоминает DSD формат.

Так это он и есть. Только фильтрацию НЧ обеспечивает физические ограничения самого динамика.

Нет! Описанный в статье PWM это способ проигрывания PCM сэмплов. DSD это другой алгоритм и преобразовать в него из PCM прямого способа не существует.

Я в свое время реализовывал на i286 сканер и проигрыватель в DSD (сам правда того не зная, просто придумали с товарищем и реализовали). Для сканирования (оцифровывания) звука мне пришлось "изобрести" простейший девайс на основе триггера Шмидта, который преобразовывал аналоговый сигнал в однобитовую последовательность разной длительности и подавал на сигнал готовности принтера в LPT порт где захватывался программой написанной на Turbo C. Для проигрывания эта же последовательность один к одному выводилась в бит управления PC Speaker-ом. Звучание по качеству было несколько лучше чем описанный в статье PWM, так как в этом способе нет частоты дискретизации как таковой.

ЗЫ: DCD широко используется в современной Hi-End аудиотехнике как раз по причине отсутствия артефактов квантования (антиалиасинга).

Не хочу спорить, но DSD - это прежде всего однобитный формат звука просто исходя из названия, а как именно он получен - уже вторично, лишь бы частота дискретизации совпадала. Из интереса я и сам делал (программно) несколько модуляторов из PCM в DSD, описание которых нашёл в открытых источниках.

а как именно он получен - уже вторично, лишь бы частота дискретизации совпадала.

В DSD нет частоты дискретизации в том понимании в котором она есть в PCM. Там частота сэмплирования битов на несколько порядков выше чем у PCM. Например, у DSD256 частота сэмплирования составляет 11.2896 МГц. DSD поток нельзя переконвертировать в PCM без потери качества, это другой метод преобразования аналогово сигнала в цифровой.

DSD отличается от PCM только тем, что он однобитный, вот и всё. Понятие частоты дискретизации у них абсолютно идентично и просто должно совпадать для устройств записи и воспроизведения. Преобразование из PCM в DSD и обратно с заданной шумовой полкой без потери качества вполне возможно - теорема Котельникова/Найквиста/Шеннона в том числе и об этом. Это можно проверить экспериментально. Я проверял.

Для тех, кто не знает. Идея DSD в следующем. У нас есть сигнал в диапазоне от 0 то 22050Гц. К нему аддитивно добавляется шум в диапазоне от 22050Гц до например 352800Гц таким образом, чтобы он стал однобитным. Как такое возможно - можно получить понимание через усечённое разложение меандра в тригонометрический ряд. И раз частотные полосы не пересекаются - то и потерь информации в исходном сигнале не будет (в теории). В радиовещании принцип схожий, только там идея в смещении всех частот вверх при передаче и обратно вниз при приёме, с фильтрацией как и от шума, так и от других радиостанций в других полосах частот.

Теорема Шеннона/Найквиста/Котельникова как раз о том, что сигналы полученные разной частотой дискретизации нельзя преобразовать один в другой без потерь. У DSD и PCM частоты различаются на несколько порядков. На практике их делают кратными друг другу чтобы снизить потери при цифровом преобразовании. Но это совершенно разные методы кодирования сигнала.

На практике их делают кратными друг другу чтобы снизить потери при цифровом преобразовании. Но это совершенно разные методы кодирования сигнала.

Дискретизацию PCM просто умножают на некоторый множитель перед дельтасигматизацией. При этом у каждого разный метод: кто-то линейно интерполирует полученные новые отсчёты PCM, кто-то нет, а кто-то по хитрой формуле скругляет. Это всё всё равно "придумывание" информации которой не было.

DSD поток нельзя переконвертировать в PCM без потери качества, это другой метод преобразования аналогово сигнала в цифровой.

Можно. Синхронизируемся на биты, интегрируем. Выдаём результат как PCM.

Потери качества будут уровня ±1-2LSB, что на уровне шумов ЦАП-а.

Давайте спросим у ChatGPT какой шум в dB будет внесен при транскодинге DSD256 в PCM16 48kГц.

What is the noise in dB when converting DSD256 to PCM16 48k

When converting DSD256 (Direct Stream Digital at 11.2896 MHz) to PCM 16-bit at 48 kHz, the noise floor you end up with depends heavily on:

  • The quality of the DSD-to-PCM conversion process, especially the low-pass filtering stage used to remove ultrasonic noise inherent in DSD.

  • The bit depth and sampling rate of the PCM target format (in this case, 16-bit / 48 kHz).

  • The dither used during bit depth reduction.

Let's break it down with approximate figures:

🔧 DSD256 Characteristics:

  • Sampling rate: 11.2896 MHz (256× CD rate)

  • 1-bit quantization

  • Very high noise shaping — pushes quantization noise to ultrasonic frequencies

In the audible band (20 Hz – 20 kHz), DSD256 can have an SNR of over 120 dB, sometimes even approaching 130 dB, depending on implementation.

However, the ultrasonic noise (above ~30–50 kHz) is extremely high — on the order of -20 dBFS or worse — so it must be filtered out when converting to PCM.

🎚️ PCM16 at 48 kHz Characteristics:

  • 16-bit dynamic range = ~96 dB theoretical

  • Sampling rate = 48 kHz (Nyquist = 24 kHz)

When you convert from DSD256 to PCM16/48k:

  1. A low-pass filter (typically steep, ~20–24 kHz) removes ultrasonic noise.

  2. The signal is downsampled from 11.2896 MHz to 48 kHz.

  3. Dithering is applied to avoid quantization distortion when reducing to 16 bits.

📉 Resulting Noise Floor (Estimates):

After conversion:

  • Audible noise floor: roughly -90 to -96 dBFS (depends on dithering)

  • Effective SNR: Limited by PCM16 to ~96 dB max

  • Noise added by conversion: Not so much added noise as lost resolution compared to the original DSD256 — you're dropping from 120–130 dB dynamic range to ~96 dB.

So the "noise" in the result is essentially:

  • The PCM16's limited resolution (adds quantization noise if not dithered properly)

  • Any leftover artifacts from imperfect filtering (poor filters might let some DSD ultrasonic noise alias into the audio band — this is rare with good converters)

✅ Summary Answer:

The effective noise floor after converting DSD256 to PCM16/48k is around -96 dBFS, limited by the 16-bit depth. The original DSD256 may have had >120 dB SNR, so you're effectively losing 25–30 dB of dynamic range. However, if done correctly, there should be no audible increase in noise — just a reduced headroom/resolution compared to the original.

Let me know if you want to compare with PCM24/96 or look at spectrograms.

Итого:

The effective noise floor after converting DSD256 to PCM16/48k is around -96 dBFS, limited by the 16-bit depth. The original DSD256 may have had >120 dB SNR, so you're effectively losing 25–30 dB of dynamic range.

При наложении нескольких аудиозаписей (что часто используется в звуко-записывающей индустрии), это создаст весьма заметное на слух искажение звука. Поэтому в индустрии звукозаписи в формате DSD не конвертирую и не обрабатывают стандартными средствами. Треки в DSD микшируют прямо в этом формате, а для проигрывания имеются специальные аппартные средства.

Поэтому в индустрии звукозаписи в формате DSD не конвертирую и не обрабатывают стандартными средствами. Треки в DSD микшируют прямо в этом формате, а для проигрывания имеются специальные аппартные средства.

Забавно. Я всегда думал, что DSD это конечный формат, как PDF у печатников. Как можно редактировать формат, один из неотъемлемых параметров которого - реальное время? PCM это формат вне времени. Оно там закодировано как дискретизация, но для обработки оно не требуется, поэтому обработка сводится к простым математическим операциям над уровнем напряжения, закодированным в сэмпле PCM. А у любой дельтасигмы есть времязадающий элемент, который находится в АЦП и в ЦАП (обычно это RC цепочка, иногда даже RCL). И информации об этом элементе нет в цифровом потоке. Т.е., DSD следует рассматривать как псевдоаналоговый сигнал и обрабатывать его надо в режиме реального времени, как обычный аналоговый сигнал.

И да, в DSD максимально теоретическим возможностям формата звучат только те записи, которые сразу из аналога писались в DSD. Всякие "аудиофильские" конвертации из PCM всегда упираются в лимиты исходного PCM. Единственный вариант формирования DSD из цифрового источника я вижу лишь в усилителях, где у тебя по сути прямой сверхмощный ЦАП, который сразу работает на АС, поэтому никаких искажений аналогового характера у него нет. Собственно, такие усилители существуют.

Все верно. PCM записи конвертировать в DSD нет ни какого смысла, но некторые упоротые ведутся на эту мульку - типа DSD это круто. Действительно круто, если оцифровано прямо в DSD с аналоговой мастер-копии на специальной технике, но добыть такие записи достаточно сложно. А проверить как была получена DSD оцифровка - невозможно. Так они гоняют друг другу копии Pink Floyd-а в DSD фомате, которую кто-то когда-то левой пяткой перегнал с CD и выдал за мастер-копию. :-)

Я как-то рассматривал вариант проектирования "аудиофильского" конвертора DSD512 (22.5792 MHz) в 32-х битный PCM (I2S) с помощью ПЛИС, чтобы проигрывать на крутом ЦАП-е. Всё это оказалось крайне заморочено и с непонятной конечной целью. :I

Я как-то рассматривал вариант проектирования "аудиофильского" конвертора DSD512 (22.5792 MHz) в 32-х битный PCM (I2S) с помощью ПЛИС, чтобы проигрывать на крутом ЦАП-е. Всё это оказалось крайне заморочено и с непонятной конечной целью. :I

Почему? Там же не ШИМ и конвертация относительно простая. Счётчик и сумматор.

Там основная заморочка была в источнике сигнала - требовалось реализовать машину, на ней lwIP, с помощью которого реалиовать UPnP. Это для того,чтобы пользователь мог с компа посылать DSD поток на ЦАП.

Причина, по которой нельзя обрабатывать DSD потоки напрямую очень проста и очевидна - если например вы просто смикшируете 2 DSD потока - он перестанет быть однобитним. Где-то возникнет ситуация, когда 1+1=2. А уровни квантования 0,1,2 - уже не DSD.

А это дальше обрабатываем вторым delta-sigma - из 2-х бит делаем 1 и всё.

Интересная мысль, обязательно проверю её работоспособность.

Попробовал. В принципе, работает, но есть нюанс - шумовая полка в полезной полосе частот поднимается. Вот, собственно, результаты измерения спектра:

Красный и зелёный - промодулированные синусоиды сигма-дельтой 2-го порядка, синий - их сумма промодулированная ещё раз.

Постфактум такой результат выглядит вполне логичным - ведь частотный диапазон, выделенный под компенсацию ошибок квантования - оказался заполненным информацией, искажающей представление об исходном сигнале с точки зрения модулятора. Потому что условие линейности у них не соблюдается. А вот если эти шумы отфильтровать - то всё должно быть норм, вот только ничем не будет отличаться от самого обычного сведения вавок.

Эх, а идея была красивая.

А вы читаете, что вам искусственный идиот написал в процессе, а не в summary?

Он вам пишет, чисто теоретический вариант, что шум лимитирован 16-битами. Во сколько будете усреднять, столько по шуму и будет. (Собственно он и написал ровно то же, что написал выше я - "в пределах ±1LSB ЦАП").

Спасибо, теперь я понял, что на БК0010 еще в середине 90-ых написал на ассемблере DSD магнитофон: там входной звук через штатный магнитофонный вход после триггера Шмитта поступал в процессор и как можно часто копировались в ОЗУ все состояния 0 и 1, а потом проигрывались в обратном порядке. Вполне нормально звучало для тех времен (с самой зеленой травой и самым голубым небом).

Нет DSD - это дельта-сигма модулятор, там PDM + noise shaping. А здесь в статье - PWM.

Минус PWM - то что у него в спектре всегда есть частота работы PWM модуля. У PDM - она сильно выше и более "размазана" по спектру, и соответственно её не слышно и ещё сильно проще отфильтровать.

Напоминает, но им не является. PWM (PCM) и DSD - два разных алгоритма оцифровки звука.

С удовольствием послушал и вспомнил детство

У меня первой игрой, которая поразила музыкой на спикере, был Star Control II, ещё до пинбола. Помню, после стандартного скрипа просто не мог поверить в такое чудо!

А я помню Myth. Часто запускал но не играл а слушал заставочную музычку на PC Speaker:

PS В exe файле в ресурсах был MOD и его можно вырезать. А вообще, треккеры нормально играли на PC Speaker. Например вот:

PPS Поменял видос с Myth, теперь можно сравнить как оно звучало на PC Speaker и нормальной SB карте.

Так верхняя тема из игры Ramparts.

о, vpreg.exe!

Люто плюсую, тоже мелодия из Myth - одна из самых любимых трекерных мелодий на PC Speaker, и тоже в саму игру я никогда толком не играл, но вот врубал ради заставки с музыкой - регулярно.
Вторая из самых любимых мелодий - это "64mix.stm", вот её мог часами слушать в детстве :)
А ещё в Xenon 2 была забойная мелодия на заставке, но там по-моему попроще звучало, без полифонии.

а почему Myth, когда эта игра называется Knightmare? Откуда это пошло, что это Myth?

В наших краях эта игра была как "myth.exe". И все её запомнили именно так, а не как на заставке. Почитал в интернете - пишут что действительно встречалась как "Myth".

а еще пишут, что музыку сперли из спековской игры

Эм, Knightmare 1986, RamParts 1988. Причём, Knightmare изначально на MSX вышла.

В MSX-версии 86-го года и заставки этой нет, и музыки той нет https://www.youtube.com/watch?v=VjzHcunnNaE

А DOS-версия сделана некими Friends Software в 1992-м году. Скорее всего это чисто любительский порт, без каких либо копирайтов.

Однако!

Возможно Myth.com это загрузчик игры из MSXDOS на Ямахах? Ведь с КУВТ игровых картриджей не шло, и ROM игр грузился специальным загрузчиком.

А DOS-версия сделана некими Friends Software

Которые приложили руки к созданию "неких" Dos Navigator и The Bat :)

https://www.old-games.ru/forum/blogs/friends-software.3303/

http://dgmag.in/N48/DowngradeN48.pdf

Статья "ДРУЖЕСТВЕННЫЕ ПРОГРАММЫ ОТ FRIENDS SOFTWARE"

А вот ссылка на сам рекомпилятор на OLD-DOS.RU

Program Recompile System (DAO.EXE) в работе
Program Recompile System (DAO.EXE) в работе

Да, это из спектрумовской игры. Кстати, есть ремейк этой музыки в современном качественном исполнении.

Пхе, pwm битовыми масками!

А как вам динамическая генерация в турбопаскале чисто на sound() и delay() в циклах ?! Местами 808 драммашина получалась. Ну, почти ....

Я помню у же после появления звуковых карт мне попалась такая программа, которая могла wav файлы проигрывать на PC SPEAKER , результат конечно потрясал. Правда лучше всего было на нём проигрывать всё же особую 8-ми битную музыку или что-то вроде такого, т.к. на произвольном файле отличия от звуковой карты очень чувствовались всё же.

Как всегда, снимаю шляпу.

А кто нибудь помнит как назывался текстово-командный проигрыватель .STM файлов под MS-DOS образца 1992 года (не Scream Tracker) ? Его можно было оставить резидентом (TSR) играть музыку в фоне, при этом спокойно прогать в Borland C или редактировать текст в Norton Commander. :-)

Начиная с висты x64 винапи функция BOOL Beep( [in] DWORD dwFreq, [in] DWORD dwDuration ); выводит звук на звуковую карту, а beep.sys = \Device\Beep более не обращается к 8253 таймеру через HalMakeBeep чтобы воспроизводить писк, а тупа помечает IRP как обработаный.

Когда у тебя есть PC Speaker который коннектся к материнке и ты заметил чью-то просьбу «дать подписаный драйвер для писи-спикера» в чате по C++, то заморочился, получив дорогущий EV сертификат подписи для Kernel Mode Signing и честным путем получил партнерку Microsoft с многострадальными проверками в их Hardware программе, и только тогда воссоздал такой же драйвер пищалки на тот же лад как и оригинальный beep.sys, подписал его, помучался с WHQL сертификацией и тестами на реальном железе, отправил в Microsoft на Manual Review, наконец то получил заветный архив с подписаным .sys, .cat и. .inf. И наконец то легендарный спикер ожил на Windows 10/11

Вот такой сертификат в HTML формате
Вот такой сертификат в HTML формате

И ссылку на него, где его можно скачать любому (ссылку специально разметил как «код» как доказательство. оно видимо для того и создано):

https://partner.microsoft.com/en-us/dashboard/hardware/Driver/DownloadCertificationReport/84240060/14077608983850926/1152921505696466172

Если кому интересно - думал написать статью как это всё делалось - от кода до работы с утилитами MS для получения подписи Microsoft на драйвер. Надо ли - решать вам…

Пиши конечно. Две статьи: Техническую и организационную

Ну решено. В октябре-ноябре запилю

Надо!

Одно ядро процессора можно пожертвовать на звук :)

Можно и даже нужно по новой написать это дело все, и на гитхаб. В том что щас скомпилен нет спинлока на CMOS. В теории могут быть очень редкие беды с системным временем, но все равно …

Источник - исходники ReactOS
Источник - исходники ReactOS

Отвал башки! Я ДЖВА ГОДА ЖДУ ТАКОЙ ДРАЙВЕР!!!!!!!11111

Говорят, под вистой и семеркой можно было через пляски с бубном запустить драйвер от WinXP x64. Под восьмеркой ещё работала программа BaWaMi. Она позволяла PC-спикером играть midi-файлы, видимо через какой-то свой хитрый прямой доступ. Ну хоть что-то. На 11 уже не работает, на 10 не пробовал.

Когда и на каких условиях можно будет скачать?

НЛО прилетело и опубликовало эту надпись здесь

У PC сам бог велел PWM синтез использовать, как бы все для этого имеется.
Но вот на ZX-Spectrum делать PWM вывод звука - это мало кто сумел. Я давно думал что почему такого практически нет - ну вот не смог найти примеры. А недавно на CC'2025 умелец выпустил как на мой взгляд до этого невиданное на ZX. Трек-кавер Final Signal.
https://youtu.be/92Ja4IuXoXM

Можно ли эту тему как-то рассмотреть, и может быть, развить, в части именно ZX?..

Можно! Автор этой демки некоторое время сам прислал мне код и объяснил, как это работает, с целью, чтобы я преобразовал демку в более универсальный движок, под который можно было бы писать любую музыку удобным способом. В текущем виде оно злостно захардкожено именно под этот трек и его звуки. Пока вникаю, и пожалуй, это может стать неплохой темой для очень хардкорной статьи. Надо же иногда писать и такие, не всё верхам ходить.

Не в курсе, использовался ли ещё где либо, в играх ли, или демках, такой подход? Я знаю что в том же движке wham в целом используется двухканальный pwm, и в каких-то других движках вроде тоже немного есть. Но, насколько я знаю, такое не шибко практиковалось.

В Wham нет PWM. Я недавно писал подробный разбор, как работают подобные ему движки. PWM в музыке на ZX стал применяться только в 2010-х, в основном utz делал подобные вещи, целую пачку движков. Но они были чуть попроще, чем Final Signal. Почти никто не осилил их использование, вот редкий пример.

Шпашибо большое. Было приятно вспомнить про PWM.

Про Magic Mushroom написали, могу упомянуть ещё, что был проигрыватель mp3 под ДОС, который выдерживал на 486 работу через pc-speaker.

А ещё под BeOS 5 был драйвер спикера, который в силу чудесатости операционки не прерывал работу графического интерфейса.

Отличная статья, особенно порадовало видео с Alley Cats!

Ещё был Ямаха КУВТ.
Да, это другая весовая категория, но вспомнить стоит.

@shiru8bit а видел эту демку для Commodore PET https://www.pouet.net/prod.php?which=105104 ? Там и цифровой звук на "спикере" и графика вместо символов... Колдовство какое-то )

Ух ты! Нет, ещё не видел. Я понимаю, как это работает, это типа трюка в AREA 5150, строки символов высотой в пиксель, и подбираются самые похожие на нужные сочетания пикселей символы, а цифровой звук кидается в сдвиговый регистр. И ещё там фишка с градациями яркости, которую открыли пару лет назад, когда выдача пикселей не выключается во время обратного хода луча. Но одно дело понимать, а другое — реализовать это. Очень круто. Кажется, тема PET'а окончательно раскрыта и закрыта.

Кажется, тема PET'а окончательно раскрыта и закрыта.

В контексте демосцены никогда в этом нельзя быть уверенным :)

Как минимум в плане дизайна еще есть куда двигаться. В этой демке технологически все вроде круто, но твоя "Back to the PET" смотрится лучше (да и слушается тоже).

И как я понимаю, эта демка под PET 8296, который чуть более навороченный, чем PET 4016?

По дизайну да, конечно есть куда работать. PET 8296 да, чуть помощнее. Это вариант на 80 символов в строке плюс 128 килобайт ОЗУ (96 дополнительных к штатным 32, поэтому 96 в названии) плюс два дисковода. Кроме памяти принципиальных улучшений нет, процессор работает на той же частоте. На 40-символьных моделях с одной стороны жить попроще, вдвое меньше байт в экранной памяти ворочать, а с другой, вот этот режим псевдографики лучше смотрится в 80 символах. К сожалению, моделей с переключением видеорежима не было.

Извиняюсь за вопрос немного не по теме, но очень для меня актуальный(теперь): недавно сделал апгрейд компа до платы (https://www.asus.com/ru/motherboards-components/motherboards/prime/prime-x870-p-wifi/) на которой отсутствует возможность подключения speaker как такового. Существует ли в природе адаптеры для разъемов PCIex16(других на плате нет), чтобы на выходе получить заветный классический Speaker или контакты для его подключения с возможностью достучаться до него кодом, как в классическом/родном расположении на мамке?

Были компьютеры, у которых speaker выводился в звуковую карту и сигналы издавала акустика компьютера. Но в данном случае производитель отказался от спикера, в инструкции вся диагностика сводится к "подождать 30 секунд, выключить и проверить перемычки,кабели".

PC Speaker — это встроенный динамик, изначально в IBM PC, который умеет генерировать звуки через программируемый таймер PIT (8253/8254).
Порты:
0x61 — порт управления/включения динамика
Биты:
Bit 0 — выход на динамик
Bit 1 — соединение с таймером 2
Управляет тем, включён ли сигнал таймера на динамик.
0x60 — порт клавиатурного контроллера
Иногда используется для чтения/записи состояния клавиатуры, но не напрямую для динамика.

Классическая схема:
Программируем таймер PIT, канал 2, частота = нужная нота.
Включаем PC Speaker через бит 0 порта 0x61.
Динамик издаёт тон, пока таймер посылает сигнал.

Подключение к программируемому таймеру
PC Speaker напрямую связан с PIT, канал 2.
Программируется так:
Пишем частоту в регистры PIT (обычно порт 0x43 — команда, 0x42 — данные канала 2).
Активируем бит 0 порта 0x61 → звук появляется.

Можно ли “получить PC Speaker” на современной плате?
Физически напрямую — почти нет, если контактов на материнке нет.
Программно - через OS-эмуляцию, либо через внешний модуль (Arduino/FPGA).

В BIOS может быть “Internal speaker: Disabled”, “System beep only via front panel or audio”.
Программный контроль через 0x61 всё ещё возможен, но физического динамика нет.
Как быть:
Использовать встроенную звуковую карту / драйверы OS
Linux: beep через /dev/console или ALSA
Windows: MessageBeep() через API
Эти методы эмулируют “PC Speaker beep” через стандартный аудиовыход.

Подключить внешний динамик к выводам 0x61
На старых платах можно напрямую припаять пьезо-динамик к линиям speaker-out (выход порта 0x61).
На современных платах это почти невозможно: нет контактов либо сигнал ограничен по току.
Эмуляция через FPGA или внешний модуль.
Можно собрать простой PWM-конвертер сигнала порта 0x61 - звук на динамик.

".....Эмуляция через FPGA или внешний модуль..." Пошёл именно этим путём: PC Speaker <--->Arduino UNO <---->PC

Я всё мечтаю, что кто-нибудь создаст драйвер для современной винды, который просто позволит выводить такой вот плохонький wave-звук на спикер. Чтобы спикер просто был в перечне виндовых устройств вывода звука, и можно было его выбрать и все звуки системы и приложений слушать через него.

Я писал об этом лет 6-7 назад в комментах в какой-то аналогичной статье про спикер, мне хаброжители даже предлагали там какие-то варианты, но простого и универсального решения нет.

Я слышал, подобный драйвер вроде как был для Windows 2000.

Так на современных компьютерах физический спикер отсутствует как класс (почему-то). Его ещё и поискать надо.

К слову, про звук на PC Speaker.
Внезапно вспомнил, что в MS QBasic/Quick Basic была команда PLAY, позволявшая пищать нотами.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds