Vitajte, Hosť. Prosím prihláste sa alebo sa zaregistrujte.
Nedostali ste váš aktivačný email?

Prihláste sa užívateľským menom, heslom a dåžkou sedenia
Novinky: VENUJTE 2% z daní aj na podporu gitarového fóra. Ďakujeme!!
30. November , 2024, 07:32:46
Strán: [1] 2 3 ... 7 |   Dole
  Tlačiť  
Autor Téma: Ako na programovanie s MIDI - navod  (Prečítané 19093 krát)
0 užívateľov a 11 Hostí prehliada túto tému.
mcmaros
stály hosť
*****
Príspevkov: 1173


Max for President!


« kedy: 05. September , 2008, 14:14:32 »

Toto je navod pre ludi, ktorich zaujima ako sa programuje mikroprocesor pre posielanie MIDI sprav na ovladanie multiefektov alebo MIDI ampov. Zaujimalo to mario bros-a a eter-a, ale moze to posluzit dalsim, ktori si tuto temu vygooglia. Napisal som uplne polopate a strucne najzakladnejsie a zaroven vsetky potrebne veci, ktore potrebujete vediet. Nie je to tazke, len vela dokumentov to vsetko zbytocne komplikuje. Niektore publikovane veci boli naviac pomotane ludmi, ktori to snad iba opisali, zle pochopili a nikdy nepouzili.

V MIDI existuju rozne prikazy, ale nas budu zaujimat iba

B - control change 0xB0-0xBF (je to v sestnastkovom tvare) a posielaju sa 3 byty
C - program change 0xC0-0XCF kde sa posielaju 2 byty

Kazdy poslany byte ma naviac start bit a stop bit. Program change sluzi na zmenu presetu a control change na zmenu inych funkcii. Vsetky hodnoty su popisane v manuale od daneho zariadenia, ktore chcem ovladat. U PODxt je v manualy na internete updatovana aj tabulka hodnot pre MIDI oproti papierovemu manualu.

Vyslanie start bitu + bytu + stop bitu trva dokopy 320us, t.j. 1 bit za 32us co je 1/31250s. Preto sa pise, ze rychlost MIDI je 31,25kbaud (+-1%).

Hardverove zapojenie

Pouzijem jeden vystup z mikroprocesora.

                                                      gnd----[pin 2]
mikroprocesor|----(odpor 220 ohm)----[pin5     pin4]----(odpor 220 ohm)----o +5V
                                                          [pin3         pin1]

Konektor DIN5, patkolik MIDI IN na zariadeni ktore ovladam je zapojeny,  ze kontakty su v hornej polovice a v dolnej je zamok: 1 4 2 5 3. My pouzijeme druhy a stvrty v poradi, cize znacenie 4 a 5 (neparne vyvody). Vyvod 2 zapojime na zem. Konektor, ktory k nemu pripajame (nas MIDI OUT) si treba zapojit tak, aby to sedelo. Treba si to predstavit, ze je to opacne. Tak ako som to nakreslil. Nasa 5-ka je druhy vyvod a 4-ka stvrty. Na MIDI IN zariadenia je optoclen nedzi vyvodmi 4 a 5. Anoda diody je na 4 a katoda na 5. My menime stavy na tej katode. Ked nevysielam nic, tak ledka nesvieti, t.z. ze na nasom vyvode mikroprocesora je log1 +5V. Zbytocne by ledka svietila, vsak?

Preco mam dva odpory 220 ohm a nemozem pouzit jeden 470 ohm?

Jednoducho preto, ze to je ochrana proti skratu. Aj na vystupe mikroprocesora je +5V, ked sa nic nevysiela a tak isto aj druha cast obvodu je na +5V.

Chcem zmenit preset

