Перейти к содержанию

Как Разработать Миди Контроллер?


Рекомендуемые сообщения

Хочу сделать миди контроллер для управления музыкальным оборудованием, имеющем стандартный 5-и пиновый МИДИ интерфейс. Перечень команд управления определяется спецификацией конкретного устройства. Миди контроллер нужен на МК, автономный. С софтовыми программами на ПК контроллер применяться не будет.

Решение: 1. Изучаю аппаратную часть МИДИ – токовая петля, уровни…

2. Протокол MIDI (USB вообще не применяю), выбор порта\интерфейса МК..

С одной стороны, часть МИДИ команд (к примеру MIDI-ON) сразу отрабатываются, что облегчает отладку на железе, но есть и иные, которые требуют неких отладочных средств. Поэтому прошу помочь с выбором инструментарий для экспериментов:

  1. Может ли помочь Протеус и как?
  2. Целесообразно ли сделать на МК\взять готовый логический анализатор и как\куда выводить результаты анализа МИДИ сигналов?
  3. Если для ОТЛАДКИ применять ПК, то не «отодвинет» ли меня от нужной цели проблемы с преобразованием в USB, драйверами и изучением утилит, типа МидиМониторы и прочие?

Ссылка на комментарий
Поделиться на другие сайты

стандартный чем не устраивает?

Зачем изобретать велосипед?

К примеру, у меня есть девайс, который требует для доступа к некому параметру подачу пакета МИДи команд типа: режим1, Энтер, три шага влево, один наверх, выбрать, экскейп... Т.е. может я что-то недопонимаю, но ведь каждое конкретное оборудования может иметь свой пользовательский интерфейс.... Кто-то пишет типовые "гитарные" контроллеры - да, они работатают с большинством гитарных процев, кто-то для процессоров вокальных.... но есть и специфические ... та же светомузыка с МИДи управлением.. Протокол конечно общий, как стандарт, но "достучаться" до выполнения задачи не просто.... Нужен именно перепрограммируемый, т.е. создание разных ПАКЕТОВ по нажатию одной кнопки\ручки...

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Хочу сделать миди контроллер для управления музыкальным оборудованием

Ну так делайте :)

  1. Может ли помочь Протеус и как?
  2. Целесообразно ли сделать на МК\взять готовый логический анализатор и как\куда выводить результаты анализа МИДИ сигналов?
  3. Если для ОТЛАДКИ применять ПК, то не «отодвинет» ли меня от нужной цели проблемы с преобразованием в USB, драйверами и изучением утилит, типа МидиМониторы и прочие?

1. Может, но неполноценно.

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

3. Это субъективно, никто-ж не знает, какая у Вас "отодвигаемость".

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Ох... мужики! Спасибо... давайте еще немного. Во-первых, что понимается "под стандартным"? Девайс с ручками :bye: конечно не нужен. Конструктив хочется свой. Другое дело - что некий ЧИП, у которого на входе, скажем, "СС120", а на выходе последовательность согласованных импульсов... Тогда ставлю прежде МК только для формирования набора (пакетов) команд.. Есть такие чипы- мидиконтроллеры?

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

вряд ли нужен логический анализатор. Его может заменить протеус с эмуляцией.

Нельзя ли поподробнее? Ведь, в Протеусе нет эмулирующих муз.синтезатор (клавиши, ноты, индикаторы и т.п.) элементов? Как убедиться в том, что нужная команда корректна по формату, и типу? Т.е. я прошу помочь советом в организации отладки. 1. Есть ли софтовые логические анализаторы - МИДИ сигнал заводим на, скажем, СОМ порт или ЮСБ и аналзируем эпюры.... Да, сложно, низкоуровнево, но как вариант.... 2. МИДИ мониторы. Если не покатит первый....

Ссылка на комментарий
Поделиться на другие сайты

Как убедиться в том, что нужная команда корректна по формату, и типу?
Читать мануал на управляемое устройство и отправлять на него корректные команды...

А зачем "анализировать эпюры"??? :) С какой целью? Дебажить МИДИ протокол не надо, на физическом уровне он задокументирован настолько, что достаточно просто захотеть набрать поисковый запрос, и сразу найдутся проекты МИДИ устройств на МК, и прошивки к ним, и описания, и много много много всего... :)

Feel the difference! ©

Ссылка на комментарий
Поделиться на другие сайты

Нельзя ли поподробнее? Ведь, в Протеусе нет эмулирующих муз.синтезатор (клавиши, ноты, индикаторы и т.п.) элементов?

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

Ссылка на комментарий
Поделиться на другие сайты

Хотя на мой взгляд опыта у Вас недостаточно для этой затеи судя по постановке вопроса.

