Pull to refresh

Comments 43

Если честно, то не очень понятна цель проекта - использовать именно винтажный чип или сделать миди выход?

Да, хотелось использовать именно те самые чипы AY-3-8910 и аппаратный MIDI-вход, чтобы можно было без компа с клавиатуры играть. Я взял готовый проект и немного развил его, добавил дополнительные режимы. До этого пробовал делать только плееры AY-музыки из PSG-файлов на Arduino и таком чипе, примеры таких проектов и на Хабре есть. В какой-то мере это и для самообучения, с Arduino я меньше года назад начал что-то делать.

Как известно, чип AY выдает в каждом канале синтеза прямоугольный звуковой сигнал. В принципе, он уже звучит приятнее, чем просто синус, но все равно достаточно «плоско». Это можно заметить в видеоролике, который приведен выше. Хочется сделать звук более «интересным». В чипе AY нет возможности выбрать другую форму синтезированного сигнала

Вообще-то есть. Регистр огибающей, но он один общий на 3 канала. Через него можно делать не прямоугольники, а всякие "кислотные" треугольники и пилы.


https://www.youtube.com/watch?v=44_hTlNLHy8

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

Для увеличения количества выводов можно использовать различные микросхемы "расширителей портов":

Только смотрите на быстродействие, чтобы не появились значимые задержки в передаче данных до микросхем AY

Я уже делал пробный вариант схемы, в которой три AY и OLED дисплей, только без MIDI-входа. Ставил 4 регистра 74HC595, всё нормально работает, скорости хватает. Сейчас вижу, что хватило бы и двух регистров, если шины данных AY параллельно подключить, как в этой схеме.

Если поставить один 74HC165, можно 8 кнопок подключить для переключения режимов и регулировки параметров. В следующем варианте схемы все это попробую, когда руки дойдут.

Схемы лучше читаются когда нет цепей земля и питание, а используются спец символы 5V и GND, например.

С 10k в коллекторной цепи будут фронты заваленные. Врубайте смело 1k вместо 10к. Все номинальные времянки вообще идут с 350Ом нагрузки.

Схему я взял готовую в виде картинки из исходного проекта и подправил в графредакторе. Можете подсказать, в какой программе лучше схемы рисовать? Желательно не очень навороченную. Я попробовал штук 5 разных, в них разные недостатки. В части так вообще готовых чипов на 40 контактов не нашёл.

10к - Вы имеете ввиду в цепи MIDI-входа? Я этот кусок схемы тоже готовый взял. А на что эти времянки влияют? На передачу MIDI-сообщений от клавиатуры?

(Если честно, я больше программист, в железе мало разбираюсь)

Можете подсказать, в какой программе лучше схемы рисовать?

Самая простая - Sprint-Layout. Именно для разводки плат, а не рисования схем. Платная, но уже лет 15 по инету можно найти переведённую на русский поломанную версию, которой, по моему, пользуются до сих пор. Ссылки не даю просто потому что я не знаю автора программы, а по первым ссылками в поисковике выпадают уже взломанные.

