Jump to content
Българският форум за музиканти

MIDI контролер от механика на роял


Recommended Posts

Чудех се дали да пускам тема за това, защото няма много акустични пианисти във форума, но пък знам ли - може на някого да му е интересно.

Реших да си направя MIDI контролер, ползвайки истинска механика от роял. Някой ще попита защо - нали има толкова много MIDI контролери на пазара, кой от кой по-хубав. Ами точно там е работата, че истинската механика на един роял е нещо, което е толкова специфично, че усещането няма как да се пресъздаде в класическите хамър механики на дигиталните пиана. Мога да се впусна в детайлни обяснения за всяка една конкретна особеност на механиката на един роял, която я отличава от стандартните механики на едно дигитално пиано, но ме съмнява някой да се интересува в детайли. Пианистите ще ме разберат ;)

Факт е, че Ямаха правят едни пиана, на които им казват "хибридни" - механика от роял, оптични безконтактни сензори, цифров звук. Най-евтиното такова е около 13000лв. Каваи също направиха подобен модел, който гони 20000лв.

Та едно на ръка, че това са много пари, после вградените звуци на Ямаха и Каваи не ми харесват и със сигурност ще го ползвам с любимия ми софтуер Garritan CFX, така че ми трябва само MIDI контролер.

И така, реших да се захвана с изработката на мой собствен такъв, DIY, дето се вика :)

Намерих патентите на Ямаха и Каваи, за да видят как го правят. И двата ползват двойка лазерни оптични сензори, покрай които преминават пластинки със специален профил, които са закачени на стеблата на чукчетата. Мислих, умувах, прерових спецификациите на всички оптични сензори на пазара, но както и да го гледаме, щеше да е сложна работа да пресъздам същото, все пак аз съм хобист, хората си имат фабрики, където могат да правят такива специални профили. Открих едно видео, в което някакъв маниак беше ползвал оптичен сензор за близост Vishay CNY70, за да подобри прецизността на някаква евтина МИДИ клавиатура, като беше разположил сензорите под клавишите. Не беше дал повече детайли за схемата си. Но това ми беше достатъчно, защото ми даде доста идеи :)

Реших да използвам CNY70, като задължително условие е да измервам скоростта на чукчетата, а не на клавишите, защото цялата механична система на един роял е такава, че на чукчето можеш да предадеш импулс дори без да натиснеш клавиша докрай, така че единственият начин да се гони реализъм е да се измерва терминалнат скорост на чукчето при удара в струната. Между другото този ефект е една от причините да не харесвам дигиталните пиана и техните механики, където липсва възможността да се свири по този начин, който се нарича leggiero и се ползва доста от Шопен насам и в романтичната музика изобщо - позволява свирене на тихи бързи пасажи, чрез леко "погалване" на клавиша, което е достатъчно да запрати чукчето и да генерира звук, като пръстът не губи време да натиска до долу клавиша, което е ограничение на дигиталните пиана. Както и да е...

Направих един Proof of Concept с този сензор, като го вързах към една USB програмируема платка Teensy 3.5 - много подобно на Arduino, но с доста по-бърз процесор, както и с вградени възможности да праща MIDI:



Удрям сензора с визитна картичка и той реагира на скоростта на удара. По същество принципът на CNY70 е да ползва светодиод и фототранзистор. Светодиодът излъчва светлина, която се отразява от предмет, който е наблизо, а фототранзисторът променя тока колектор-емитер в зависимост от близостта. На практика това е аналогов сензор, който може да произвежда различно напрежение в зависимост от близостта на даден предмет. Идеята е да измервам времето на преминаване на обекта между две дефинирани точки на различно разстояние и от това време мога да получа скорост. Тъй като преобразуване на аналогов сигнал в цифрова информация е сравнително бавен процес, а на мен ще ми трябва в цикъл да обхождам много сензори, имам нужда този сигнал да е цифров, т.е. всеки сензор да има два цифрови изхода, които подават висок сигнал, когато няма предмет в близост до съответното разстояние и подават нисък сигнал, когато предметът е по-близо от тях. От един друг пич в нета видях, че подобно решение може да се направи, като се ползва компаратор. С потенциометри задавам две различни напрежения на компаратора, които се сравняват с изхода от емитера на транзистора и така сътоветно на изходите на компаратора ще имам сътоветните два цифрови сигнала. Голямото предимство е, че компараторите имат изключително ниско време на реакция.

