Самодельный MIDI Controller

Тогда "что такое полярность"?

Смотрите, в оригинале уровень лог. 0 в петле - это есть ток, но напряжение относительно земли близко к 0В.

В схеме с TRS у Вас получается лог.0 в петле - есть ток, но напряжение относительно земли близко к напряжению питания.

Зачем вся эта экономия (сомнительная кстати, если не забывать, что запаять резистор в десять раз дороже его цены), если не получается универсального решения? ;)
 
Сейчас вопрос чисто теоретической плоскости, а реально решен, в т.ч. по вашему совету.

Далее, ваши ответы основаны на постулатах "относительно чего что-то меряется". ОК. Этот ответ учитывает или нет, что даже если ПОМЕНЯТЬ два проводка местами, то все равно ничего не работает? Если учитывает, то я отстану и пойду переосмысливать все с благодарностью. Т.е. я не оперирую понятиями "земля"... нет, есть просто 2 провода. И они изолированные.

Какая разница входной оптопаре, образно говоря, "есть напряжение или нет"? Ей важен а) ток б) направление его течения в) что есть 0, и что есть 1 ВНАЧАЛЕ пакета.
 
Последнее редактирование:
Более того. На обычный ДИН вход работают ОБЕ схемы. Задача понять ЧЕМ отличается именно TRS вход? И не стоит смотреть на НОМЕРА пинов на схеме. Мы же понимаем, что мы САМИ разработчики, а не просто делаем "переходники" для готовых устройств. Т.е. есть TX, земля, питание, ДВА проводка, 3 контакта TRS. Все. Никаких "пинов"))))

Ваш пост 928 пишет, об конкретном номере пина, якобы, "неподключенном" ...
Я сейчас поясняю, что речь о разработке, а не "адаптации" к существующей распайке в готовых устройствах. Надо было об этос сразу сказать....
 
Последнее редактирование:
Может быть отличия в том, что зачастую TRS гнезда крепятся на металлический корпус, (хотя есть и изолированные), и в целях унификации входные МИДИ цепи делают относительно земляного? Я списывался с разработчиками и они говорят что "земля для МИДИ TRS обязательна" (без пояснения как потом все идет на оптопару, и есть ли она вообще). А DIN5 я не видел НЕ изолированных.
 
Этот ответ учитывает или нет, что даже если ПОМЕНЯТЬ два проводка местами, то все равно ничего не работает?

Учитывает же. Там, судя по схеме кабеля, скорее всего нет никакой оптопары просто на входе приемника, т.е. измеряется не ток в петле, а напряжение на сигнальном проводе (контакт 5) относительно земли (контакт 2)

Либо полная черезжопность - оптрон подключен анодом к контакту 5, катодом к контакту 2, и потом, после оптрона, сигнал инвертируется (или транзистор оптрона в верхнюю сторону включен, к VCC, а нагрузочный резистор - к GND приемника).

Если уж Вам так надо, то посмотрите, чего там в этом чудо-устройстве на входе сделано. Разобрать и срисовать кусочек схемы - это ж несложно.
 
Ну как "надо"))) Конечно, тонуть в море приемников не буду... Все схемы не пересмотришь. Всегда радовался, что МИДИ - это 2 проводочка, которые "можно просто поменять местами" любому юзеру, в тут... даже не могу объяснить, почему на ТРС не работает.

Все равно не понятно. Есть потенциалы, есть токи, есть точки относительно которого меряются напряжения и т.п. Все можно поменять. И не фурычит..

А вот пробовал программно проинвертировать UART и понял, что ничего не получится. И предположил, что и тут примерно аналогичная причина. Но мозгов докопаться не хватает.
 
Конечно, тонуть в море приемников не буду... Все схемы не пересмотришь.

Правильно. Сделайте передатчик как в стандарте и пусть странная схемотехника приемников Вас не волнует.

Все равно не понятно. Есть потенциалы, есть токи, есть точки относительно которого меряются напряжения и т.п. Все можно поменять. И не фурычит..

Да все там понятно. Там два варианта

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

Оба этих варианта будут работать со схемой передатчика из стандарта и не будут работать с аматорским "удешевлением". Какой именно там вариант в приемнике можно ответить только срисовав его схему, что Вам я и предлагаю, если хочется конкретики вместо жевания соплей "я не понимаю, почему оно не работает".
 
Это всё, что Вы вынесли из обсуждения?

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

>почему на ТРС не работает

-- Может, таки потому, что светодиод в оптроне на приёмной стороне работает
при обпределённой полярности подключения (+) и (-) ?
Контакт 4 это +5 вольт питания, контакт 5 - "земля", сигнал с открытого коллектора.
 