Для быстрого макетирования есть Fritzing (https://fritzing.org/, https://github.com/fritzing/fritzing-app). И замакетить можно, и схему нарисовать, и плату развести. Но очень странная модель распространения у этой программы. Она как бы опенсорс, но на официальном сайте просят денежку за скачивание собранных бинарников. Поэтому придётся подзаморочиться, и самому собирать бинарники. Хотя для пользователей linux в репозиториях дистрибутивов бывает уже присутствует пакет с собранными бинарниками.

Уровнем повыше - KiCad (https://www.kicad.org/). Это уже полноценный рабочий инструмент. Здесь и схемы нарисовать и развести их. Я лично рекомендую именно эту программу. С ней можно многое сделать.

Есть еще EAGLE (https://www.autodesk.com/products/eagle/free-download), точнее был. После того как его купил Autodesk, бесплатная версия Eagle превратилась в триальную версию Fusion 360 (https://www.autodesk.com/products/fusion-360/trial-intake). Работал в ней мало, поэтому выделить чем-то не смогу.

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

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

Все это очень хорошо и быстро осваивается в KiCad, есть и другие простые редакторы, но у KiCad есть очень большое преимущество - по нему навалом уроков и пояснений как в ютубе, так и просто текстом. Вот, например, сходу набрал How to draw buses in kicad, в ответ сразу видеоурок:

https://www.youtube.com/watch?v=-WpxeDtoys0&ab_channel=NumatoLab

Скажу по себе, рисование в KiCad очень ламповое и DIY-ное. Реально заходит для любителей.

По поводу 10к заменить на 1к. Сопротивление нагрузки определяет постоянную цепи, которая пропорциональна произведению RC для линейных цепей, но тут явно цепь нелинейная, т.к. фронт и спад разные получаются:

Как итог, в вашем случае с 10к постоянные времени будут примерно раз в 30 больше. Вот и считайте. Вместо 50ns будет 1500ns или 1.5мкс и т.д. При этом скорость переключения также падает, т.к. глаз закрывается. Вместо 10Мб/с получается (очень грубо) - 300кб/с. И вот тут вопрос, какая у вас линейная скорость MIDI? Если 31200б/с, то вроде бюджет есть. Но при этом растет еще такая неприятная вещь как джиттер. Мой совет - чем меньше сопротивление нагрузки, тем лучше всяко. Ставьте 1к, а лучше 350Ом как по даташиту.

Все эти любители звука очень трепетно относятся к таким параметрам как температурная стабильность, так и шумам, причем не только по питанию, но и фазовым.

Спасибо за разъяснения. Здесь порт для приёма MIDI вроде на скорости 115200 бод открывается. По крайней мере, при игре с клавиатуры я каких-то тормозов и тем более пропадания нот не замечал. В исходном проекте автор в этом месте никакого резистора не ставил. В общем, в следующем устройстве попробую поменьше резистор поставить.

Заинтерисовало есть ли VSTIинструменты для синтеза такой музыки. Нашелся платный Chipsounds. Но в данном случае здесь железный синтезатор по мотивам ZX spectrum, со своей оригинальной идеей.
VSTI конечно гибче если планируется написание музыки.

Схема, конечно, не особо для написания музыки, больше учебная. Ну и хотелось именно спаять железный синт, а не делать всё в компе.

Если планируется написание именно музыки, то подойдёт любой VA синт. От бесплатных и простых до крутой эмуляции DSP56300 с загруженной прошивкой синта Access Virus B или С

Погугли VSTSID, он бесплатный, эмулирует чип Commodore 64, для чиптюна самое оно.

Увидел у Яндекса конкурс Chiptune music https://yandex.ru/museum/yaretrocomp

И задумался о существовании синтезатора, например, для привычного музыкантам Cubase.

Синтезированная музыка для компьютеров со звуковыми чипами AY/YM, Pokey, SID и подобными. Также допустимо участие с однобитными цифровыми модулями (beeper).

— Мы принимаем только оригинальные работы. Трек не может быть кавер-версией на популярную и/или коммерческую музыку. Если работа содержит материалы других авторов, у вас должны быть права на их использование.

— Работа принимается в виде запускаемого модуля или в виде исходника для соответствующего редактора.

— Постарайтесь прикрепить mp3- или ogg-версию, которую мы сможем разместить на сайте во время голосования и после конкурса.

— Время звучания: не более 2 минут.

— От каждого автора мы готовы принять по одной работе.

Я конечно "сварщик ненастоящий", но всё же порекомендовал бы следующее:

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

Опять же, как по мне - для режима detune просится отдельный микшер, чтобы смешивать основной тон (как правило громче звучит) и "дополнительный". Это можно в железе сделать (громкость в коде, но там вроде "градаций мало"), или просто 2 регулятора громкости чтобы сводить в 1 сигнал, ну или с i2c/парралельным интерфейсом микшер прикрутить и рулить им с Ардуино отлавливая какие другие команды midi, например "через так": https://www.learningaboutelectronics.com/Articles/MCP4131-digital-potentiometer-circuit.php

Ну и возможно обратить внимание на вот этот канал и прикрутить "для более нажористого" звука что-то из простых примочек, уже именно в "тёплом аналоговом виде": https://youtube.com@MoritzKlein00

Спасибо, поизучаю. Для более нажористого звука я пробовал аж три AY-3-8910 ставить, один из них звук с частотой чуть выше, а ещё один - с частотой чуть ниже основной ноты накладывает. Но в той схеме MIDI-входа не было - несколько кнопок прямо на плате для извлечения нескольких нот. Надо будет вариант и с MIDI-входом сделать.

Очень интересно! У меня есть миди-клавиатура, но лениво её подключать к компу и запускать софт, если бы можно было подключить её к некой коробочке-синтезатору... Но нужны нормальные тембры. Подсоединил к мелкому ноуту на N3450, всё было ОК, потом прилетело обновление на Win 10 и звук стал тормозить.

Боюсь из дешевого только если вероятно что-то типа: Roland SC-88VL SC88 Sound Canvas Midi Sound Module

Не за что. Мне уже самому стало интересно это реализовать, заказал себе такую плату :)

Бывает отдельная коробочка на двух чипах AY, но цена кусается:

https://www.twistedelectrons.com/ay3

Встречал на Avito некий её самопальный аналог, но тоже недёшево.

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

Можно запустить в барузере плаеер споддержкой GM (но без колёсика)

https://surikov.github.io/midi-sounds-react-examples/examples/midi-sounds-example10/build/

и подключить MIDI-клавиатуру.

Можно и на телефоне в браузере запустить если он поддерживает USB-хост (иначе клавиатура не будет читаться).

На телефоне всё медленно - есть синтезаторы для Андроида, но... они бесполезны из-за ощутимой задержки.

На телефоне всё медленно

Нет.

Кагда появился MIDI компьютеры были раз в 100 медленней нынешних простых телефонов. И всё нормально работало. Сделать тормозную прогу на любой платформе можно.

Я так понимаю там проблемы в том как Андроид работает со звуком. Я перепробовал несколько синтезаторов на Андроиде - нажимаю на клавишу на миди-клавиатуре - звук получается с задержкой. Телефон Samsung S10e. На айфонах такой проблемы вроде нет.

Если подскажите нетормозящую прогу для Андроида - скажу большое спасибо!

нажимаю на клавишу на миди-клавиатуре - звук получается с задержкой

И причём тут звук или мобилы.

Конкретно реализация андроида у большинства производителей железа передаёт события управления с задержкой.

По своим каким-то причинам которые здесь оффтоп.

Ну, не знаю, при всей моей любви к AY/YM имхо овчинка выделки не стоит. Открывая статью надеялся что автор запилил если не автоттюн огибающей то хотя бы орнаменты, которые мы так любили, что многих до сих пор не отпускает...

...да и современные подростки не знавшие не AY не SIDa, проявляют интерес к этим звукам

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

Можете пояснить, что имеете ввиду под автотюном огибающей? Слова понятны, но неясно, какой именно эффект означают.

Имелся ввиду расчёт и лукап, значений регистров генератора огибающий и тонального генератора для получения насыщенных басов и кислотных звучков.

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

Там были какие-то нюансы получения кислотных звучков, но за давностию лет я их не помню...

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

Если вникнуть в музыкальную логику приёмов использования ay можно её подружить с midi не банально, а сделав доступными те самые приёмы для клавишника. Типа если велосити на всю балду, то придать октавной перкусионности, меньше, шумочка, а на легатных хвостах пусть нарастает вибратто , и тд.

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

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

Про миди-логику тоже понятно, но здесь у меня пока опыта никакого нет. Можно и клавиатуру с after touch задействовать, но у меня она простая совсем. В общем, тут огромное поле для экспериментов. Если в будущем что-такое реализую, обязательно будет продолжение.

"Значение регистра писать ручками" - имеется ввиду значение делителя для частоты огибающей?

Включить пилу - дело несложное. Гораздо сложнее понять, какую частоту у нее выставить. Из небольших экспериментов, что я успел провести (возможно, опубликую их отдельно), я понял, что при наложении пилы на ноты разной высоты получаются самые разные эффекты - от просто непонятных искажений до биений или просто неких субъективно "приятных" и "интересных" звуков.

Хотелось бы понять, по какому принципу включать "пилу" в зависимости от играемой ноты. Например, можно пытаться включать ее с частотой, кратной частоте ноты, для получения каких-то гармоник (но это не для любых нот получится). А можно еще чем-то руководствоваться, но чем?

Может, есть какие-то околоспектрумные форумы, где есть гуру, которые могут что-то посоветовать и разъяснить все эти нюансы?

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

Мой USM-Midi синтезатор-контроллер.
Мой USM-Midi синтезатор-контроллер.

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

Отдельная тема про эмуляцию инструментов. С ударными довольно просто. Удалось синтезировать приемлемые гитарные звуки. Думаю, и пианино можно сделать. В итоге устал от чиптюна и уже год "отдыхаю".

В этом устройстве, которое я сделал, ударные неплохо реализованы автором исходного проекта. Можно включить канал 10 и поиграть на клавиатуре, я что-то не догадался в видео это включить.

Про арпеджио я тоже думал. Скорость можно подгонять под темп, который задаётся в MIDI. Но я пока эту тему ещё не изучал.

Ваша схема содержит куда больше деталей - зачем их столько? Вижу две кнопки - что они делают?

Я тоже когда-то собирал на макетке проигрыватель + MIDI-вход. Потом захотелось большего. На фото прототип, отладочная плата для поиска интересных звуков. Не обошлось без ошибок - у 3.3В контроллера выгорели пины BC BDIR (они внутри AY подтянуты к +5В). А написано это в скобках в даташите. :-)

Для расширения звуков я добавил YM2612, но т.к. два пина сжёг, то пришлось резать дорожки снизу платы и городить колхоз. Я планировал звук с AY/YM оцифровать микроконтроллером, микшировать программно, добавить эхо, а потом выводить в ЦАП ES9023. То, как я каналы распределил мне не нравится.Сделал пока мало, "поднимал плату", выявлял ошибки аппаратные, проект на паузе.

Кнопки две - ресет (сброс) и пользовательская, чтобы инструмент не подключать для тестов. К кнопкам я всегда стараюсь ставить RC-фильтр, поэтому проблем с дребезгом у меня нет.

Хотелось бы спросить/почитать про хитрости chiptune. Начальное муз образование у меня есть, но ZX Spectruma у меня не было, только трекерную музыка на 386 мне хорошо знакома - MOD, S3M, XM. Насчёт detune. Может быть надо не ручкой потенциометра крутить, а вычислить гармонику частоты (вторую, третью) и её подмешивать?

Собственно, у меня пока тоже нет полного понимания того, какие именно эффекты дальше реализовывать, чтобы получить "спектрумовские" звуки. Кое-что мне подсказали, буду экспериментировать.

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

Про гармонику частоты не очень понял. AY выдаёт прямоугольный сигнал. Этот уже не чистый синус, и в нем и так полно гармоник.

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

Sign up to leave a comment.

Articles