MIDI and CV Master Clock

MIDI і CV Master Clock

Я планую выпусціць друкаваныя платы, наборы мікрасхем і, патэнцыйна, поўны набор для гэтага модуля ў 2018 годзе. Мне было б вельмі карысна, калі б вы пашкадавалі час, каб сказаць мне, ці будзе гэта для вас цікава (ёсць форма ўнізе артыкула ).
дзякуй
Дэйв

Я паставіў перад сабой мэту на гэты год - да 2018 года я хачу мець наладу для жывых выступленняў без партатыўнага кампутара.

Гэта прыносіць праблемы, як на дадзены момант мой ноўтбук (і Ableton Live праграмнае забеспячэнне, якое ён змяшчае) выконвае шэраг каштоўных задач, не ў апошнюю чаргу з якіх падтрымлівае сінхранізацыю ўсяго (інструментаў, эфектаў і г.д.) і працуе з аднолькавым тэмпам.

Такім чынам, у якасці першага кроку на шляху да свабоды ад камп'ютара я вырашыў вырашыць праблему гадзінніка. Ці магу я стварыць тактавы модуль, які працаваў бы як для MIDI, так і для майго аналагавага абсталявання з кіраваннем напругай?

Будучы з вопыту распрацоўкі праграмнага забеспячэння, першае, што я зрабіў, гэта стварыў спецыфікацыю:

  • Гадзіннік павінен выводзіць аднолькавы тэмп у MIDI і CV (кантрольнае напружанне)
  • Ён павінен працаваць са сваёй уласнай унутранай крыніцай тактавага сігналу і, па жаданні, мець магчымасць падпарадкоўвацца вонкавым тактавым сігналам MIDI
  • Ён павінен распазнаваць (і мець магчымасць генераваць) MIDI-паведамленні аб прыпынку і запуску, а таксама спыняць і запускаць тактавы імпульс CV
  • Тэмп павінен рэгулявацца на хаду, у рэжыме рэальнага часу
  • Павінна быць візуальная зваротная сувязь для бягучага тэмпу, незалежна ад таго, працуе ён на ўнутраным ці знешнім гадзінніку, «пульс» для бягучага тэмпу і ці працуе гадзіннік у дадзены момант

Я даволі рана вызначыў, што ўсё гэта можа быць дасягнута з дапамогай чыпа мікракантролера ATMega328 (таксама вядомага як « Arduino ») з дапамогай даволі простага праграмавання. Усе асобныя часткі праграмнага пазла ўжо былі вырашана іншымі людзьмі , у значнай ступені гэта было проста пытаннем злучэння ўсіх адпаведных фрагментаў прыкладу кода разам.

Я вырашыў выкарыстаць паваротны энкодэр з убудаваным націскным пераключальнікам для ўстаноўкі тэмпу, запуску і прыпынку гадзінніка. 4-значны 7-сегментны святлодыёдны дысплей будзе забяспечваць усю візуальную зваротную сувязь.

Для распрацоўкі праграмнага забеспячэння я выкарыстаў клон Arduino Nano і пачаў падключаць перыферыйныя прылады (спачатку толькі кадавальнік, дысплей і пераключальнік унутранага/знешняга гадзінніка) на макетнай плаце.

макет-1
Ранняя макетная плата, тут вельмі мала што адбываецца

На гэтым этапе гадзіннік мог атрымліваць знешні MIDI, пераключацца паміж унутраным і знешнім рэжымамі, я мог задаваць тэмп і запускаць/спыняць гадзіннік. Шмат сапраўды вялікага прагрэсу даволі рана.

Аднак… Arduino працуе ад 5 вольт. Маё модульнае асяроддзе працуе ад 12 вольт. Такім чынам, у канструкцыі павінен быць пераўтваральнік энергіі. Акрамя таго, Arduino выдае 5 В са сваіх лічбавых выхадаў. Сігналы CV звычайна дасягаюць каля 10 вольт для тактавых сігналаў, таму я павінен быў распрацаваць такім чынам, каб павялічыць выхад Arduino.

І, як заўсёды бывае, спецыфікацыя крыху пашырылася:

  • Было б вельмі зручна, калі б гаджэт запомніў апошні тэмп, які быў усталяваны, калі ён быў выключаны
  • Як наконт магчымасці задаваць тэмп, націскаючы на ​​пераключальнік у такт музыцы?
  • І ці не было б добра, калі б вы маглі зрабіць гэта з дапамогай нажнога пераключальніка?
  • І калі мы робім гэта - чаму б не мець старт/стоп на нажным пераключальніку таксама?
  • Вывад тактавага імпульсу CV - гэта выдатна, але было б вельмі карысна мець варыянты для цэлага, паловы, чвэрці, восьмага ўдару

На дадзены момант я вырашыў падзяліць праект на дзве дошкі; адзін для апрацоўкі асноўнай механікі гадзінніка, а другая плата (з другім чыпам ATMega328) для пераўтварэння MIDI ў CV і падзелу выхаду на цэлую кучу розных дзяленняў такта. Такім чынам, я мог бы захаваць кампактны і эфектыўны код на плаце гадзінніка і не турбавацца аб выкарыстанні ўсіх маіх даступных кантактаў уводу/вываду.

Каб вырашыць праблему «запамінання тэмпу», я мог бы запісаць тэмп ва ўбудаваную энерганезалежную памяць чыпа (EEPROM). Тым не менш, ёсць абмежаванне ў каля 100 000 запісаў для гэтага, перш чым ён выйдзе з ладу. Калі б я проста пісаў у яго кожны раз, калі паваротны кодэр счытваў змену ў стане, гэта было б

  • Запаволіць выкананне кода
  • Спаліце ​​гэтыя 100 000 запісаў у самыя кароткія тэрміны

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

макет-2
Апошняя макетная плата гадзінніка, падключаная да вялікай колькасці абсталявання

Неўзабаве ў мяне была гатовая макетная плата для гадзіннікавага модуля, якую я пераўтварыў у схему і пабудаваў з яе гатовую плату. Я выкарыстаў свой Самаробны праграміст Arduino каб спаліць чып, а затым адкласці яго ўбок і пачаць макетаванне платы падзельніка гадзін CV.

Зноў жа, гэта аказалася даволі простым, проста падлікам уваходных тактавых сігналаў MIDI і перадачы квадратнай хвалі на лічбавыя выхадныя штыфты Arduino. Пераўтварэннем выхадаў 5В у 10В займаўся a накідаў схему ў паведамленні на форуме , дзе таксама былі прадстаўлены падрабязнасці аб абароне выхаду. Гэтая макетная плата сабралася вельмі хутка, таму што мне трэба было даказаць прынцып толькі для аднаго выхаду - я мог бы проста прадубляваць базавую схему на іншыя выхады. Вырашыў, што выхады будуць

  • Цэлая нота
  • Палова ноты
  • Чвэрць ноты
  • Восьмая нота
  • Шаснаццатая нота
  • Трыццаць другая нота

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

Back to blog