152 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Новая жизнь старого синтезатора

Новая жизнь старого синтезатора. Часть 1

Вскрытие
Модуль усилителя звуковой частоты (совмещен с блоком питания)

Модуль звукогенератора (видна память, сам звукогенератор на обратной стороне)

Вскрытие показало, что в моем синтезаторе разорвало на части стабилизатор напряжения питания, ответственный за подачу напряжения на микросхемы звукогенератора и сканера клавиатурной матрицы. Увы, замена стабилизатора на новый не принесла результатов. Дальнейший анализ показал, что обе микросхемы, по всей видимости, более не функционируют: присутствуют корректные сигналы сброса и тактового генератора, однако никаких признаков жизни со стороны самих микросхем не наблюдается. Поскольку данные микросхемы были произведены специально для синтезатора компанией Yamaha, то заменить их на новые не представлялось возможным, тем более, что модель уже старая. И тут мне пришла в голову идея вместо того, чтобы отремонтировать старый модуль звукогенератора, выкинуть его и сделать свой собственный, целиком и полностью настраиваемый, с Linux-ом и Wi-Fi’ем.

Выбор платформы — основы для нового синтезатора

Загоревшись этой идеей, я начал подбирать платформу, на базе которой будет создаваться новый «мозг» синтезатора. Начал поиски с относительно простых отладочных плат на STM32, так как изначальная идея была в реализации с нуля прошивки, реализующей синтез звуков. Критерием отбора являлось наличие как минимум нескольких десятков мегабайт памяти, слот для SD-карты, аудиовыход и возможность подключения LCD-дисплея. Затем возникла идея использовать что-то помощнее, и я вспомнил про валяющуюся без дела Raspberry Pi. Но она не подошла в итоге по нескольким причинам: отсутствие возможности без танцев с бубном «из коробки» подключить LCD-дисплей, отсутствие достаточного количества GPIO-пинов, сравнительно низкая частота процессора. Но к тому моменту я уже понял, что нужно двигаться в направлении Linux, потому что для него уже написано немало программных синтезаторов, и в частности, особо заинтересовавшие меня LinuxSampler и FluidSynth. Поэтому я продолжил поиски, уже отбросив «маломощные» платы на STM32, и спустя несколько часов непрерывных поисков я нашел ЕГО, и понял — это то, что нужно. Итак, в качестве платформы был выбран и приобретен в Китае мини-компьютер EmbedSky E8 miniPC, в комплекте с 4.3-дюймовым резистивным сенсорным LCD-дисплеем.


Технические характеристики его представлены в таблице, цена вопроса 48 долларов США:

Размеры100х65х20 мм (без учета разъемов)
ПроцессорSamsung S5PV210 Cortex-A8 (1 ГГц)
Оперативная память512 МБ *
EMMC Flash-память4 ГБ
USB-порты4 порта USB 2.0, 1 порт USB OTG
АудиоВход/выход до 48 КГц, WM8960
HDMIHDMI 1.3 1080p@30 FPS
Ethernet100 Mbit
Последовательный порт3 порта 3.3V, один порт со стандартными уровнями RS232
ЧасыПоддержка часов реального времени (плюс батарейка)
Карта памятиИнтерфейс для карты памяти SD
Кнопки2 программируемые кнопки
КамераСпециальный порт для подключения видеокамеры
Светодиоды4 программируемых светодиода
IrDAВстроенный ИК-приемник
Дисплей40-пин FPC для подключения LCD (поддержка резистивного и емкостного экрана)
50-пиновый разъем17 линий GPIO, 4-х канальный ADC, SPI, 2 PWM, дополнительный интерфейс SD

* — объем доступной в системе памяти со стандартным ядром — около 390 Мб (в дальнейшем это ограничение было снято — детали в следующей статье).