След като ди доказах, че тая стратегия би сработила, потърсих механика от роял на старо. Помогна ми един прекрасен човек - акордьор, техник на пиана, композитор, музикант - Димитър Величков-Шмидт. Благодарение на него се сдобих с една доста стара, но запазена цяла механика от роял:
JO_MDBz_LSRm_Bz_Uu8ix_EDyg.jpgscreencast

В един роял чукчетата удрят струните, като разстоянието между точката на ескейпмънт (когато чукчето се освобождава от клавиша и продължава по инерция) и струната е около 1мм. Тъй като тук имаме само механика, без корпус и струни, трябваше да измисля начин да спирам чукчетата. Първоначално възнамерявах да имам релса точно на чукчетата, но за съжаление при роялите струните са на две нива - басовите са над останалите струни под диагонал - за да могат да се съберат. При това положение нямаше как да мина с една релса, а място на класвиатурата за монтиране на каквито и да е скоби почти няма :( След много умуване в крайна сметка реших да спирам чукчетата с релса над стеблата, близо до чукчетата. След пазаруване в Бриколаж и малко Направи си Сам, монтирах релсата на шпилки от двете страни и със залепено кече под нея, а сензорът от първия експеримент го разположих точно над основата на чукчето, в близост до централната му ос, където има широка и плоска дървена част:


Получи се доста дoбре, скоростта се измерва с голяма прецизност и изключително бързо.

Предстои ми скалирането на този експеримент до поставяне на втора релса със сензори, както и използването на octal-bus трансийвъри, с които да чета селективно сензорите на групи от по 15 (пет чукчета с по три точки на сработване на чукче: едно за key on/off и други две след ескейпмънта, между които се измерва скоростта).

To be continued (ако има интерес) :)
Адрес на коментара
Сподели в други сайтове

  • 4 months later...

Wow !!! Сериозна работа ! Само като гледам за една октава колко техника си навързал... за цялото пиано да не се окаже с цена като за ново пиано? :)

Адрес на коментара
Сподели в други сайтове

Навързал съм, щото още меря и обмислям. Иначе общо цена за всички елементи едва ли е ще е повече от 200-300лв за цялото завършено пианоdefault_smile.png

Адрес на коментара
Сподели в други сайтове

  • 1 year later...

Малко ъпдейт по проекта, мина много време, но просто предимно съм мързелувал, съчетано с родителстване на 2.5 годишна дъщеря и доста обмисляне как да станат нещата, в крайна сметка реших да се захвана и с механичната регулация на механиката, защото ми беше интересно, имаше и ремонт да се прави, чел съм от стари книги за ремонти на пиана, гледах в Ютюб.

Ще пейстна с леки изменения мнението си от един друг форум, че ме мързи да пиша надълго.

-----------------

Значи историята е, че преди време се захванах да си направя собствен MIDI-контролер, използвайки истинска механика от роял. Защо? Ми защото истинската механика е нещо съвършено, то е сложна система, която има толкова много елементи и специфично поведение, че не може да бъде пресъздадена в дигиталните пиана, без да се направи същата 1:1 и понеже това е скъпо, не се и прави. С две изключения: Yamaha AvantGrand и Kawai Novus моделите, които ползват истинска механика от роял, оптични сензори, дигитален звук. Аз имам Yamaha AvantGrand N1X, което ми струваше 15000лв и ме сърбеше доста крастата да докажа, че мога да направя нещо горе-долу подобно за много по-малко пари. Ако някой е следил изявите ми в тоя форум през годините, знае, че съм пълна ливада по електроника. Между другото знаменателна реплика беше на *******, за когото мога да кажа, че е може би най-силният фактор да се захвана с тоя проект, понеже той каза нещо от сорта на "тва е прекалено сложно нещо да се направи". Мен такива неща ме движат в живота  :D

Най-трудно се оказа намирането на механика барабар с клавишите и всичко. Прозиводителите на пиана са като велосипедите: сглобяват от много компоненти на различни фирми, но целият модул рама + клавиши + механика + чукчета си го правят по тяхна си спецификация за всеки отделен модел заедно със самия роял и това нещо не може никой да го вземе, без да си купи цял роял за 20-30-40-200-300 бона... Така че търсих на старо и след бая време най-накрая ми се отвори парашута за някаква 120-годишна клавиатура от роял, който е бил изкормен, за да се ползва като корпус в пиано-бар. Излезе ми скъпо, но... такъв е животът.

