На что способен PC Speaker

    Известный теперь как «системный динамик», а то и просто «пищалка», PC Speaker появился на свет в 1981 году вместе с первым персональным компьютером IBM. Наследник нескольких поколений больших компьютеров для серьёзных дел, он с рождения был предназначен лишь для подачи простейших системных сигналов, и не мог достойно проявить себя в озвучивании главенствующих на домашнем рынке развлекательных программ. Сильно уступая звуковым чипам специализированных игровых систем, пропадая в тени вскоре появившихся продвинутых звуковых карт, он поддерживался многими разработчиками по остаточному принципу — как опция, выдающая хоть какой-нибудь звук при отсутствии лучших альтернатив. За нечастыми исключениями, через спикер проигрывались грубо упрощённые, полностью одноголосые версии мелодий, изначально сочинённых для гораздо более мощных устройств.

    Музыкальный альбом «System Beeps» написан для PC Speaker с использованием той же базовой техники из старых игр, и согласно типичной формуле ретро-компьютерного около-демосценового творчества призван раскрыть многие годы оставшийся неисследованным потенциал этого простейшего звукового устройства. Собственно послушать результат и составить своё мнение об успешности данного мероприятия можно на Bandcamp или в видео ниже, а дальнейший текст углубляется в устройство спикера, историю проекта и способы достижения подобного результата для тех, кто хочет знать больше.


    Устройство PC Speaker


    Технически спикер представляет собой небольшой динамик или пьезоизлучатель, напрямую управляемый один из каналов системного таймера 8253, делящего входную тактовую частоту 1.19 МГц на задаваемое программой 16-битное значение. Для получения звука используется режим счёта, при котором таймер выдаёт меандр, то есть квадратную волну. Это небольшой, но всё же шаг вперёд по сравнению со звуком более ранних или бюджетных компьютеров типа Apple II и ZX Spectrum, где динамик подключался просто к однобитному порту ввода-вывода, а генерацией звука обязан был заниматься процессор. Использование канала таймера позволяет процессору просто выбрать нужную высоту звука и продолжать заниматься другими делами. Однако, процессор может программно синтезировать разнообразные по характеру звуки и настоящее многоголосие. PC Speaker же не может звучать громче или тише, мягче или ярче. Всё, на что он способен без постоянного вмешательства процессора — пищать или не пищать с заданной высотой звука одним и тем же неизменным тембром.

    При проигрывании звуковых эффектов или музыки процессор обновляет состояние спикера — включает-выключает звук и изменяет его высоту — через некоторые промежутки времени. Как правило, эти изменения происходят в прерывании от нулевого канала того же системного таймера. Стандартно это 18.2 Гц, но игры нередко меняют это значение в сторону увеличения, в диапазоне от 30 до 200 гц, в зависимости от игры.

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

    Одноголосое многоголосие


    Так как спикер способен воспроизводить только один звуковой канал или «голос», то есть только одну частоту в один момент времени, а для музыкальных целей этого очень мало, программисты и авторы музыки изыскивали способы получить мнимое или настоящее многоголосие. Можно выделить три основных подхода.

    В первом подходе спикер генерирует звук как обычно, проигрыватель музыки обновляет частоту звука по таймеру с некоторой частотой и почти не нагружает процессор. Но при этом одновременно проигрываются два-три виртуальных канала с разными партиями, а значения частоты и включения-выключения звука по очереди выводятся с них на реальный спикер в каждом обновлении. Например, при двух каналах в первом обновлении выводится звук с первого виртуального канала, а в следующем — со второго. Подобным образом реализована полифония в играх Lotus III и Xenon 2. Так как зачастую один виртуальный канал играет партию баса, а другой мелодию, и эти партии имеют паузы, получается чередование либо далеко отстоящих друг от друга нот, либо чередование ноты и тишины, что приводит к постоянному треску, неприятному для уха. Уменьшить его можно за счёт отказа от пауз в партиях, как в Golden Axe, что существенно ухудшает выразительные средства (паузы в музыке важны настолько же, насколько важны ноты), либо за счёт отключения чередования каналов в моменты, когда в одном из них пауза, что даёт более чистое звучание одиночных нот, как в Stunts.

    Второй подход можно наблюдать в играх Lucas Art, в которых качеству спикерных версий музыкального сопровождения традиционно уделялось больше внимания. Как правило в них звучит преимущественно одноголосая мелодия с редкими вставками разнесённых по времени басовых и ритмических элементов, прерываемая очень короткими и отрывистыми звуками партии второго, вспомогательного канала, например арпеджио или ударными. Иначе говоря, каналы чередуются не постоянно, а только в короткие моменты времени, когда второй голос заглушает первый. Примеры можно слышать в играх Monkey Island, Loom, Indiana Jones, и пожалуй самый продвинутый вариант аранжировки в Zak McKracken and the Alien Mindbenders. Это создаёт более убедительную и приятную для слуха иллюзию полифонии, хотя и довольно ограниченную.

    В третьем подходе спикер не генерирует звук сам по себе, а используется как ЦАП, через который воспроизводится программно синтезируемый процессором звук или оцифровки. Этот процесс требует значительных вычислительных ресурсов, практически полностью загружая работой обычный 8086, поэтому метод обрёл популярность с распространением 80386. Качество проигрываемого таким образом звука невысоко и объективно уступает даже простейшему самодельному Covox из горсти резисторов, но на тот момент это было впечатляющим достижением, на одну из реализаций которого, RealSound, даже был оформлен патент и велось сублицензирование технологии.

    Превращение спикера в ЦАП может быть выполнено простым включением-выключением звука при запрещённом счёте, что даёт простейший 1-битный ЦАП, либо использованием звукового канала таймера для генерации коротких импульсов различной длины на задаваемой системным таймером частоте (ШИМ), что превращает его в более качественный 6-битный ЦАП. Первый вариант можно слышать в многоканальной музыке в играх Fantasy World Dizzy и Hard Drivin', второй чаще применялся для воспроизведения музыки на основе сэмплов, например, в Pinball Dreams. Также он использовался в таких занимательных проектах прошлого, как TEMU и VSB — программных эмуляторах трёхканального звукового чипа Tandy и цифровой части Sound Blaster, позволяющих в отсутствие этих устройств выводить предназначенный им звук через спикер (требуется 386SX и выше).

    Альбом и история создания


    Изначально плана делать именно музыкальный альбом у меня не было. Был творческий поиск аудиовизуального образа для проекта игры со стилизацией под псевдографические игры эпохи XT, и для максимального аутентичного образа возникла идея написать не просто стилизацию, а музыку, действительно возможную на PC Speaker, следующую классической музыкальной формуле 8-битных игр — зацикленные треки продолжительностью около минуты. Использовать цифровой звук или программный синтез мне не хотелось, так как результат едва ли соответствовал бы духу эпохи, и не обладал бы особым характером. Одноголосые же мелодии были предметом моего интереса со времён ZX Spectrum и знакомства с играми Ping Pong, Stardust, Score 3020. И раз уж выдался такой случай, захотелось попробовать написать именно одноголосую музыку, но получить какой-то необычный результат за счёт аранжировки — заманчивый вызов для композитора.

    Работа над музыкой увлекла даже больше, чем работа над игрой. В процессе горения идеей был разработан и опубликован VSTi плагин PCSPE, сделано несколько набросков мелодий и пробных кавер-версий старых треков, чтобы развить технику работы с одноголосыми аранжировками и найти общие решения по звуку. Позже стало ясно, что результат всё же не соответствует видению игрового проекта, да и сам проект постепенно ушёл в стол. Но музыкальный материал остался, а услышанный потенциал наводил на мысль, что было бы неплохо по-быстрому оформить его в виде небольшого отдельного сборника мелодий для MS-DOS, хотя бы в качестве демонстрации возможностей плагина.

    По-быстрому не получилось, дело затянулось, несколько треков переросло в несколько десятков, сборник случайных мелодий эволюционировал в тематический альбом, планы менялись, сроки сдвигались. В итоге завершение задумки заняло полтора года, с июля 2017 до января 2019 года. За это время я успел сделать AONDEMO и написать для него трек (звуковое железо АОН практически повторяет PC Speaker), а также поучаствовать в разработке звукового кода и утилит для игры Planet X3, куда в качестве титульного трека также вошёл самый первый написанный для сборника трек.

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

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

    Сторона B включила 6 треков, предположительно менее удачных, которые являлись кавер-версиями моих старых работ для других платформ, или были основаны на более-менее проработанном старом материале, изначально предполагавшем совсем другие форматы — от XM-модуля до поп-панк песни. Сюда же был включён трек, уже засветившийся в Planet X3.

    Сторона X включила трек из AONDEMO с минимальными изменениями. Такое отделение сделано в качестве шутки юмора.

    Сам альбом выполнен в виде программы-проигрывателя для MS-DOS 3.3 и выше, которая запустится на IBM PC XT при наличии хотя бы 256КБ ОЗУ и видеоадаптера CGA. Так как оригинальная карта CGA подвержена так называемому «снегу», визуальному артефакту при попытке обновления экрана во время хода луча по растру, программа представлена в двух версиях — sbx.com без эффекта анализатора спектра, но и без снега, и sb.com с таковым эффектом. Для более плавной отрисовки анализатора желательно иметь процессор помощнее. Разумеется, боле современные компьютеры также сгодятся, например, с загрузкой FreeDOS с USB, равно как и эмуляция DosBox.

    Музыкальная составляющая


    В альбоме не применяется никаких программных трюков, типа синтеза звука силами процессора и использования спикера в качестве ЦАП. Технология самая традиционная — генерируемая системным таймером строго монофоническая квадратная волна, с обновлением высоты звука с относительно большой, но не из ряда вон выходящей частотой 120 Гц, что вполне по силам классическому XT и оставляет достаточно процессорного времени для выполнения других задач, помимо проигрывания музыки.

    Весь секрет в особом подходе к написанию мелодий и аранжировок. Здесь очень помог предшествующий опыт в разных смежных областях — опыт написания классического чиптюна для звуковых чипов прошлого, в котором часто приходится совмещать несколько партий в одном канале методом чередования и наложения; опыт разработки звуковых движков для игр на старых компьютерах, где звуковые эффекты заимствуют каналы у музыки, заглушая её; а также опыт сочинения оригинальной музыки для дисковода. Как выяснилось позже, по сути я развивал подход к спикерной музыке, применявшийся Lucas Art, хотя на момент начала работы слышал только тему из Monkey Island.

    Одна из интересных проблем, которую понадобилось решить практически в начале работы — инструменты ударных и перкуссии. В чиптюне они как правило делаются с применением шумового канала, но возможности проигрывать шум на спикере при частоте обновления порядка десятков-сотен герц нет.

    Бас-бочка и томы неплохо получаются и без шума, в виде простых слайдов вниз с разной скоростью и длительностью — бочка побыстрее и покороче от низкой ноты, томы помедленнее и подлиннее от более высоких нот. А вот главный ударный инструмент, малый (рабочий) барабан, в виде простого слайда звучит неубедительно и не прорезает загруженный другими элементами микс. Здесь сработал трюк, часто встречающийся в имитации рабочего барабана на SID и AY-3-8910 — кратковременное выключение звука в начале слайда, создающее эффект дроби. Это вносит в звучание достаточное отличие от других перкуссионных инструментов, а также улучшает заметность барабана в миксе. Особенно это проявляется в связке со свойственными реальному спикеру резонансами.

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

    В процессе работы над музыкой были выработаны универсальные приёмы, пригодные для написания одноголосых аранжировок для любых монофонических устройств, не имеющих управления громкостью, будь то музыкальная открытка, ЧПУ станок или катушка Тесла. Среди них:

    • Особенность человеческого слуха, когда предположительно более громкий звук маскирует более тихие звуки. Например, удар барабана или нота центральной мелодии — они отвлекают на себя внимание и делают малозаметным кратковременное пропадание остальных партий.
    • Аранжировка, в которой присутствует достаточно пауз между нотами. В особенности это касается вступительных частей. В эти моменты составляющие хорошо слышны по отдельности и получают возможность запомниться, чтобы по ходу развития трека, когда аранжировка станет плотнее, мозг продолжал опознавать наличие этих элементов, даже если они стали едва слышны в миксе.
    • Сочинение мелодий, в которых значительная часть нот приходится на слабую долю, а также смещение начала нот относительно сетки метра. Это позволяет нотам мелодии занимать места пауз в аккомпанименте, таким образом уменьшая наложение партий. В частности, это позволяет выиграть немного места для нот басовых партий, которым важно попадать в сильную долю. Это придаёт мелодиям сильное синкопирование, создаёт ощущение фанковости, что идёт на пользу их интересности.
    • Обычные чиптюновые арпеджио на разной скорости, включая очень быстрые арпеджио из двух нот на частоте чередования 120 гц. Вариации в скорости позволяют создавать элементы аранжировки с различным звучанием, что очень помогает при отсутствии тембральных выразительных средств — ведь все ноты имеют звучание одной и той же квадратной волны.
    • Повторяющиеся паузы в протяжённых звуках, например в солирующем инструменте, в которых слышны другие виртуальные каналы. Как правило такие инструменты начинаются с непрерывного звука, затем появляются паузы и их частота и длина постепенно увеличиваются, что является своего рода имитацией спадающей громкости.
    • Вариации длительности нот, включая очень короткие, для имитации разницы в громкости. Используется для подчёркивания пульсации в басовых партиях, где ноты, приходящиеся на сильную долю имеют увеличенную длительность, а также для создания эффекта эхо — когда партия с нотами одной длительности вторит себе, но с нотами существенно меньшей длительности.



    Техническая составляющая


    Другой ключевой момент в работе над альбомом — применение современных инструментов, делающих её значительно более комфортной и эффективной. Это привычная мне современная цифровая студия Reaper (программа, аналогичная FL Studio, Cubase и подобным) и набор самостоятельно разработанных VST-плагинов.



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


    Специально для создания спикерной музыки был разработан VSTi плагин PCSPE. Он эмулирует железо PC Speaker, позволяя сразу слышать близкий к реальному результат, а также реализует систему чиптюновых инструментов, подобные тем, что используются в трекерах для различных звуковых чипов. Огибающие виртуальной громкости (приоритета), арпеджио и изменения высоты звука задаются в виде строк текста с очень простым форматом, напоминающим язык музыкального программирования MML (родственник строк букв в операторе PLAY в BASIC). С помощью этих огибающих можно задавать, например, различные звуки ударных инструментов, или солирующий инструмент с постепенно нарастающим вибрато.

    Но главной задачей плагина является автоматическое сведение нескольких входных MIDI-дорожек с разными партиями в конечный монофонический трек. Упомянутая виртуальная громкость инструментов является основой системы приоритетов. В один момент времени (период обновления состояния спикера) всегда звучит только инструмент с наибольшей текущей громкостью. Например, инструмент баса имеет громкость 2, мелодии — 6, а инструменты ударных имеют громкость 8 — значит, ноты мелодии будет заглушать ноты баса, а ударные будут заглушать и то и другое. Таким образом несколько одновременно звучащих музыкальных партий сводится в один канал спикера.

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

    Типичное чиптюновое арпеджио можно создавать в PCSPE классическим способом, соответствующей огибающей, задающей последовательность смещений в полутонах относительно базовой ноты. Но это требует постоянно переключать инструменты и держать в уме соответствие между инструментами и получаемыми аккордами. Проделывать это в современных DAW довольно неудобно.

    Гораздо более удобный способ реализует другой мой VSTi плагин — арпеджиатор ChipArp, специально предназначенный для написания чиптюна и стилизаций. Он автоматически преобразует традиционные полифонические аккорды из входной MIDI-дорожки в арпеджио с заданными параметрами в выходной MIDI-дорожке, причём делает это на лету — можно играть аккорды на MIDI-клавиатуре и сразу же слышать арпеджио. В отличие от арпеджиаторов для современной электронной музыки, постоянно перезапускающих ноту с начала, этот плагин реализует арпеджио в виде питч-бендов относительно самой низкой ноты аккорда. Таким образом, арпеджио не нарушает протяжённое во времени звучание инструментов. Для полноценной работы этого плагина требуется поддержка установки широкого диапазона бендов и мгновенной реакции на бенды в используемом плагине синтезатора, что встречается нечасто, но все мои синтезаторы это поддерживают.

    PCSPE и эмуляторы типа DosBox выдают идеализированную квадратную волну, заметно отличающуюся по звучанию от реального устройства. Крохотные системные динамики подвержены сильным резонансам и искажениям АЧХ, подчёркивающим транзиенты, то есть моменты включения и выключения звука или резкой смены частоты. В частности, это делает ударные на реальном спикере гораздо более выраженными в миксе, т.е. «пробивными». Для контроля и обращения подобной особенности на пользу аранжировке использовался бесплатный плагин NadIR и собственноручно записанные импульсы нескольких маленьких динамиков — аналогично тому, как для цифровой записи гитар используют импульсы реальных гитарных кабинетов.

    Материалы


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

    Программа-проигрыватель с музыкой
    Исходники программы и проекты для Reaper
    Плагин PCSPE с исходниками
    Плагин ChipArp с исходниками
    Импульсы динамиков
    Поддержать автора
    Поделиться публикацией

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

    • НЛО прилетело и опубликовало эту надпись здесь
        +1
        Начиная с 64-битных систем. Там изначально не писали драйвер для работы с микросхемой спикера, потому что это были сперва серверные системы, а потом забили, так как почти любой комп сейчас идет со звуковухой.

        Поэтому для 64-битных Windows систем, драйвера сейчас кастомные.
          0
          Хммм, у меня (10, 64 бита) есть драйвер «Встроенный динамик» с диапазоном портов 61 (вроде то, что нужно). Это тупо болванка тогда?
            0
            Лицензионка или дистрибутив с торрента с предустановленными «фичами»?
              0
              Лицензия.
              Прямо ща на работе (тоже лицензия)

              Ну и сам себе отвечу: да, походу болванка.

        +7
        Трекеры (Scream Tracker, Impulse Tracker) вполне себе умели свои многоголосные модули через PC Speaker проигрывать.
          +2
          Автор в курсе, читайте дальше, там взаимоисключающие параграфы ;-)
          Но в общем и целом автор — красава, тему биппера правильно и всеобъемлюще раскурил, кто пытался писать одноголоску поймёт…
            0
            Но в общем и целом автор — красава

            Так я и не спорю :)
            0
            Я в прошлом веке увлекался треккерной музыкой (и у меня до сих пор хранится хорошая коллекция треккерной музыки). Но вроде в ST и IT поддержки PCSpeaker не было. Но Covox я в то время спаял (18 резисторов в корпусе разъема LPT), и он до сих пор у меня хранится в память о тех временах.
              +1
              Но вроде в ST и IT поддержки PCSpeaker не было.

              В ST точно была, я сам проигрывал STM-файлы через спикер. IT через спикер пускать не пробовал, но в его мануале поддержка заявлена.
              Covox я в то время спаял

              Ох, Совокс да. Вещь. Позволял услышать многое без этих ваших модных адлибов и гусей :)
                0
                А мое знакомство с трекерной музыкой началось относительно «недавно», в 1995 году; нашел случайно «непонятные» файлы с разрешением .mod на BBS Белый Медведь (это официальная BBS ZyXel). У меня был 386-й и аудио-карточка ESS, но я помню, что тогда еще были в ходу всевозможные «Микроши», которые модифицировали подобными ЦАПами (Covox).
                  0
                  .mod и что-то вроде .s3, даа…
                    +1
                    .stm вроде ещё были
                      +1
                      STM и S3M — это Scream Tracker (первый-второй и третий). По неизвестной мне причине в 90-х STM файлы у нас встречались чаще классических MOD-файлов, хотя в целом формат до появления S3M, который поддержали во многих трекерах, вроде был не очень популярен.
              0
              Есть или была такая музыкальная группа «386 DX» угадайте почему она так называется и на чем исполняла))))
                0
                О музыкальной группе «386 DX» узнал из уст одного моего хорошего знакомого. Очень рекомендую.
                  +1

                  У Вашего хорошего знакомого (kakos_nosos) музыка тоже весьма неплоха.

                    0
                    Не могу не согласиться! Это действительно так.
                –1
                Не, ну супер, и душненько так, в отличии от некоторых…
                … а то рисуют, понимаешь квадратные пикселы, пищат типа чиптьюны сэмплированными звуками, но дело не в звуках и путях оных, дело в мозгах не отформатированных ограниченностью средств выражения…
                И это не вопль мазохиста, вот живой пример, когда банальные вроде мелодии звучат не банально, НО на том же ютьюбе полно примеров «гениальнейших» аранжировок всякого для симфонического оркестра, без малейшего понимания этого самого оркестра, составляющих его инструментов и их динамики.
                  +3
                  Сразу вспомнился спектрумовский Wham!
                    0
                    Неее, там ужо была другая песня, там две ноты вполне себе звучали, ну или эффект ;-)
                    Я и сам мучил Wham, знаю, но тут автор работает в более экстремальном стиле, тут никаких вч дёрганий таймера и хитрых комбинаций…
                      +1
                      С него я когда-то начинал, если не считать набора серий BEEP'ов в Бейсике вслепую, за отсутствием телевизора. В Wham было два канала, и при креативном использовании это давало подобие двух уровней громкости. Можно делать довольно прикольное эхо.
                        +3

                        Я думал я один такой, кто так делал со Спектрум, когда сломался телевизор )

                          +1
                          аналогично, видимо это было распространенное явление )
                      +3
                      Вообще, под windows 3.11, а потом и 95 существовал драйвер, который превращал спикер в звуковую карту, и вполне сносно играл музыку. Я сам программировал спикер под ДОС, и прекрасно представляю как он устроен, но я пользовался сам этим драйвером и он был не так уж и плох. Да, громкость не менял, но отсутствие звука или такой — разница пропасть.

                      P.S. Пруфы remember.the-aero.org/speaker/index.htm
                        +4
                        Был такой, но про «вполне сносно» и «музыку» это слишком, системные звуки винды озвучивать ещё куда не шло, но музыку…
                        … он-же конкретно так тормозил систему когда «звучал»

                        ps.они родимыя!
                          0
                          Ну… Тормозил, кстати, не драйвер, а просто сама система не тянула :).

                          Ну я помню, что использовал его даже в играх. Лучше, чем ничего.

                          Я всё это к тому написал, что на писиспикере даже речь можно выводить. Тогда читалка была, я использовал.
                            +2
                            Ещё-бы она тянула, то-ж не в ковокс байт переслать ;-) да и что-бы вавку проиграть, её надо было ещё с диска зачитать, а тут уже полная шляпа…
                            … а так-то да, говорить и песни петь мы ещё на Спектрумах научились, а на письке-то фаст трэкер и каналов до фига, но
                            Автор он совсем не об этом, тут реальная музыка написана специально под один канал, без каких-либо извращений, так-то это вполне могла-бы сыграть какая-нибудь робоволынка, а точнее роботромбон!
                              +1
                              Я всё это к тому написал, что на писиспикере даже речь можно выводить. Тогда читалка была, я использовал.

                              Было дело, сам писал проигрыватель WAV на спикере. Речь (записанная со звуковой карты) была вполне разборчива.

                                0
                                А какой алгоритм, можно на пальцах. Я понимаю про ШИМ, и что можно им играться, но как? :)
                                  +1
                                  Я просто менял высоту звука на 42h порту:
                                  Procedure PCIRQ; Interrupt; Assembler;
                                  Asm
                                     {Ackknowledge hardware interrupt}
                                     mov   al,20h
                                     out   20h,al
                                     {Out byte to PC speaker}
                                     mov   es,word ptr [DMA+2]
                                     mov   di,PCPos
                                     inc   PCPos
                                     mov   al,es:[di]
                                     mul   PCAlign
                                     mov   al,ah
                                     inc   al
                                     out   42h,al
                                     {Check if buffer is end}
                                     mov   bx,DMASize
                                     dec   bx
                                     mov   dx,bx
                                     shr   bx,1
                                     dec   dx
                                     dec   bx
                                  
                                     cmp   di,dx
                                     jb    @NoEnd
                                     mov   PCPos,0
                                     jmp   @B2
                                  @NoEnd:
                                     cmp   di,bx
                                     jnz   @Ende
                                  @B2:
                                   {Calc next buffer}
                                     cli
                                   {Fill DMA buffer}
                                     call  UpDateDMA
                                  @Ende:
                                  End;
                                  

                                  Интерапт вызывался тысячи раз в секунду.
                                  Даже музыка игралась неплохо.
                                    0
                                    Вот бы кто сделал подобный драйвер под современные windows. Я давно об этом мечтаю, чтобы можно было иногда включать музычку через хриплый спикер)
                                      +1
                                      Для линя есть драйвер snd-pcsp, для винды не знаю.
                                    +1

                                    Для речи оказалось достаточно менять состояние динамика в момент изменения знака при переходе к следующему значению амплитуды.


                                    Примерно так, как в этой статье
                                    https://habr.com/ru/post/138144/
                                    только без линуксовых особенностей.
                                    Только в порт вроде выводил ассемблерной вставкой.

                              +5
                              Я упоминал в статье более ранний драйвер для DOS, превращающий спикер в Sound Blaster (только для цифровых каналов, без FM): github.com/volkertb/temu-vsb

                              Понятно, что проигрывание оцифровок через спикер впечатляет больше, но технически оно делается относительно несложно, а с точки зрения современного музыканта не очень интересно. Сэмплы и сэмплы, они всюду звучат плюс-минус одинаково. Практически на каждом 8-битном компьютере была хотя бы пара музыкальных редакторов, играющих 3-4 канала сэмплов (за счёт 100% загрузки процессора). То, что можно играть цифровой звук на самых простых и слабых машинах — доказано в начале 80-х, и с тех пор вопрос в общем-то исчерпан. Можно ли на одном канале самого примитивного аппаратного синтезатора играть что-то более-менее интересное — вопрос оставался открытым, т.к. исторически толком не было причин этим заниматься. К моменту, когда игры в принципе обзавелись адекватной музыкой, PC уже оброс разнообразными звуковыми картами.
                                0
                                Можете пояснить для немузыканта, в чём разница между подходом описанным в статье и превращением спикера в Sound Blaster?
                                  0
                                  В общем-то в статье это упоминается.

                                  Спикер — простейший синтезатор, работающий параллельно с процессором, требующий минимального использования процессора и объёмов памяти — обращения 60-120 раз в секунду и единицы-десяток килобайт. Но и звук получается примитивный. Нахождения верхнего предела примитивности — как раз цель всей этой затеи), синтезированный.

                                  Если использовать спикер как ЦАП, он сам уже ничего не делает, всё должен делать процессор. Т.е. 8000-44100 обращений в секунду. Зато играть можно уже что угодно, а не то, что умеет сам спикер. Как правило играли оцифровки реальных звуков, а не программно синтезируемый звук, это также требует довольно много памяти — сотни килобайт.

                                  Если короче: играет сам спикер или играет процессор.
                                    0
                                    Теперь, вроде, понял. Спасибо.
                                0
                                Ставил, только он при проигрывании ложил систему так, что больше ничего делать было нельзя.
                                0
                                Теперь понятно откуда во вселенной Звёздных войн (ДДГ от Лукаса) взялся бинарный язык для дроидов :) Видимо в конце 1970-х просто альтернатив адекватных таким пьезоизлучателям небыло просто :)
                                  –2
                                  В видео явно звук записан с эмулятора спискера, скорее всего с вашего же vst плагина, не тру.
                                  Или я ошибаюсь?
                                    +7
                                    Звук в видео записан с ноутбука из видео микрофоном камеры. В записи слышен шум в комнате. Интересно, какова была бы логика — покупать древний ноутбук, напрягаться с записью на видеокамеру (это было совсем не просто), но брать звук с эмулятора?
                                    –1
                                    PC speaker — это читерство по сравнению с музыкой на floppy, вот уж реальный хардкор:
                                    www.youtube.com/watch?v=j1x4w0ggk34
                                      +1
                                      Хотите хардкора — их есть у меня. www.youtube.com/watch?v=A6gGCLnFvPo
                                        +4
                                        У меня вариант ещё хардкорнее. Музыка на pdp-8 за счёт излучения с системной шины.
                                        youtu.be/akvSE5Z474c
                                          +2
                                          Полный зачёт. Но надо заметить, что это, так сказать, 'новодел' — подобный эксперимент (программный многоканальный синтез звука, воспроизведение через наводки на AM-радиоприёмник) впервые сделали ещё на UNIVAC в 1951, и с тех пор повторяли на многих больших и маленьких компьютерах. В том числе и на массовых домашних ZX80/81, у которых не было предусмотрено выхода звука.
                                            +1
                                            Новодел на оригинальном софте 1975 года? На компьютере 1971 года выпуска? :-) Ну не 1951 конечно, но как то коробит от слова новодел…
                                              0
                                              Юмор же.
                                            0
                                            image
                                          +1
                                          Нет уж, воспроизводить с серийного железа чисто софтовым методом через спикер – труёвое тру, а подцеплять шаговые двигатели, и оторванные от платы головки жёстких дисков лапшой ко всяким генераторам и прочим ардуинам, сделанным ради одного проекта – читерство чистой воды. Оно недалеко ушло от втыкания моторчика от игрушки в радиотрансляционную сеть.
                                            0
                                            подцеплять шаговые двигатели, и оторванные от платы головки жёстких дисков лапшой ко всяким генераторам и прочим ардуинам, сделанным ради одного проекта
                                            … это отдельная тема, но ничего этого нет по приведённой мною ссылке.
                                          +1
                                          Полный кардкор —
                                          youtu.be/G-X-p0C0Uas
                                            +1
                                            Хотелось бы что-то такое, но на производственных станках.
                                              0
                                              Это уже почти идея вируса типа stux )
                                                0
                                                Такое есть, сейчас это довольно популярная тема среди обладателей 3D-принтеров и фрезерно-гравировальных станков — музыка в G-коде. Например, www.youtube.com/watch?v=uKCX1CeXIjA
                                              0

                                              Кто имеет представление о работе пищалки в микроволновых печах? Независимо от стоимости моделей, нет даже элементарной регулировки громкости, назойливый писк разносится по всему дому, будто микроволновые печи имеют наивысший приоритет, никакая другая техника себе такого не позволяет. Почему?

                                                +1
                                                Хм… Разобрать и заклеить пищалку изолентой…
                                                  0
                                                  У меня регулируется… правда бинарно — вкл/выкл… ну и обычное состояние — выкл (после пропадания питания — пищит)

                                                  Вариант, если хочется чтобы звук был, но потише — как уже предложили — заклеить лучше толстым скотчем… хотя есть риск что там уже заклеено с завода бумажкой с надписью «оторвать если надо погромче»)
                                                  +1
                                                  Почему-то никто не вспомнил игру «Ворона» с её «Калинкой-малинкой» в рок-обработке, исполнявшейся именно на pc-speaker'е:

                                                  www.youtube.com/watch?v=SnOwboZQ_sM
                                                    0
                                                    IMHO одним из первых веяний подобного рода, все-таки издевательтсво в спектруме с однобитным «спикером» на 3.25mhz (А даже поиск был уже 5 mHz)

                                                    И шедевр 87 года из Chronos: Tapestry of Time by Tim Follin:
                                                    www.youtube.com/watch?v=81v3gICRJqo
                                                      0
                                                      На самом деле первые эксперименты с компьютерной музыкой и однобитным звуком уходят корнями к истокам вычислительной техники в целом. Уже в 50-х была многоканальная однобитная музыка. В 80-х же произошёл важный качественный скачок, в компьютерной музыке в целом (и Фоллин сделал весомый вклад) — музыка перешла от простых адаптаций классических и популярных произведений к оригинальным композициям, сначала простым и наивным, но потом действительно мастерским и художественно состоятельным (как музыка в Chronos).

                                                      А дело Фоллина в области издевательств над бипером Спектрума мы успешно продолжили, в 2010-х из него на тех же 3.5 МГц было выжато невообразимое по меркам 80-х — и 8-16 каналов, и громкости, и разные сложные тембры, и сэмплы, и синусоида с пилой и треугольником, и Карплус-Стронг. И, наверное, это ещё не предел.
                                                    +2
                                                    Тут недавно в статье вспоминали интернет и компьютеры 90-х. Мне вспомнился резидент для DOS, который вешался на обработчик ошибок (например не читается дискета) и через системный спикер реагировал фразой «ой б$яяя» ))) Программисты в НИИ тогда развлекались.
                                                      0
                                                      Рекомендую сделать звук потише ;)

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

                                                      Самое читаемое