Надо сказать, я был приятно поражен тем объемом документации, который поставляется на двух DVD-дисках вместе с мини-компьютером: на дисках присутствует полная принципиальная схема, документация на каждую используемую микросхему, включая полную документацию на процессор, руководство пользователя (на китайском, но все и так понятно) различные инструкции (например, по установке Ubuntu и даже по разработке с Qt). Кроме того, имеются исходные коды ядра Linux 3.0.8, исходный код системы Android, некоторого ПО от EmbedSky, GCC 4.4.3, исходный код Qt и еще много интересного. На плате предустановлено сразу две ОС — Linux и Android 4.0.4, выбор какую загружать осуществляется через загрузчик U-Boot. Android был мною безжалостно снесен, и вся имеющаяся eMMC Flash-память использована под простой Linux.

Стоит отметить, что изначально плата настроена на работу с емкостным экраном. Для того, чтобы переключить ее на резистивный интерфейс, необходимо перепаять две перемычки на обратной стороне платы рядом с LCD-разъемом. Собственно, это было первое, что я и сделал с платой после проверки ее работоспособности. Далее выяснилось, что образ Linux, зашитый в eMMC тоже по-умолчанию настроен на использование емкостного датчика. Убил несколько часов, копаясь в конфигах Qt и Tslib, но в итоге тач все-таки заработал как положено.

С платой поставляется Qt версии 4.5 — довольно старая версия. Я люблю все новое, поэтому для работы над своим проектом, я решил скомпилировать для ARM Qt последней версии 5, а поскольку много времени тратить на разработку тоже не очень хотелось, то дополнительно я решил, что буду все писать на Python, так что мне понадобилась также библиотека PyQt5. Процессор Samsung S5PV210 имеет встроенный 3D-ускоритель с поддержкой OpenGL ES 2.0, но, к сожалению, Samsung предоставляет драйвера для OpenGL только для ОС Android, поэтому использовать Qt 5 с поддержкой OpenGL ES не получилось (попытался скопировать нужные DLL с образа Android, но одна из библиотек имела зависимость от libhardware.so и далее до бесконечности), так что я остановился на LinuxFB в качестве платформы для вывода графики. С компиляцией Qt 5 особых проблем не возникло, за основу я взял конфиг для Raspberry Pi и вырезал все, что связано с OpenGL ES. Затем я собрал Python 2.7.6, используя инструкцию отсюда.

Читать еще:  Пюпитр из фанеры своими руками

При сборке для ARM библиотеки PyQt5 возникла проблема — оказалось, что библиотека имеет зависимость от заголовков OpenGL даже если Qt была собрана без поддержки OpenGL. Пришлось пропатчить библиотеку так, чтобы убрать зависимость. Соответствующий патч был опубликован в списке рассылки PyQt. Возможность сборки без OpenGL будет также добавлена в upstream в ближайшее время. После сборки PyQt5 я успешно протестировал на устройстве примеры из поставки Qt, портированные на Python и распространяющиеся в составе PyQt.

Мой графический интерфейс к LinuxSampler и FluidSynth, написанный на PyQt5

Далее последовала кросс-компиляция LinuxSampler и его зависимостей: libaudiofile , libfftw , libgig , libsndfile , libsamplerate . В libsndfile была обнаружена интересная фича, названная в коде библиотеки «Ultimate sanity check» — assert на то, что тип off_t имеет размер 8 байт. В моем случае это оказалось не так. К счастью, простое удаление этой “проверки на вменяемость” полностью решило проблему. Интересно, почему она делает эту проверку во время выполнения а, не прерывается на этапе configure — все равно ведь работать не будет, зачем тогда компилировать?

Дополнительно был скомпилирован JACK в качестве драйвера вывода звука для LinuxSampler. Для него потребовались патчи arm-timestamp.patch и atomic.patch отсюда. Также я компилировал с такими флагами для GCC, чтобы включить поддержку расширений NEON для ARM: -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ffast-math -funsafe-math-optimizations -O3 .