Почнах експерименти със сензор за близост CNY70, който е аналогов, но посредством компаратори на напрежение и с потенциометри преобразувам до бинарен сигнал, с който задавам на всяко чукче по няколко предефинирани дистанции, на които сработват тези сигнали, сканирам матрично всички клавиши (всеки с по три такива сигнала), изпращам в нещо като турбо-Ардуино (Teensy 3.6, което има 255MHz), малко кодец, тва-онова и MIDI.

В крайна сметка се наложи да чета закон на ОМ, че го бях забравил, наложи се по трудния начин да разбера какво означава pullup-резистори. Проектирах си сам платки, две версии, втората със SMD-елементи, така си и минаха две години предимно да седя и да си мисля вечер кое как да стане, но най-вече мързел. Изработих си сам приспособления за регулация, поръчка на филцове от Китай и кво ли не. Смених всички бели покрития на клавишите, че бяха яка шитня, пълна регулация след това, дупчене, рязане, пробиване, изработка на алуминиева релса, която да държи всички сензори, кабеляци, безсънни нощи.

Ето малко снимки:
98DFB3AD-61E6-4596-B52D-E08BDC7E7425.jpg

28A73637-5C47-49ED-AB37-978F82914034.jpg

2C14E92A-2C78-41BD-9D29-D20C2C5FE664.jpg

7E6F6078-4152-472D-B5F9-6609FD95DE91.jpg

E32026B6-F2C1-457C-A7C1-4C75785186DC.jpg

FC54B05E-BF13-43A2-9687-56048E6FD398.jpg

6C48C369-E63E-401B-9ED3-823552C92A54.jpg

C51A8812-7236-4545-AF4B-446B04150A0E.jpg

E3600069-F25B-4EF4-BBEC-CCFB8E35C446.jpg

Тръгнах да си правя сам един дълъг IDC34 кабел (да, на флопитата едно време беше същия), който да е с 18 куплунга по себе си, ама нещо го обърках на 4-я, та ми писна и реших все пак да пробвам дотук как е концепцията само с две от платките (общо 10 клавиша), но на практика няма значение, защото кодът ми за сканира е финалният и просто смята че несвързаните платки са ненатиснати клавиши, така че скоростта ще е същата.

BTW, мислех, че съм се осрал със захранването и питах за стабилизация/регулация в една друга тема, но май ще се окаже, че няма нужда, понеже съм имал бъг в кода си: при смятането на логаритмичната крива на скоростта на клавишите на едно място double се преобразува до int и от там ми се омазва цялата динамика. Оправих го това и нещата заспаха с айфонското зарядно, което по измерване има 5mV p-p ripple. Клавиатурата без много да ѝ бая е изключително динамична и не мисля, че отстъпва много на Ямахата ми. Единственият проблем е, че цялата ми клавиатура харчи 2А, а айфонското зарядно дава 1А, но ще го измисля, може с две такива, мен дизайнът ми позволява да разделя захранванията поотделно за всеки модул.

И ей го днес едно леко демо на 10-клавиша, скоро ще окабеля и цялата клавиатура:

 

В началото снимано с айфон отблизо, звук през микрофона на телефона от говорителите на лаптопа. След това вече директно насложен WAV-експорт от софтуерното пиано и микс с бекграунд шума, за да се чуят и чукчетата ;)

Адрес на коментара
Сподели в други сайтове

  • 2 weeks later...

Споделил ли си кода към проекта в някое публично репо? Ако не, би ли дал малко повече детайли за  софтуерната архитектурата, върху която пишеш? Благодаря. :) 

Адрес на коментара
Сподели в други сайтове

Ще помисля какво да правя с цялата работа. Хвърлих доста време и усилия в това и евентуално бих го превърнал в бизнес. Ако не, ще пусна всичко свободно - дизайн, платки, код...

Иначе ползвам Teensy 3.6, там се пише на C, като е Arduino съвместим код. 
 

BTW, завърших пианото, всичко е готово вече (без корпус де, но това е вече по-маловажната част). 
 

Ето демо:

 

Адрес на коментара
Сподели в други сайтове

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Отговорете в темата...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Предишното ви съдържание бе възстановено.   Свободно редактиране

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Създай нов...

Важна информация!

Поставихме "бисквитки" на вашето устройство, за да направим този сайт по-добър. Можете да коригирате настройките си за "бисквитките" , в противен случай ще предположим, че сте съгласни с тяхното използване.