Последнее редактирование:
Что нет-то?
Со всем остальным полностью согласен, если убрать слово "более". :Dle18:


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


Ничего странного.
Во-первых, я не говорил, что не знаю.
Во-вторых, почему я должен знать всех шестьдесят тысяч пользователей?
В-третьих, аргумент "известен в узких кругах" на меня давно уже не действует, пока я сам не убедюсь, что индивид реально является
передовиком социалистического соревнования. :Dle13:
Из всего вышесказанного можно сделать вывод, что, либо Вы слишком преувеличиваете своё персональное значение, либо мы с Вами просто банально не пересекались.
Киньте в личку ссылку на профиль.


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

Уф.
Я, конечно, не Кашпировский, но осмелюсь предположить, исходя из в/у схемы кабеля, что там нечто подобное:

219696


А теперь состыкуйте свою картинку (кстати, а зачем резистор в эмиттере?), и всё станет ясно.


Зачем вся эта экономия
А я уже выше говорил.
При этом существует нормальная версия, теперь уже ставшая стандартом.
Кстати, в/у варианта там нет.
 

Что ЭМС - это из другой области. Либо Вас обязывают стандарты на разрабатываемое оборудование проходить испытания на ЭМС (скажем, не дадут сертификат), либо Вы добровольно разрабатываете устройство с учетом того, что помеховая обстановка может быть разной, чем а) завоевываете себе на рынке звание неубиваемого устройства, которое б) адекватно работает, а не занимается тем, что "непредсказуемо глючит". Остальное - поганое аматорство в стиле "и так сойдет".

если убрать слово "более"

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

насчёт правильного, поясните, плиз.

Пороги совпадают правильно, с максимальной помехоустойчивостью + дешево. Рекомендовано во всех учебниках и даташитах производителей логики уже примерно 40 лет. Что неправильного-то? Понятно, что есть преобразователи уровней более универсальные (например, допускающие бОльшие диапазоны питаний сторон), но если у Вас ситуация именно преобразовать из TTL (или CMOS 3.3В) в CMOS 5В, то всякие моднейшие "специализированные микросхемы" - это стрельба из пушки по воробьям, причем - весьма дорогая стрельба.

Киньте в личку ссылку на профиль.

По никнейму не судьба поискать? Узкий же круг :Dle46: :Dle46: :Dle46:
[./spoiler]
 
кстати, а зачем резистор в эмиттере?

-- Низачем. :) Это как схемы из журнала "Радио" : если чуть сложнее карманного фонарика,
то с вероятностью в 99% сходу работать не станет.
Так и этот резистор - х.з. зачем вообще нарисован.
Вот правильно:
219701
 
насчет резистора: иногда выходной каскад удобно запитывать ДО стабилизатора на 5, т.е. от 9 скажем вольт. А то и 12, или 6.... по моим опытами резистор дает бОльший диапазон работоспособных напряжений за счет обратной связи.

А тему ТРС я мусолю, ибо вижу, что тут дотошные и профессиональные форумчане. Так неужели не хочется понять как делают столь распространенные девайсы с ТРС? Чем то же производители руководствуются что не ставят там обычные оптопары, а "меряют напряжения"? .... Вопрос снимаю (вернусь через год):), давайте более интересные темы решать.
 
Новый вопрос: сделан MIDI USB host. Тут вопросов нет. Для его проверки можно найти, скажем, МИДИ клаву с USB МИДИ выходом. Но мне нужно, вместо нее, самому сделать некий контроллер/инструмент для посыла "тестовых МИДИ данных" желательно на ардуиино.
И вот ступор: а в контекстве схемотехники и ядра, его USB интерфейс что должен собой представлять то?
Это же не 32U4? Но и не СН340/FT232?
 
А почему не взять готовый midi-usb интерфейс, и просто не посылать любые midi-команды с компьютера?
 
@user811, midi - usb интерфейс в качестве тестового устройства? Нет. У меня есть: ЮСБ МИДИ хост. Для простоты пусть однонаправленный. Т.е. он выступает мастером, определяющим дискриптор подключенного слейв устройства. К примеру, МИДИ клава - на ней гнездо USB-B. На противоположной стороне кабеля - вилка USB-A. На хосте гнездо USB-A. Это стандарты. Дело не в них, конечно, но как может помочь USB-MIDI интерфейс? Это совсем другая тема.

А! Понял. Нет, у меня задача тестить в "обратную сторону". С хоста я действительно буду ЧИТАТЬ компом через DIN5 и дополнительный МИДИ- ЮСБ интерфейс команды.