На данной стадии у меня работал JACK и LinuxSampler, через который я мог проигрывать MIDI-файлы с помощью jack-smf-player. Вместе с графическим интерфейсом (см. выше) был написан питоновский модуль для работы с LinuxSampler по протоколу LSCP, а также с помощью SWIG сгенерирован биндинг для libgig , которая позволяет загружать GIG-файлы, и, в частности, выяснить какие внутри есть инструменты, чтобы их можно было выбрать из списка в интерфейсе на Qt. Ближе к завершению проекта эти наработки, а также весь связанный с проектом оригинальный исходный код будет выложен на GitHub для всех желающих.

В следующей статье я расскажу:

  • Как устроена клавиатурная матрица синтезатора
  • Как я менял сгоревший МК сканера клавиатуры на ATmega, про прошивку прямо с платы, и как микроконтроллер общается с LinuxSampler
  • Как я делал ядро с поддержкой Realtime Preemption на основе стокового и как решались многочисленные возникшие проблемы
  • Как проходило общение с техподдержкой фирмы EmbedSky Tech
  • Как удалось снизить задержку (latency) звука при нажатии на клавиши синтезатора с нескольких десятков до нескольких миллисекунд

Все описанные в этой и следующей статье манипуляции с незначительными отличиями можно проделать также и с использованием других подходящих ARM-платформ включая Raspberry Pi, для изготовления своего собственного универсального синтезатора из старой MIDI-клавиатуры. Из преимуществ последней можно отметить наличие более мощного аппаратного FPU и возможность сборки Qt 5 с поддержкой OpenGL ES 2.0.

Цифровой синтезатор своими руками

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

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

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

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

Читать еще:  Повышающий/понижающий преобразователь напряжения своими руками

Принцип работы синтезатора сигнала

Схема цифрового генератора

Тактовые сигналы, которые имеют максимальную частоту 6,4 мГц сформированы астабильным мультивибратором на логических элементах G1..G3 микросхемы IC1. Перестройки частоты осуществляется потенциометром P1, в то время как для изменения частоты по декадам используется переключатель К/1.

Микросхема IC1 состоит из набора скоростных КМОП элементов, вместо неё можно использовать менее скоростные ТТЛ логические элементы, скорректировав значение сопротивления R2=270 Ом.

На микросхемы IC1..IC3 подаётся напряжение питания +6 вольт (по паспорту 74AC00 её максимальное напряжение питания может составлять 6 вольт, для серии 4000 — 15 вольт). Чем больше питающее напряжение, тем больше максимальная рабочая частота микросхем. Для делителя IC2 максимальная рабочая частота будет составлять 6,4 МГц при напряжении питания 6 вольт.

Микросхема 74AC00 может выдержать долговременное повышенное напряжение питания до 6..6,5 В (особенно при слабом нагружении выхода).

Тактовая частота задающего генератора в 32 раза больше, чем частота синтезируемого синусоидального сигнала. При максимальной тактовой частоте 6,4 МГц это будет соответствовать частоте синусоидального сигнала 200 кГц. Двоичный счётчик IC2 делит частоту входного сигнала на 32. С выхода Q4 счётчика IC2 сигнал подаётся на вход первого сдвигового регистра IC3, с его выхода Q3B сигнал поступает на вход DA следующего сдвигового регистра IC4. Состояния выходов сдвиговых регистров изменяются синхронно с тактовыми импульсами, поступающими с выхода задающего генератора IC1.

Давайте рассмотрим осциллограмму сигналов на входах и выходах сдвигового регистра IC3:

Сигналы на входах CpA, CpB, DA и выходах Q0A..Q3A, Q0B..Q3B сдвигового регистра IC3.

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

К выходам сдвиговых регистров подключена матрица резисторов R3…R30, которая производит цифро-аналоговое преобразование сигнала и формирует синусоиду.

Сигнал на входе счётчика ID2, на его выходе и синусоида в точке соединения резисторов R3..R30.

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

Сдвиг уровня сигнала осуществляется с помощью подачи на прямой вход операционного усилителя напряжения смещения с помощью делителей R31 и R32.

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

Труднее всего осуществлять фильтрацию в нижнем диапазоне частот: проблема решается путём компромиссов. Здесь применяется активный фильтр третьего порядка на операционном усилителе IC6 и пассивных элементах R37…R39, C15…C17 в цепи обратной связи.