Ничего! Такие же как Вы не отказываются в помощи «как подступиться к задаче»? :yes: А дальше - сам…. Я вижу относительную специфику моей задачи в: 1) не применение ПК, USB 2) наличие спектра МИДИ-девайсов, требующих управления по МИДИ «нераспространенных» операций (к примеру, управление файловой системой синтезатора), но которые поддерживаются спецификацией оборудования. Это исключает применение готовых устройств МИДИ-контроллеров. При анализе решения я не нашел выпускаемых чипов-контроллеров, реализующих МИДИ интерфейс (есть только в составе звуковых, что усложняет их применение). Поэтому, как многие другие, протокол будет реализовываться программно-аппаратными средствами, и тут много ссылок на решения в сети. Стоит вопрос в технологии отладки: в Протеусе отлажу временные диаграммы, в AVRStudio алгоритм управления (создание макрокоманд, пакетов)…. Далее. Соединил с девайсом, послал команду…. Отработалась, значит верно. А другая не отрабатывается. Почему? И тут хотелось бы отладчик, считывающий сигналы с выхода разрабатываемого контроллера, интерпретирующий их и выводящий (куда?) в виде мнемоники принятой для МИДИ команд. К примеру, 11010101= D5= 213, Chan 6 Channel Aftertouch. Или хотя бы без мнемоники, но фактическую передаваемую команду. Буду юзать MIDI-USB интерфейс, и выводить все в какой-нибудь софт на компе, а не хотелось бы… :umnik2: . Т.е. синт – это не комп, который через софт может все показать, что ему прислано.

Ссылка на комментарий
Поделиться на другие сайты

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

Самое лучшее решение выводить отладочную информацию на комп. Гуглите UART-COM (RS232). Всё что Вам необходимо посмотреть - можно направлять в COM-порт компьютера. А на самом компе даже стандартная программа-терминал есть - в ней можно видеть что с порта прилетает, а если на кнопки жмёте - их ascii коды улетают обратно в контроллер. UART - это обычно встроенный аппаратный модуль практически на всех МК, передающий и принимающий последовательные коды. Сложность состоит только в его первой настройке (читайте инет и форум), а пользоваться легко - он сам всё делает - только байты успевай подкидывать. Там всего два провода к компу и небольшой согласователь - в общем удобно.

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

Также можно и USB рассматривать - он всё равно в большинстве случаев как виртуальный COM испльзуется.

и выводить все в какой-нибудь софт на компе, а не хотелось бы… :umnik2: . Т.е. синт – это не комп, который через софт может все показать, что ему прислано.

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

Ссылка на комментарий
Поделиться на другие сайты

Спасибо. Прикупил сегодня готовый USB-COM до ноута. UART все равно к нему нужно подсоединять через согласователь типа кажется.....MOX232? И com порт же с отриц.также напряжением работает? А его вроде нет нигде.

Ссылка на комментарий
Поделиться на другие сайты

MOX232? И com порт же с отриц.также напряжением работает? А его вроде нет нигде.

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

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Вот промежуточные результаты…. Принял советы Tcoder по отладочному этапу – связке МК с ПК – это пригодится и для других задач))).

1.Устойчивой передачи\приема удалось добиться только с внешним кварцем, взял 6144000, дает 19200 бит\сек, без остатка. Затем МИДИ - тут применил 8Мгц,деление 15, дает 31250.

2. Вместо МАХ232 применил DS275. Преобразование уровней нужно только в направлении от МК на СОМ, но на выходе DS перепадов в отрицательную область на осциллографе не наблюдаю. Т.е. возможно, что МАХ232 и имеет собственный преобразователь, но DS это не проявил. Так что полезность его под вопросом.

3. Для преобразования USB (так как использую ноут) в СОМ приобрел USB(AM)-COM(DB09M) ORIENT USS101 0,8 м. Также имеется USB2.0 TTL Uart 5pin с Ebay– но дрова без танцев бубна не ставятся… бросил….

4. Не понял, почему не рекомендуются к применению непосредственные преобразователи UART-USB. А делается через «посредник» в СОМ? Ясно, это этот путь более универсален, но в связи с наличием столь распространенной задачи стыковки МК с ПС по последовательному интерфейсу, несомненно, должны существовать и такие чипы.

5. Через заводской конвертер MIDI-USB посылаю миди-команды на ПК и читаю их там МИДИ-монитором (прога MIDIMON). Все ОК. Конечно, можно и применить кубик или кейкволк.

6. Хотел на С# написать утилиту – для визуализации МИДИ команд в удобном (?) формате, но надобность отпала… и вообще это нечто чуждое))))

Теперь вопрос к знающим: Как аппаратно реализовать Midi-Thru? Т.е. на контроллере имеется не только выход, но и вход. С первого МИДИ устройства (скажем, синтезатора), идет сигнал по МИДИ в мой конструктив - контроллер, и проходит на МИДИ выход. Но на тот же МИДИ выход также подаются команды с МК, расположенного в этом конструктиве.

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

Вместо МАХ232 применил DS275. Преобразование уровней нужно только в направлении от МК на СОМ, но на выходе DS перепадов в отрицательную область на осциллографе не наблюдаю.

Да должен быть преобразователь. Правда там написано, что напряжение нужно снаружи подводить (правда якобы и без него будет работать)

The voltage range on VDRV permits the use of a 9-volt battery in order to provide a higher voltage level

when TXOUT is in a space state.

и возможно если и Вы так сделаете, появятся отрицательные уровни :unknw:

Т.е. возможно, что МАХ232 и имеет собственный преобразователь