ПС. Может Teensy более станндартно прикидывается USB-MIDI девайсом, которое будет читаться распространенными хостами? Вообще, имхо, проблема в нестандартности именно хостов, видимо, а не слейвов.

ПСС. Да, Тeensy-LC "из коробки" определилась хостом. Вопрос снят, но может кому пригодится.
 
Последнее редактирование:
Здравствуйте.
Можете привести схему / ссылку входного оптронного каскада подключенного на аппаратный RX ардуино, гарантированно не мешающего загрузке скетча через тот же USB?
 
Раз тут такая оживлённая беседа, спрошу про свою болячку.
Кто-нибудь может помочь со скетчем для Arduino Pro Micro с использованием библиотеки Control Surface?
Суть - сделать регулятор громкости RME TotalMix на энкодере по Mackie Control.
Код:
#include <Control_Surface.h> // Include the Control Surface library

// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;

// Instantiate an object that listens for MIDI Pitch Bend messages on channel 1.
PBValue pb {MCU::MASTER_VOLUME};

PBAbsoluteEncoder enc = {
  {9, 8},       // pins
  {MCU::MASTER_VOLUME}, // MIDI address (CC number + optional channel)
  200,            // optional multiplier if the control isn't fast enough

};

// Instantiate a NoteButton object
NoteButton button {
  7,                       // Push button on pin 7
  {MCU::STOP}, // Note on MIDI channel 1
};

void setup() {
  RelativeCCSender::setMode(relativeCCmode::MACKIE_CONTROL_RELATIVE);
  Control_Surface.begin(); // Initialize Control Surface
  Serial.begin(115200);
}

void loop() {
  Control_Surface.loop();
  // If the Pitch Bend value changed
  if (pb.getDirty()) {
    // Print it
    Serial.println(pb.getValue());
    // Clear the dirty flag to acknowledge the change
    pb.clearDirty();
  }
}

Громкость в Mackie посылается по PitchBend. Сам энкодер работает адекватно: прибавляет-убавляет громкость, кнопка включает DIM (по спецификации RME). В скетче есть код (с подачи создателя библиотеки), по которому контроллер слушает информацию по PitchBend из TotalMix и выводит на монитор: если в TotalMix дёргать фейдер Main Out, то монитор Arduino IDE показывает новые данные. Проблема в обновлении данных положения энкодера. Если энкодер был установлен на громкости -20 dB, а потом мышью установить фейдер на -10 dB, то при вращении энкодера громкость прыгает в район -20 dB. Какой код нужно добавить, чтобы положению энкодера присваивались актуальные данные PitchBend?
Создатель библиотеки писал, что это можно сделать через PBValue и PBAbsoluteEncoder::setValue(). Но так как я полный профан я не могу понять, как это реализовать. Буду безмерно признателен за помощь.
 
Последнее редактирование:
@llull, логика такова: у вас видимо уже собран контроллер с энкодером, раз вы пишите, что "энкодер работает адекватно". Значит под него есть скетч, где имеется функция обработки его вращения. На выходе функции - переменная энкодера с кодами PitchBend. Далее, имеется обратная связь от TotalMIX уже от виртуального фейдера, которая читается вышеприведенным скетчем и выводится в монитор как pb.getValue(). Значит, если вы захотели двинуть фейдер не энкодером, а мышкой, нужно присвоить/подменить новое значение переменной энкодера. И это надо сделать в обработчике энкодера. Его скетч вы не приводите.
 
  • Like
Реакции: llull
И это надо сделать в обработчике энкодера. Его скетч вы не приводите.

Потому что у меня его нет. :) Почему я и прошу помощи с кодом. Умом-то я понимаю, что должно быть, но не знаю, как в точности это реализовать.
 
Т.е. фактически задача стоит в реализации/ изготовлении внешнего МИДИ контроллера на ардуино, содержащего один энкодер, и подключаемого к компу?
 
Т.е. фактически задача стоит в реализации/ изготовлении внешнего МИДИ контроллера на ардуино, содержащего один энкодер, и подключаемого к компу?

Да. Он уже есть. Нужен только кусок кода для обновления данных энкодера.
 
Итак, у вас есть кусок кода который обрабатывает вращение энкодера и изменяет некую переменную, пусть Pos_Enc. Не хотите приводить код - не надо..... Далее значение этой переменной отправляется в программу. Но, есть еще некая переменная Pos_fade с той же задачей, которая меняется при перемещении фейдера. Так? Значит, надо : если было перемещение фейдера, то заменить POS_Enc на новое значение, полученное из программы TotalMIX. При этом доступ к POS_enc должен быть вынесен за пределы функции энкодера, глобально. Можно в цикле loop всегда сравнивать Pos_fade = pb.getValue() c Pos_enc и при различии заменять последнюю. Думаю как-то так.
 
  • Like