То же самое можно сказать и о других фильтрах, частоты которых лежат в диапазонах 200 Гц…2 кГц, 2 кГц…20 кГц, 20 кГц…200 кГц, которые очищают синусоидальный сигнал. Вообще для каждого фильтра необходим свой усилитель, но поскольку всё равно необходимо коммутировать цепи тактового генератора переключателем К/1, то используются коммутируемые полосовые фильтры в цепи IC6, коммутируемые переключателями К/2 и К/3.

Операционный усилитель TL080 (IC6) усиливает сигнал, поступающий на его вход в два раза по амплитуде, он имеет низкий уровень искажений и линейную частотную характеристику до частот 300 кГц. Интегрирующая цепь R36, C14 подавляет всплески сигнала, образующиеся в основном на высоких частотах. Сопротивление резистора R36 относительно невелико, что бы амплитуда сигнала не уменьшалась под нагрузкой. Для питания операционных усилителей необходимо симметричное стабилизированное напряжение питания, поэтому кроме источника +6 В применяется ещё и источник -6 В.

Сборка и настройка синтезатора

Рисунок печатной платы изображён на рисунках ниже.

Конденсаторы, используемые в самом высокочастотном диапазоне должны быть припаяны с очень короткими выводами, в первую очередь это касается C5!

Тактовый генератор обеспечивает стабильность частоты порядка 10-3…10-4. Перемычка на входе IC2 переключается в верхнее по схеме положение, и на вход IC2 подаётся частота с синтезатора. Значение частоты должно быть в 32 выше, чем частота синтезируемой синусоиды.

Настройка синтезатора

Вместо переключателя K временно устанавливают короткие перемычки (что бы провода, ведущие к переключателю не мешали), настраивая прибор на третий диапазон. Убедитесь, что тактовый генератор работает и на выходе IC5 присутствует ступенчатое синусоидальное напряжение, а на выходе IC6 присутствует синусоидальный сигнал. Если при максимальном положении потенциометра P2 наблюдается несимметричное ограничение сигнала, то придётся подобрать резистор R34.

Далее следует отрегулировать потенциометр P2 так, что бы сигнал не был ограничен. Теперь надо проверить уровень постоянной составляющей сигнала, которая должна быть равна нулю, это проверяют осциллографом с включённым режимом по постоянному току (так называемый открытый вход), для регулировки подбирают величину сопротивления R31 (или уменьшить сопротивление R32 до 1,6 кОм и включить последовательно с ним подстроечный резистор 470 Ом для регулировки, отрегулировать, измерить сопротивление подстроечного резистора, прибавить к нему 1,6 кОм и таким резистором заменить резистор R32).

Читать еще:  Диспенсер для бумаги своими руками

Амплитуда сигнала при перестройке на каждом диапазоне не должна изменяться более чем на 1%. На самом верху диапазона может наблюдаться некоторое его снижение (несколько процентов). Для подстройки этого фильтра можно припаять конденсатор ёмкостью 100 пФ параллельно конденсатору C22 со стороны фольги. Не забудьте так же проверить, что изменение амплитуды по диапазонам не превышают 1%! Такие же настройки следует провести и на других диапазонах.

При необходимости, конечно, может быть добавлен дополнительный диапазон частот 0,2…2 Гц. Для этого используют отдельную плату. Номинал конденсатора для задающего генератора должен иметь ёмкость 3 мкФ, сопротивления фильтра — по 150 кОм, ёмкости фильтра — 866 нФ, 280 нФ и 352 нФ. Переключатель K должен быть заменён на пятипозиционный.

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

Устройство смонтировано в небольшом металлическом корпусе. Источник питания состоит из трансформатора с двумя вторичными обмотками (2×10..12 В, 1..2 Вт), выпрямителя на диодах 1N4001, электролитических конденсаторов 470 мкФ и двух интегральных стабилизаторов напряжения 78L06 (положительный) и 79L06 (отрицательный).