Он там совершенно точно есть.

Ссылка на комментарий
Поделиться на другие сайты

Midi-Thru предназначается для дальнейшей передачи сигналов на устройство с иным каналом. Тут задача наоборот: нужно от 2-х устройств (МК и МИДИ клавы) «соединить» команды и подать на один звуковой модуль. Думается, что хоть тут и токовая петля, и асинхронный протокол, но простым типа «монтажным ИЛИ»\или аналоговым сумматором не получится. Нужно, считывать МК-ом входящие сигналы от МИДИ клавы, анализировать их, давать завершать текущий пакет от клавы, и уже потом, «вклинивать» свою команду. Это верно?

Вопрос второй: Будет создаваться библиотека «Пакетов=программ», отправляемых с контроллера, представляющих, по сути, данные. Можно даже написать визуальный спец.редактор. В памяти программ МК размещена программа, расшифровывающая эти данные. Но, как и где размещать данные? Каждый раз перекомпилировать программу? Как подключить флешку или есть иные методы? Пока работы идут на ATmega8535.

post-178354-0-73954900-1402333500_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

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

Касательно данных - у контроллеров бывает встроенная память EEPROM - если её объёма достаточно - можно использовать её. Обычно её немного. Возможно у каких то МК есть доступ и к собственной памяти программ (обычно типа флеш) - тогда и её можно использовать в своих целях, главное не задеть саму программу. Но насчёт памяти программ не уверен - где то краем уха слыхал и не помню на каком мк, но чтобы часто практиковалось - незаметно. Это касается записи в ПП на лету, а вот на стадии прошивки в ПП можно писать какие угодно данные и потом использовать их - это есть почти в каждой программе для МК.

Можно также использовать флеш-карту, тем более что флеш-карты поддерживают интерфейс SPI, а у выбранного вами контроллера он вроде бы аппаратный имеется. Но тут надо определиться, в каком виде хранить данные - если хранить в одной из файловых систем, понятных компу - тогда придётся поддержку этих же ФС делать и на МК, чтобы корректно обратиться к тому или иному файлу (хотя есть умельцы, которые делают это грубо - тупо находят блоки, в которых записан нужный файл - но это работает). Другой подход - хранить на флешке собственный формат, который понятен только устройству. Но тогда возникает проблема, как их туда запихнуть - либо программа на компе будет на низком уровне обращаться к флешке и записывать как надо, либо придумать так, чтобы запись делалась через связь компа с устройством - т.е. мк должен будет по UART получать специальные команды, следуя которым он должен записывать данные на флешку. Этот же подход применяется, если Вы выбрали одну из встроенных памятей.

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

Кроме флеш-карты Вы также можете использовать просто микросемы флеш-памяти или eeprom памяти. Подход к их записи тот же самый - либо комп->уарт->мк->память, либо каким либо программатором просто дамп в эту микру отдельно зашивать.

Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

... посылаю миди-команды на ПК и читаю их там МИДИ-монитором (прога MIDIMON). Все ОК.

Не "ОК" :vava: Читает, но коды совсем неверные. Счас вообще не понимаю, как люди ( в сети есть несколько статей "UART-MIDI") это делают. Дело в том, что протокол UART имеет и стоповый и стартовый бит, а МИДИ иной (если коротко об этом..). Потому буду делать программную эмуляцию UART. Это правильно?

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Не удается настроить UART на ПРИЕМ миди. (Передачу - сделал). В инете проектов НА ПРИЕМ (чтение) немного, в основном на Arduino, где свои библы. Свой упрощенный неработающий код выложил на этом форуме, в теме "МИДИ протокол. Способ передачи". Здесь же обращаюсь в наипринципиальнейшим вопросом: Кто практически уверен, что МИДИ совместим с UART в части старт-стопных бит при ЧТЕНИИ? Анализ эпюр показывает, что это не так. Почему в сети бывают (редко) предложения применять 8-N-2 для МИДИ? Не ленюсь, - пытаюсь разобрать проекты, и библы Ардуино, но пока очень трудно идет :unknw:

Так. Чтение тоже сделал. По крайней мере байт заходит)))) Не хватало тока выходной цепи оптрона, значит, при настройке UART порт RX не требует подтяжки... Читать даташит лучше! "наипринципиальнейший вопрос" отпадает пока... ибо работает! (хотя не понятно почему...)

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

Делал себе преобразователь MIDI2USB когда-то. В отличии от разнообразных костылей вроде UART-USB и разные MidiYoke/MidiOK, этот девайс частично реализует стандартный USB-AUDIO класс, а именно часть этого класса для обработки MIDI. Делал его, чтобы подключать MIDI-клавиатуру по USB "правильно". Драйвер используется встроенный в Windows. Я его использую с FL Studio. С подобным переходником, можно уже и на PC программный анализатор MIDI-посылок поиспользовать, например midi.rni.ru/midimon.zip. Из железа - PIC18F2550, резонатор и немного "рассыпухи". Там, помнится, использовался аппаратный UART, настроенный на MIDI-формат ( скорость, стоп-биты и др.). Если интересно, могу исходники поискать.

Изменено пользователем shindbad
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...