Pouzijem program change v tvare 1100 nnnn  0ppp pppp. V prvom byte je 1100 nnnn, co je Cx v sestnastkovej sustave. To som napisal na zaciatku. Nepisem start a stop bity. Hodnoty nnnn udavaju na ktory MIDI kanal chcem posielat. Je 16 kanalov a hodnoty su 0-15, kedze mam k dispozicii iba styri bity. Cislo kanalu musim pouzit vzdy. Hodnoty ppp pppp urcuju cislo presetu 0-127 (7 bitov).

Chcem zmenit nejaku funkciu

Pouzijem control change v tvare 1011 nnnn  0ccc cccc  0vvv vvvv .

Kde nnnn je zase MIDI kanal, ccc cccc je controler number 0-127. Byva oznacovany ako ctrl# alebo cc#. A vvv vvvv je dalsia hodnota 0-127.

Predchadzajuce vysvetlim na multiefekte PODxt. PODxt ma 128 presetov 1 az 32, kde kazdy ma este ABCD, cize 1A 1B 1C a 1D, ... V podstate je to stale iba tych 128 presetov. Hodnoty ppp pppp ako som pisal vyssie su od 0-127. To je tych 128 presetov.

Chcem zmenit preset na 16A (60) a poslat na MIDI kanal c.1

To bude bez start a stop bitov zatial takto: 1100 0001  0011 1100.

Chcem zapnut ladicku

Z manualu od PODxt zistim, ze cc# pre zapnutie/vypnutie ladicky je cc#=69. To su tie moje hodnoty ccc cccc. Hodnoty vvv vvvv byvaju bud 0-127 ked menim napr. mieru nejakeho efektu alebo 0-63=off a 64-127=on, ked potrebujem zapinat a vypinat funkcie (wah, modulacia, echo, reverb, ...). Cize mozem poslat lubovolne cislo 0-63 pre vypnutie a 64-127 pre zapnutie. Aby som v tom nemal bordel, mozem pouzivat iba 0 a 127.

Takze zasa, ked chcem poslat na MIDI kanal c.1 spravu, ze chcem zapnut ladicku, poslem 1011 0001  0100 0101  0111 1111.

Ako to poslem so start a stop bitami?

Byty ktore som zatial pisal boli bez start a stop bitov. Start bit je vzdy 0 a stop bit je vzdy 1. Start bit je logicky 0, pretoze musim zacat komunikaciu, kedze leddioda v optoclene na MIDI IN ovladaneho zariadenia ma na anode aj katode +5V. Byty posielam od najnizsieho bitu po najvyssi.

V mojom pripade so zmenou presetu by som posielal nie 1100 0001  0011 1100 ale 1000 0011  0011 1100. Teraz k tomu treba pridat este start a stop bity, takze to bude v tvare 0|10000011|1|0|00111100|1. Ciarkami som opticky oddelil start a stop bity, aby to bolo vidiet.

Zhrnutie prikladov

Napisem ich v tvare, v akom to posielam na vyvod mikroprocesora.

0|10000011|1|0|00111100|1 - zmena presetu na 16A (60) cez MIDI kanal c.1  - trva to celkom 640us
0|10001101|1|0|10100010|1|0|11111110|1 - zapnutie ladicky - trva to 960us

Posielam to samozrejme tymto smerom ---->. Tak ako je to napisane.


No a toto je cela veda. Nic viac, nic menej. Dufam, ze som nic nepoplietol. Ak nahodou neviem niektore hodnoty na ovladanie, tak mozem "pocuvat" vystup MIDI OUT na zariadeni. PODxt takto posiela na vystup vsetky MIDI spravy, ako menim rozne hodnoty, ked tocim potenciometrami a prepinacmi.

Ako nastavim PODxt tak aby som ho mohol ovladat?

Stlacim Tune System a najdem si obrazovku MIDI. Mozem tam nastavit na ktorom kanaly ma pocuvat 1-16 alebo na vsetkych (omni). Potom musim nastavit PGM ON, aby prikazy vykonaval. A je tam aj output, ktorym sa zapne posielanie prikazov na vystup podom, ak ich chcem odpocuvat a studovat alebo posielat dalej. Treba si to nastudovat v manualy.
« Posledná zmena: 08. September , 2008, 09:41:50 od mcmaros » Zaznamenané