Для выходного разъёма генератора используется байонетный BNC коннектор. Общий провод печатной платы гальванически соединён с корпусом. Плата блока питания крепится винтами к корпусу. Ручка настройки должна быть оснащена большой шкалой. Выключатель питания — обычный тумблер.

Для выхода сигналов тактовой частоты f0 и f0/32 можно сзади корпуса установить разъёмы RCA или BNC. Для подключения внешней задающей частоты сигнала f0 там же можно разместить ещё один разъём.

Эскиз передней панели

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

И в заключение необходимо проверить коэффициент гармоник, обычно составляющий не более 0,1%, но если точнее подобрать сопротивления R30…R33, то можно получить коэффициент нелинейных искажений лучше чем 0,07%.

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

самодельные паттерновые секвенсеры синтезаторы

, окт 03 2007 13:29

  • Чтобы отвечать, сперва войдите на форум

#1 keysonstage

  • Members
  • 24 Сообщений:
  • хотелось бы обсудить тему
    самодельных аппартных электромузыкальных инструментов (невиртуальных)
    или DIY HW MI

    я ознакомился со след. рeсурсами, где:

    я узнал, что на свете полно возможностей купить наборы деталей
    типа http://monome.org/ar. s-ready-to-ship
    или http://www.ladyada.net/make/x0xb0x/
    для изготовления чего угодно, от контроллеров до синтезаторов и целых грувбоксов с возможностью встроить различные системы синтеза и т.д.
    производится куча очень интересных и главное — недорогих инструментов
    типа http://www.mfberlin. /sylite_ii.html
    или http://www.mfberlin. b-synth_ii.html
    ещё больше всего — здесь http://www.boxoftext. ges/synths.html
    и здесь http://sounddoctorin. thtec/synth.htm

    хочу обсудить возможность
    самостоятельного изготовления
    паттерновой HW техномашины (грувбокса)
    на базе разработок типа MIDIbox

    с несколькими типами синтеза (SID, OPL3, одноплатные аналоговые синтезаторы)
    модульные студийные системы и приборы обработки — потом
    как-нибудь может быть, интересуют встаиваемые узлы и all-in-one решение в итоге

    Быть может эти и смежные вопросы кому-нибудь тоже интересны?

    • Наверх

    #2 D_R

  • Administrators
  • 433 Сообщений:
    • Gender: Male
    • Location: Moscow

    keysonstage

    , Oct 3 2007, 02:29 PM, написал:

    очень интересны.
    особенно изготовление выносного комбинированного SCSI-устройства для хранения сэмплов, паттернов и т.д. (HDD, CD-ROM, Card-reader)
    нашел в сети замечательную вещь:
    http://www.scsiforsa. oducts.asp?MT-3
    но ничего похожего в России не встречал:-(
    Может кто-нибудь знает, где посмотреть?

    • Наверх

    #3 keysonstage

  • Members
  • 24 Сообщений:
  • D_R, Oct 3 2007, 02:49 PM, написал:

    смею порекомендовать это http://www.maplin.co. /Full/a50bk.jpg
    почтой приходит достаточно

    а SCSI-2 CD-ROM+HDD box выбрать вполне традиционный, в качестве стационарного решения
    что-либо из такого http://www.tae.su/site/?id=633

    • Наверх

    #4 Grief

  • Members
  • 6 Сообщений:
    • Наверх

    #5 ghm

  • Members
  • 1 Сообщений:
    • Наверх

    #6 Napster

  • Members
  • 3 Сообщений:
    • Наверх

    #7 vasyaIcorryDero

  • Members
  • 1 Сообщений:
    • Location: Россия
    • Interests: Рыбалка
    • Наверх

    #8 hornmaster

  • Members
  • 458 Сообщений:
    • Gender: Male
    • Location: москва
    • Interests: РУПОРНАЯ АКУСТИКА
      РУПОРА ИЗ СТЕКЛОПЛАСТИКА

    хотелось бы обсудить тему
    самодельных аппартных электромузыкальных инструментов (невиртуальных)
    или DIY HW MI.

    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector