MIDI
MIDI
Haliho!
Az lenne a feladat, hogy elkapjam a "program change" uzeneteket.
Az elso byte a "control change" parancs, ahol nnnn (0-16) MIDIcsatorna sorszama.
A masodik byte a program sorszama.
Mar az elejen nem stimmel vmi:
' Kiirja az LCD-re, a MIDI adatokat
' A belso 4MHz-es orajelrol mukodik.
$regfile = "Attiny2313.dat"
$crystal = 4000000
$baud = 31250
' LCD konfiguracio
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2
' Parancs byte
Dim Parancs As Byte
' Adat byte
Dim Adat As Byte
Adat = 0
Parancs = 0
Cls
Do
Parancs = Waitkey()
Adat = Waitkey()
Lcd Parancs ; " - " ; Adat ; " "
Loop
End
Ha jon egy parancs, mindig "252 - 0"-t ir ki.
Ami jo, tenyleg 2 byte-ot kap
Ami rossz, nem ezt a ket byte-ot.
A parancs kodja 192 es 207 kozott kell legyen, tehat 252 kizart.
A program pedig 0 es 128 kozott lehet, de ez sem jo mert a 2-est kapja.
Szoval mit rontok el?
Az RS232 illesztes igy nez ki:
http://www.avrfreaks.net/index.php?modu ... lay&mid=94
Kicsit modositani kellett, mert a 280 ohmmal naon pici jelet adott (nem vett semmit). Most egy 3.4k van ott.
Asszem holnap beruhazok egy MAX232-be, hogy a HW hibat biztosan kizarhassam.
Az lenne a feladat, hogy elkapjam a "program change" uzeneteket.
Az elso byte a "control change" parancs, ahol nnnn (0-16) MIDIcsatorna sorszama.
A masodik byte a program sorszama.
Mar az elejen nem stimmel vmi:
' Kiirja az LCD-re, a MIDI adatokat
' A belso 4MHz-es orajelrol mukodik.
$regfile = "Attiny2313.dat"
$crystal = 4000000
$baud = 31250
' LCD konfiguracio
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2
' Parancs byte
Dim Parancs As Byte
' Adat byte
Dim Adat As Byte
Adat = 0
Parancs = 0
Cls
Do
Parancs = Waitkey()
Adat = Waitkey()
Lcd Parancs ; " - " ; Adat ; " "
Loop
End
Ha jon egy parancs, mindig "252 - 0"-t ir ki.
Ami jo, tenyleg 2 byte-ot kap
Ami rossz, nem ezt a ket byte-ot.
A parancs kodja 192 es 207 kozott kell legyen, tehat 252 kizart.
A program pedig 0 es 128 kozott lehet, de ez sem jo mert a 2-est kapja.
Szoval mit rontok el?
Az RS232 illesztes igy nez ki:
http://www.avrfreaks.net/index.php?modu ... lay&mid=94
Kicsit modositani kellett, mert a 280 ohmmal naon pici jelet adott (nem vett semmit). Most egy 3.4k van ott.
Asszem holnap beruhazok egy MAX232-be, hogy a HW hibat biztosan kizarhassam.
Felesleges a MAX232. Hacsak nem +- 12Vs a jelszint. Optikai levalaszto eleg.
A 280 ohm telleg meredek a rajzon:), nalam alt 1k5...4k7 szokott a felhuzo lenni es onnan megy a TX/RX labra.
Amit beraknek:
- Buffert a sorospoprthoz.
Probald meg a nullkabelt. Azzal lehet tesztelni.
A MIDIN optikai levalasztasnak kell lennie.
Optocsatolonak mit hasznalsz? az is torzithat....
A 280 ohm telleg meredek a rajzon:), nalam alt 1k5...4k7 szokott a felhuzo lenni es onnan megy a TX/RX labra.
Amit beraknek:
- Buffert a sorospoprthoz.
Probald meg a nullkabelt. Azzal lehet tesztelni.
A MIDIN optikai levalasztasnak kell lennie.
Optocsatolonak mit hasznalsz? az is torzithat....
Kiprobaltam max232-t kotottem a demopanel soros portjara.
Az eredmeny kiabrandito. Nem valtozott semmi.
A buffer nem segitett.
Optocsatolo a 4n25 lett. (ez volt keznel)
---
Gondoltam legyen egy kis sikerelmenyem megprobalok midi parancsot kiadni. Hat ez se jott ossze.
pl. a print chr(193);chr(2) hatasara nem tortenik semmi
At kellene kapcsolnia a 2.programra.
A kutyu jelzi, hogy kap midi jelet(midi lampa felvillan), de nemtortenik semmi.
Vmit nagyonelszurok, de azt modszeresen.
Az eredmeny kiabrandito. Nem valtozott semmi.
A buffer nem segitett.
Optocsatolo a 4n25 lett. (ez volt keznel)
---
Gondoltam legyen egy kis sikerelmenyem megprobalok midi parancsot kiadni. Hat ez se jott ossze.
pl. a print chr(193);chr(2) hatasara nem tortenik semmi
At kellene kapcsolnia a 2.programra.
A kutyu jelzi, hogy kap midi jelet(midi lampa felvillan), de nemtortenik semmi.
Vmit nagyonelszurok, de azt modszeresen.
Kis összefoglaló, hátha valaki belefut:
A soros kommunikáció 31250 bps-l megy, ehhez a 7.3728MHz-s kristállyal csak nagy hibával lehet ráfutni. Így a belső oszcillátor (4MHz) merült fel elsőnek. ekkor 0% hibával megy. DE: a belső RC tagot kalibrálni kell a OSCCAL taggal (ld. biztosítékbitek+adatlap). viszont ha ennek sebességét növeljül a belső műveletek megzakkanhatnak (pl. EEPROM írása).
Így marad a külső kvarc cseréje 4 MHzre.
A kommunikáció során ha print chr(X) utasítást adjuk ki akkor a soros kimeneten X kód megy ki, ahol X=0....255, valamint utána a 10 és a 13 kód is! Ez a soremelés(CR)+kocsivissza(LF) kód!
Hogy ne így legyen a következő a teendő:
A print chr(X) helyett a print chr(X); uatsítás kell. Itt a pontosvessző a lényeg! Ekkor nincs soemelés+kocsivissza.
Remélem sikerült segíteni, hátha valaki ráfut erre... Ismét.
A soros kommunikáció 31250 bps-l megy, ehhez a 7.3728MHz-s kristállyal csak nagy hibával lehet ráfutni. Így a belső oszcillátor (4MHz) merült fel elsőnek. ekkor 0% hibával megy. DE: a belső RC tagot kalibrálni kell a OSCCAL taggal (ld. biztosítékbitek+adatlap). viszont ha ennek sebességét növeljül a belső műveletek megzakkanhatnak (pl. EEPROM írása).
Így marad a külső kvarc cseréje 4 MHzre.
A kommunikáció során ha print chr(X) utasítást adjuk ki akkor a soros kimeneten X kód megy ki, ahol X=0....255, valamint utána a 10 és a 13 kód is! Ez a soremelés(CR)+kocsivissza(LF) kód!
Hogy ne így legyen a következő a teendő:
A print chr(X) helyett a print chr(X); uatsítás kell. Itt a pontosvessző a lényeg! Ekkor nincs soemelés+kocsivissza.
Remélem sikerült segíteni, hátha valaki ráfut erre... Ismét.
Ha még érdekel a probléma:
http://www.mikrocontroller.net/articles ... C/SD-Karte
http://www.mikrocontroller.net/articles ... C/SD-Karte
Esetleg hasznos lehet számotokra...
'Midi Tack Drums
'Készítette: Albert Sándor
'------ M I D I DOB-----------
'(MIDI Drum Sound MIDI Drum Sound
Note # Note #
35 Acoustic Bass Drum 59 Ride Cymbal 2
36 Bass Drum 1
37 Side Stick
38 Acoustic Snare
39 Hand Clap
40 Electric Snare
41 Low Floor Tom
42 Closed Hi -hat
43 High Floor Tom
44 Pedal Hi -hat
45 Low Tom 69 Cabasa
46 Open Hi -hat
47 Low -mid Tom
48 Hi -mid Tom
49 Crash Cymbal 1
50 High Tom
51 Ride Cymbal 1
52 Chinese Cymbal
53 Ride Bell
54 Tambourine
55 Splash Cymbal
56 Cowbell
57 Crash Cymbal 2
58 Vibraslap ')
')
'(
60 Hi Bongo
61 Low Bongo
62 Mute Hi Conga
63 Open Hi Conga
64 Low Conga
65 High Timbale
66 Low Timbale
67 High Agogo
68 Low Agogo
70 Maracas
71 Short Whistle
72 Long Whistle
73 Short Guiro
74 Long Guiro
75 Claves
76 Hi Wood Block
77 Low Wood Block
78 Mute Cuica
79 Open Cuica
80 Mute Triangle
81 Open Triangle
Minta : Print Chr(153) ; Chr(38) ; Chr(x); !!!!!!!!!!!!!!!!!!!!!!!!!!!
Chr(153) = 10 Midi Csatorna (DOB csatorna GM midi kiosztása szerint.)
(A csatorna hexadecimális értékének a decimális értéke)
Itt nem kell hexa-ban gondolkodni. Élből dec-ban kell megadni.
Chr(38) = A Kiválasztott Hang Megszólaltatása
Chr(x) = Hangerő(0 - 127)
')
'Készítette: Albert Sándor
'------ M I D I DOB-----------
'(MIDI Drum Sound MIDI Drum Sound
Note # Note #
35 Acoustic Bass Drum 59 Ride Cymbal 2
36 Bass Drum 1
37 Side Stick
38 Acoustic Snare
39 Hand Clap
40 Electric Snare
41 Low Floor Tom
42 Closed Hi -hat
43 High Floor Tom
44 Pedal Hi -hat
45 Low Tom 69 Cabasa
46 Open Hi -hat
47 Low -mid Tom
48 Hi -mid Tom
49 Crash Cymbal 1
50 High Tom
51 Ride Cymbal 1
52 Chinese Cymbal
53 Ride Bell
54 Tambourine
55 Splash Cymbal
56 Cowbell
57 Crash Cymbal 2
58 Vibraslap ')
')
'(
60 Hi Bongo
61 Low Bongo
62 Mute Hi Conga
63 Open Hi Conga
64 Low Conga
65 High Timbale
66 Low Timbale
67 High Agogo
68 Low Agogo
70 Maracas
71 Short Whistle
72 Long Whistle
73 Short Guiro
74 Long Guiro
75 Claves
76 Hi Wood Block
77 Low Wood Block
78 Mute Cuica
79 Open Cuica
80 Mute Triangle
81 Open Triangle
Minta : Print Chr(153) ; Chr(38) ; Chr(x); !!!!!!!!!!!!!!!!!!!!!!!!!!!
Chr(153) = 10 Midi Csatorna (DOB csatorna GM midi kiosztása szerint.)
(A csatorna hexadecimális értékének a decimális értéke)
Itt nem kell hexa-ban gondolkodni. Élből dec-ban kell megadni.
Chr(38) = A Kiválasztott Hang Megszólaltatása
Chr(x) = Hangerő(0 - 127)
')