pista58
VIP
inventár podniku
*
Príspevkov: 6966



« Odpoveď #1 kedy: 05. September , 2008, 15:03:18 »

nerozumiem 99% veciam ale ak je to fukcne, tak super navod!!! Na zdravie!
Zaznamenané

o-yep sro
Martinlm
adminištrant
inventár podniku
***
Príspevkov: 7479



WWW
« Odpoveď #2 kedy: 05. September , 2008, 15:06:23 »

Citácia
B - control change 0xB0-0xBF (je to v osmickovom tvare) a posielaju sa 2 byty
Viac krat spominas osmickovy tvar, pritom ide o 16tkovy. Dalej byty namiesto bajty. Dobre si spal tuto noc?

Inak pekna praca, snad este obcas je to dost zamotane napisane (napriklad to Cx a nnnn), ale kto sa vyzna, ten sa v tom snad rozoberie.
« Posledná zmena: 05. September , 2008, 15:07:09 od Martinlm » Zaznamenané

styrioci
inventár podniku
*******
Príspevkov: 11902



« Odpoveď #3 kedy: 05. September , 2008, 15:24:06 »

Viac krat spominas osmickovy tvar, pritom ide o 16tkovy. Dalej byty namiesto bajty. Dobre si spal tuto noc?
a ty? BYTE a BIT, ci?
Zaznamenané
mario bross
*** BACHAR ***
inventár podniku
***
Príspevkov: 8210



« Odpoveď #4 kedy: 05. September , 2008, 15:27:50 »

vyborne  Na zdravie! a ma to byt "byte" ale ked napise bajt, tak je to jedno. byty je dost blbe pomenovanie, ale pochopili sme  :)
Zaznamenané

mcmaros
stály hosť
*****
Príspevkov: 1173


Max for President!


« Odpoveď #5 kedy: 05. September , 2008, 17:11:55 »

Viac krat spominas osmickovy tvar, pritom ide o 16tkovy. Dalej byty namiesto bajty. Dobre si spal tuto noc?
Iha, mas pravdu je to sestnastkova. Byte je 8 bitov. Bajt je len slovensky byte. Inac som moc dobre nespal. Ako stale, t.j. vzdy malo. :)

Inak pekna praca, snad este obcas je to dost zamotane napisane (napriklad to Cx a nnnn), ale kto sa vyzna, ten sa v tom snad rozoberie.
Toto snad nie je napisane tazko. Kto to bude potrebovat a precita to vsetko, tak pochopi. Trochu som to upravil: "V prvom byte je 1100 nnnn, co je Cx v sestnastkovej sustave".

nerozumiem 99% veciam ale ak je to fukcne, tak super navod!!! Na zdravie!
Funkcne by to malo byt, kedze som to robil.
« Posledná zmena: 05. September , 2008, 17:22:52 od mcmaros » Zaznamenané

Martinlm
adminištrant
inventár podniku
***
Príspevkov: 7479



WWW
« Odpoveď #6 kedy: 05. September , 2008, 17:54:20 »

a ty? BYTE a BIT, ci?
Ano, ale je to kusok divne po slovensky pisat byty, bity a mysliet bytes, bits, ked su na to slovka bajty, bity.
Zaznamenané

mcmaros
stály hosť
*****
Príspevkov: 1173


Max for President!


« Odpoveď #7 kedy: 05. September , 2008, 17:58:25 »

Ja pouzivam byty. Na bajty som si nejako nezvykol.

PS: Uz som snad vychytal vsetky muchy.
Zaznamenané

Pachotronic
nováčik
*
Príspevkov: 58


« Odpoveď #8 kedy: 05. September , 2008, 22:00:50 »

Toto je navod pre ludi, ktorich zaujima ako sa programuje mikroprocesor pre posielanie MIDI sprav na ovladanie multiefektov alebo MIDI ampov. Zaujimalo to mario bros-a a eter-a, ale moze to posluzit dalsim, ktori si tuto temu vygooglia. Napisal som uplne polopate a strucne najzakladnejsie a zaroven vsetky potrebne veci, ktore potrebujete vediet. Nie je to tazke, len vela dokumentov to vsetko zbytocne komplikuje. Niektore publikovane veci boli naviac pomotane ludmi, ktori to snad iba opisali, zle pochopili a nikdy nepouzili.

V MIDI existuju rozne prikazy, ale nas budu zaujimat iba

B - control change 0xB0-0xBF (je to v sestnastkovom tvare) a posielaju sa 2 byty
C - program change 0xC0-0XCF kde sa posielaju 3 byty

Kazdy poslany byte ma naviac start bit a stop bit. Program change sluzi na zmenu presetu a control change na zmenu inych funkcii. Vsetky hodnoty su popisane v manuale od daneho zariadenia, ktore chcem ovladat. U PODxt je v manualy na internete updatovana aj tabulka hodnot pre MIDI oproti papierovemu manualu.

Vyslanie start bitu + bytu + stop bitu trva dokopy 320us, t.j. 1 bit za 32us co je 1/31250s. Preto sa pise, ze rychlost MIDI je 31,25kbaud (+-1%).

Hardverove zapojenie

Pouzijem jeden vystup z mikroprocesora.

                                                      gnd----[pin 2]
mikroprocesor|----(odpor 220 ohm)----[pin5     pin4]----(odpor 220 ohm)----o +5V
                                                          [pin3         pin1]

Konektor DIN5, patkolik MIDI IN na zariadeni ktore ovladam je zapojeny,  ze kontakty su v hornej polovice a v dolnej je zamok: 1 4 2 5 3. My pouzijeme druhy a stvrty v poradi, cize znacenie 4 a 5 (neparne vyvody). Vyvod 2 zapojime na zem. Konektor, ktory k nemu pripajame (nas MIDI OUT) si treba zapojit tak, aby to sedelo. Treba si to predstavit, ze je to opacne. Tak ako som to nakreslil. Nasa 5-ka je druhy vyvod a 4-ka stvrty. Na MIDI IN zariadenia je optoclen nedzi vyvodmi 4 a 5. Anoda diody je na 4 a katoda na 5. My menime stavy na tej katode. Ked nevysielam nic, tak ledka nesvieti, t.z. ze na nasom vyvode mikroprocesora je log1 +5V. Zbytocne by ledka svietila, vsak?

Preco mam dva odpory 220 ohm a nemozem pouzit jeden 470 ohm?

Jednoducho preto, ze to je ochrana proti skratu. Aj na vystupe mikroprocesora je +5V, ked sa nic nevysiela a tak isto aj druha cast obvodu je na +5V.

Chcem zmenit preset

Pouzijem program change v tvare 1100 nnnn  0ppp pppp. V prvom byte je 1100 nnnn, co je Cx v sestnastkovej sustave. To som napisal na zaciatku. Nepisem start a stop bity. Hodnoty nnnn udavaju na ktory MIDI kanal chcem posielat. Je 16 kanalov a hodnoty su 0-15, kedze mam k dispozicii iba styri bity. Cislo kanalu musim pouzit vzdy. Hodnoty ppp pppp urcuju cislo presetu 0-127 (7 bitov).

Chcem zmenit nejaku funkciu

Pouzijem control change v tvare 1011 nnnn  0ccc cccc  0vvv vvvv .

Kde nnnn je zase MIDI kanal, ccc cccc je controler number 0-127. Byva oznacovany ako ctrl# alebo cc#. A vvv vvvv je dalsia hodnota 0-127.

Predchadzajuce vysvetlim na multiefekte PODxt. PODxt ma 128 presetov 1 az 32, kde kazdy ma este ABCD, cize 1A 1B 1C a 1D, ... V podstate je to stale iba tych 128 presetov. Hodnoty ppp pppp ako som pisal vyssie su od 0-127. To je tych 128 presetov.

Chcem zmenit preset na 16A (60) a poslat na MIDI kanal c.1

To bude bez start a stop bitov zatial takto: 1100 0001  0011 1100.

Chcem zapnut ladicku

Z manualu od PODxt zistim, ze cc# pre zapnutie/vypnutie ladicky je cc#=69. To su tie moje hodnoty ccc cccc. Hodnoty vvv vvvv byvaju bud 0-127 ked menim napr. mieru nejakeho efektu alebo 0-63=off a 64-127=on, ked potrebujem zapinat a vypinat funkcie (wah, modulacia, echo, reverb, ...). Cize mozem poslat lubovolne cislo 0-63 pre vypnutie a 64-127 pre zapnutie. Aby som v tom nemal bordel, mozem pouzivat iba 0 a 127.

Takze zasa, ked chcem poslat na MIDI kanal c.1 spravu, ze chcem zapnut ladicku, poslem 1011 0001  0100 0101  0111 1111.

Ako to poslem so start a stop bitami?

Byty ktore som zatial pisal boli bez start a stop bitov. Start bit je vzdy 0 a stop bit je vzdy 1. Start bit je logicky 0, pretoze musim zacat komunikaciu, kedze leddioda v optoclene na MIDI IN ovladaneho zariadenia ma na anode aj katode +5V. Byty posielam od najnizsieho bitu po najvyssi.

V mojom pripade so zmenou presetu by som posielal nie 1100 0001  0011 1100 ale 1000 0011  0011 1100. Teraz k tomu treba pridat este start a stop bity, takze to bude v tvare 0|10000011|1|0|00111100|1. Ciarkami som opticky oddelil start a stop bity, aby to bolo vidiet.

Zhrnutie prikladov

Napisem ich v tvare, v akom to posielam na vyvod mikroprocesora.

0|10000011|1|0|00111100|1 - zmena presetu na 16A (60) cez MIDI kanal c.1  - trva to celkom 640us
0|10001101|1|0|10100010|1|0|11111110|1 - zapnutie ladicky - trva to 960us

Posielam to samozrejme tymto smerom ---->. Tak ako je to napisane.


No a toto je cela veda. Nic viac, nic menej. Dufam, ze som nic nepoplietol. Ak nahodou neviem niektore hodnoty na ovladanie, tak mozem "pocuvat" vystup MIDI OUT na zariadeni. PODxt takto posiela na vystup vsetky MIDI spravy, ako menim rozne hodnoty, ked tocim potenciometrami a prepinacmi.

Ako nastavim PODxt tak aby som ho mohol ovladat?

Stlacim Tune System a najdem si obrazovku MIDI. Mozem tam nastavit na ktorom kanaly ma pocuvat 1-16 alebo na vsetkych (omni). Potom musim nastavit PGM ON, aby prikazy vykonaval. A je tam aj output, ktorym sa zapne posielanie prikazov na vystup podom, ak ich chcem odpocuvat a studovat alebo posielat dalej. Treba si to nastudovat v manualy.

Na ktoru temu odpovedas? Toto ma dost Zaujima.
Zaznamenané
mcmaros
stály hosť
*****
Príspevkov: 1173


Max for President!


« Odpoveď #9 kedy: 05. September , 2008, 22:41:52 »

Na ktoru temu odpovedas? Toto ma dost Zaujima.

Uz tu bol zaujem o stavbu lampovej hlavy s midi ovladanim a par ludi to zaujimalo, len nevedeli ako na to. Takto to poslusi aj ostatnim, ktori si to vygooglia.
Zaznamenané

Pachotronic
nováčik
*
Príspevkov: 58


« Odpoveď #10 kedy: 05. September , 2008, 23:12:16 »

Uz tu bol zaujem o stavbu lampovej hlavy s midi ovladanim a par ludi to zaujimalo, len nevedeli ako na to. Takto to poslusi aj ostatnim, ktori si to vygooglia.

skusal som s PIC16F877 urobit nieco ako monitor, co lezie von z PSR280 a v celku to fungovalo. bolo to zo
suplikovych zasob. na tom klavese ma zaujimal hlavne Bulc Dump (sorry za nazvy). Ja som chcel editovat
"uzivatelske skladby". Teraz mam PSR295 a tam si to da ( sice cez usb ) v Sibelius alebo Cubasse.
Zaznamenané
Pachotronic
nováčik
*
Príspevkov: 58


« Odpoveď #11 kedy: 05. September , 2008, 23:27:16 »

S ovladanim cez MIDI lamp. hl. nemam vobec z. skus.
kde sa ta vyuziva? koncerty? nejaka cudzia zvuk. rezia?
Zaznamenané
Pachotronic
nováčik
*
Príspevkov: 58


« Odpoveď #12 kedy: 05. September , 2008, 23:43:14 »

Znovu otravujem. Bez znalosti MIDI protokolu je to dost tazke.
Zaznamenané
mcmaros
stály hosť
*****
Príspevkov: 1173


Max for President!


« Odpoveď #13 kedy: 06. September , 2008, 00:16:10 »

S ovladanim cez MIDI lamp. hl. nemam vobec z. skus.
kde sa ta vyuziva? koncerty? nejaka cudzia zvuk. rezia?

Hej, ovladas potom midi pedalboardom napriklad od behringeru midi preamp alebo hlavu. Ale moze to byt aj digitalny multiefekt. Je to dobre, ze mozes jednym tlacidlom zmenit komplet zvuk (prepnut kanal preampu/hlavy a prepnut iny preset na multaku). Co chces ovladat je uz jedno, islo mi len o to ukazat ako a co posielat.
Zaznamenané

eter
pravidelný návštevník
****
Príspevkov: 157


« Odpoveď #14 kedy: 07. September , 2008, 23:35:09 »

B - control change 0xB0-0xBF (je to v sestnastkovom tvare) a posielaju sa 2 byty
C - program change 0xC0-0XCF kde sa posielaju 3 byty
Malo by to byt naopak, pre control change su 3 byty a pre program change 2 byty.

V mojom pripade so zmenou presetu by som posielal nie 1100 0001  0011 1100 ale 1000 0011  0011 1100.

0|10000011|1|0|00111100|1 - zmena presetu na 16A (60) cez MIDI kanal c.1  - trva to celkom 640us
0|10001101|1|0|10100010|1|0|11111110|1 - zapnutie ladicky - trva to 960us
toto som nepochopil, preco si prepisal 1100 0001  0011 1100 na 1000 0011  0011 1100 a nasledne aj tie dalsie nejako divne. Ved pridanim start a stop bitu by sa nemali menit jednotlive byty alebo sa mylim?

Celkovo si tuto temu napisal dost so zameranim na to, co sa posiela ...teda jednotlive spravy ...ale mna by skor zaujimalo, ako sa da naprogramovat chip, ktory bude prijimat tieto prikazy a ako tento chip (PIC) nakonfigurovat. Lebo co som videl nejake programy na MIDI ovladanie pomocou PIC, tak to nebolo take jednoduche, treba to nakonfigurovat (UART asi), nainicializovat, boli tam nejake oneskorovacie slucky atd...
Ale ako postupovat pri navrhu, ked to potrebujem implementovat do hlavy alebo preampu, aby to prepinalo kanaly, cize jednotlive rele tak ako ja potrebujem? A zaroven aby to aj vedelo komunikovat a reagovat na ovladanie hociakeho original midi footcontrollera (napr. znameho behringer FCB1010). A este aby sa to dalo aj ovladat pomocou tlacitok priamo na hlave a footswitchu vyrobeneho len pre takyto zosilnovac (cize bez midi footcontrollera). Tak ako to maju bezne gitarove hlavy. Popiskujem si  ha ha ha
Zaznamenané
Strán: [1] 2 3 ... 7 |   Hore
  Tlačiť  
 
Skočiť na:  

Stránka vytvorená za 0.109 sekund, 23 otázok.