Реакции: llull
Не хотите приводить код - не надо.....

Так ведь весь код написан в этом посте под спойлером.

Думаю как-то так.

Концептуально я это понимаю. Я не знаю, как сам код оформить. По наитию кажется, что это должно происходить в этой части кода через что-то типа enc.setValue:

Код:
void loop() {
  Control_Surface.loop();
  // If the Pitch Bend value changed
  if (pb.getDirty()) {
    // Print it
    Serial.println(pb.getValue());
    // Clear the dirty flag to acknowledge the change
    pb.clearDirty();
  }
}
 
начало что то вырисовываться..Делаю мидиконтроллер на основе stm32, так как надоело искать Леонардо и Уно с "правильными" микросхемами (чтобы USBMIDI было). Да и дешевле получается. Да и ног поболее. Одна проблема - готовых проектов не нашел, ну чтобы и потенциометры, и кнопки и мультиплексоры и экранчик и миди-юсб. Пришлось из разных проектов делать сборную солянку, пришлось повозиться, ибо разные проекты зачастую не совместимы. Решил поделиться здесь , что получается в результате изысканий, может, кому то пригодится...
 
По-тихоньку проектирую свой миди-контроллер. Планирую девайс, у которого помимо контролов можно подключать клавитуры Fatar TP-40. Благо, опыт уже очень большой: https://rmmedia.ru/threads/117290/
Хочется отказаться от переменных резисторов, и сдлеть все управление на энкодерах. И вот такой вопрос: хочется, поскольку у энкодера нет абсолютного положения, сделать вокруг кучки каждого энкодера светодиодное кольцо. Наверно, многие видили такое на разных девайсах. Естественно, хочется, чтобы было все максимально технологично. Попадались ли кому готовые кольцевые LED-индикаторы с цифровым управлением? Я пока нашел только нечто такое на адресных RGB-светодиодах: https://aliexpress.ru/item/10050041...8671&spm=a2g2w.productlist.0.0.488c5095Py42Go
Но такие кольца явно избыточны: не вижу, для чего можно использовать RGB-многоцветие, а главное, такие адресные диоды WS2812
слишком мощные и много потребляют. Они скорее осветительные, чем индикаторные. А хотелось бы кольцо с подобным удобным управлением, но монохромное и маломощное. Может, кому попадалось нечто подобное?
 
По-тихоньку проектирую свой миди-контроллер........... А хотелось бы кольцо с подобным удобным управлением, но монохромное и маломощное. Может, кому попадалось нечто подобное?
Буквально вчера натолкнулся на подобную вещь, когда искал рабочую библиотеку 1602 для стм32..Сейчас не могу найти. Спаркфан делает такие штуки https://www.sparkfun.com/products/retired/10407 , а также вот вам ссылочка на ГитХаб https://github.com/hexeguitar/EncoderBoard вот схемка и печатка с РадиоЛоцман https://www.rlocman.ru/shem/schematics.html?di=88596 , поисковый запрос https://yandex.ru/search/?text=Rota...rid=0701004840:SW-35de5f9a5491&win=511&lr=191
 
Библиотеку я любую и сам напишу. А что хочется - это минимизировать количество паек, поскольку это время и себестоимость. Поэтому паять по 16 светодиодов для каждого из многочисленных энкодеров для каждого изделия очень неохота. Чем хороши кольца с адресными светодиодами - тем, что они уже готовые, а управляются по одному сигнальному проводу. Но как уже написал, они слишком яркие и слишком много потребляют энергии.
Я вот думаю, может проще отображение состояния контролов сделать только на экране? Экран божно взять достаточно большой. Или это будет неудобно для считывания глазом?
 
Или это будет неудобно для считывания глазом?
Во! Это краеугольный камень любого контроллера с клавиатурой. А именно - юзаилити. Насколько удобно смотреть/крутить/нажимать и т.п. когда одновременно надо играть? А рук то только две:))) Мне очень интересны изыскания формчан с технической т.зрения, но имхо нет смысла делать что-то новаторское с исполнительской. Лично я пока топлю 2-х манульные клавиши или с ножной клавой. Или накройняк с датчиками духовыми, перемещения и т.п., только бы высвободить руки и... глаза.
 

Сейчас просматривают