{"id":46,"date":"2012-08-18T19:57:24","date_gmt":"2012-08-18T19:57:24","guid":{"rendered":"http:\/\/www.mymidiremotes.com\/home\/?page_id=46"},"modified":"2012-08-19T00:43:58","modified_gmt":"2012-08-19T00:43:58","slug":"midiarduino-trigger","status":"publish","type":"page","link":"http:\/\/www.mymidiremotes.com\/home\/?page_id=46","title":{"rendered":"MIDI+Arduino Trigger"},"content":{"rendered":"<p>MIDI+Arduino project gives you a physical MIDI or MSC trigger button.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.mymidiremotes.com\/home\/wp-content\/uploads\/2012\/08\/MSC-Arduino1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-52\" title=\"MSC Arduino\" src=\"http:\/\/www.mymidiremotes.com\/home\/wp-content\/uploads\/2012\/08\/MSC-Arduino1-235x300.png\" alt=\"\" width=\"235\" height=\"300\" srcset=\"http:\/\/www.mymidiremotes.com\/home\/wp-content\/uploads\/2012\/08\/MSC-Arduino1-235x300.png 235w, http:\/\/www.mymidiremotes.com\/home\/wp-content\/uploads\/2012\/08\/MSC-Arduino1.png 720w\" sizes=\"auto, (max-width: 235px) 100vw, 235px\" \/><\/a><\/p>\n<p><strong>Arduino Code:<\/strong><\/p>\n<p>\/\/ MSC MIDI Arduino controller<br \/>\n\/\/ By Dave Mickey, myMIDIremotes<br \/>\nint buttonPin4 = 7;<br \/>\nint buttonPin3 = 6;<br \/>\nint buttonPin2 = 5;<br \/>\nint buttonPin1 = 4;<br \/>\nint ledPinON = 2; \/\/LED states that the code loaded correctly<br \/>\nint ledPinMIDI = 3; \/\/LED states that the MIDI was sent<\/p>\n<p>\/\/ variables will change:<br \/>\nint buttonState1 = 0;<br \/>\nint buttonState2 = 0;<br \/>\nint buttonState3 = 0;<br \/>\nint buttonState4 = 0;<\/p>\n<p>void setup() {<br \/>\nSerial.begin(31250); \u00a0 \u00a0\/\/ Set serial to the MIDI baud rate of 31250<br \/>\npinMode(ledPinMIDI, OUTPUT);<br \/>\npinMode(ledPinON, OUTPUT);<br \/>\npinMode(buttonPin1, INPUT);<br \/>\npinMode(buttonPin2, INPUT);<br \/>\npinMode(buttonPin3, INPUT);<br \/>\npinMode(buttonPin4, INPUT);<br \/>\ndigitalWrite(ledPinON, HIGH);<br \/>\ndigitalWrite(ledPinMIDI, HIGH);<br \/>\ndelay(500);<br \/>\ndigitalWrite(ledPinMIDI, LOW);<br \/>\n}<\/p>\n<p>void loop() {<br \/>\nbuttonState1 = digitalRead(buttonPin1);<br \/>\nbuttonState2 = digitalRead(buttonPin2);<br \/>\nbuttonState3 = digitalRead(buttonPin3);<br \/>\nbuttonState4 = digitalRead(buttonPin4);<\/p>\n<p>\/\/MSC GO<\/p>\n<p>if (buttonState3 == 0) {<br \/>\n\/\/Serial.println(&#8220;MSC GO&#8221;);<br \/>\ndigitalWrite(ledPinMIDI, HIGH);<br \/>\nSerial.write(0xF0);<br \/>\nSerial.write(0x7F);<br \/>\nSerial.write(0x7F); \/\/device id 7F = 127 all channels<br \/>\nSerial.write(0x02);<br \/>\nSerial.write(0x7F); \/\/ command format 7F = all devices<br \/>\nSerial.write(0x01); \/\/ action 0x01 = MSC GO<br \/>\nSerial.write(0xF7);<br \/>\ndelay(500);<br \/>\ndigitalWrite(ledPinMIDI, LOW);<br \/>\nbuttonState3 = 1;<br \/>\n}<br \/>\n\/\/ MSC STOP<br \/>\nif (buttonState4 == 0) {<br \/>\n\/\/Serial.println(&#8220;MSC STOP&#8221;);<br \/>\ndigitalWrite(ledPinMIDI, HIGH);<br \/>\nSerial.write(0xF0);<br \/>\nSerial.write(0x7F);<br \/>\nSerial.write(0x7F); \/\/device id 7F = 127 all channels<br \/>\nSerial.write(0x02);<br \/>\nSerial.write(0x7F); \/\/ command format 7F = all devices<br \/>\nSerial.write(0x08); \/\/ action 0x08 = all off<br \/>\nSerial.write(0xF7);<br \/>\ndelay(500);<br \/>\ndigitalWrite(ledPinMIDI, LOW);<br \/>\nbuttonState4 = 1;<br \/>\n}<\/p>\n<p>\/\/ MSC NEXT<br \/>\nif (buttonState1 == 0) {<br \/>\n\/\/Serial.println(&#8220;MSC NEXT&#8221;);<br \/>\ndigitalWrite(ledPinMIDI, HIGH);<br \/>\nSerial.write(0xF0);<br \/>\nSerial.write(0x7F);<br \/>\nSerial.write(0x7F); \/\/device id 7F = 127 all channels<br \/>\nSerial.write(0x02);<br \/>\nSerial.write(0x7F); \/\/ command format 7F = all devices<br \/>\nSerial.write(0x17); \/\/ action 0x17= next<br \/>\nSerial.write(0xF7);<br \/>\ndelay(500);<br \/>\ndigitalWrite(ledPinMIDI, LOW);<br \/>\nbuttonState1 = 1;<br \/>\n}<\/p>\n<p>\/\/ MSC RESET<br \/>\nif (buttonState2 == 0) {<br \/>\n\/\/Serial.println(&#8220;MSC reset&#8221;);<br \/>\ndigitalWrite(ledPinMIDI, HIGH);<br \/>\nSerial.write(0xF0);<br \/>\nSerial.write(0x7F);<br \/>\nSerial.write(0x7F); \/\/device id 7F = 127 all channels<br \/>\nSerial.write(0x02);<br \/>\nSerial.write(0x7F); \/\/ command format 7F = all devices<br \/>\nSerial.write(0x0A); \/\/ action 0x0A= reset<br \/>\nSerial.write(0xF7);<br \/>\ndelay(500);<br \/>\ndigitalWrite(ledPinMIDI, LOW);<br \/>\nbuttonState2 = 1;<br \/>\n}<br \/>\n\/\/delay(2000);<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p><strong>MSC Hex Commands:<\/strong><\/p>\n<p>0x01 GO<br \/>\n0x02 STOP<br \/>\n0x03 RESUME<br \/>\n0x04 TIMED_GO<br \/>\n0x05 LOAD<br \/>\n0x06 SET<br \/>\n0x07 FIRE<br \/>\n0x08 ALL_OFF<br \/>\n0x09 RESTORE<br \/>\n0x10 0A RESET<br \/>\n0x11 0B GO_OFF<\/p>\n<p>0x17 next<br \/>\n0x18 prev<\/p>\n<p>command_format:<br \/>\n0x01 Lighting<br \/>\n0x02 Moving Lights<br \/>\n0x03 Colour Changers<br \/>\n0x04 Strobes<br \/>\n0x05 Lasers<br \/>\n0x06 Chasers<\/p>\n<p>0x10 Sound<br \/>\n0x11 Music<br \/>\n0x12 CD Players<br \/>\n0x13 EPROM Playback<br \/>\n0x14 Audio Tape Machines<br \/>\n0x15 Intercoms<br \/>\n0x16 Amplifiers<br \/>\n0x17 Audio Effects Devices<br \/>\n0x18 Equalisers<br \/>\n0x20 Machinery<br \/>\n0x21 Rigging<br \/>\n0x22 Flys<br \/>\n0x23 Lifts<br \/>\n0x24 Turntables<br \/>\n0x25 Trusses<br \/>\n0x26 Robots<br \/>\n0x27 Animation<br \/>\n0x28 Floats<br \/>\n0x29 Breakaways<br \/>\n0x2A Barges<\/p>\n<p>0x30 Video<br \/>\n0x31 Video Tape Machines<br \/>\n0x32 Video Cassette Machines<br \/>\n0x33 Video Disc Players<br \/>\n0x34 Video Switchers<br \/>\n0x35 Video Effects<br \/>\n0x36 Video Character Generators<br \/>\n0x37 Video Still Stores<br \/>\n0x38 Video Monitors<\/p>\n<p>0x40 Projection<br \/>\n0x41 Film Projectors<br \/>\n0x42 Slide Projectors<br \/>\n0x43 Video Projectors<br \/>\n0x44 Dissolvers<br \/>\n0x45 Shutter Controls<\/p>\n<p>0x50 Process Control<br \/>\n0x51 Hydraulic Oil<br \/>\n0x52 H20<br \/>\n0x53 CO2<br \/>\n0x54 Compressed Air<br \/>\n0x55 Natural Gas<\/p>\n<p>0x56 Fog<br \/>\n0x57 Smoke<br \/>\n0x58 Cracked Haze<br \/>\n0x60 Pyro<br \/>\n0x61 Fireworks<br \/>\n0x62 Explosions<br \/>\n0x63 Flame<br \/>\n0x64 Smoke pots<\/p>\n<p>0x7F All-types<\/p>\n<p><strong>To send MIDI note from Arduino:<\/strong><\/p>\n<p>Serial.write(0x90); \/\/ Note On<br \/>\nSerial.write(0x01); \/\/Note<br \/>\nSerial.write(127); \/\/Value<\/p>\n<p><strong>Hex to MIDI Commands<\/strong><\/p>\n<p>0x80 Note Off<br \/>\n0x90 Note On<br \/>\n0xA0 Aftertouch<br \/>\n0xB0 Continuous Controller<br \/>\n0xC0 Patch change<br \/>\n0xD0 Channel Pressure<br \/>\n0xE0 Pitch bend<\/p>\n<p><strong>Value: 0-127<\/strong><\/p>\n<p><strong>Hex to MIDI Note<\/strong><\/p>\n<p>0-127<\/p>\n<p>or<\/p>\n<table width=\"21%\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n<tbody>\n<tr>\n<td align=\"left\" valign=\"top\" width=\"39%\">00<br \/>\n01<br \/>\n02<br \/>\n03<br \/>\n04<br \/>\n05<br \/>\n06<br \/>\n07<br \/>\n08<br \/>\n09<br \/>\n0A<br \/>\n0B<br \/>\n0C<br \/>\n0D<br \/>\n0E<br \/>\n0F<br \/>\n10<br \/>\n11<br \/>\n12<br \/>\n13<br \/>\n14<br \/>\n15<br \/>\n16<br \/>\n17<br \/>\n18<br \/>\n19<br \/>\n1A<br \/>\n1B<br \/>\n1C<br \/>\n1D<br \/>\n1E<br \/>\n1F<br \/>\n20<br \/>\n21<br \/>\n22<br \/>\n23<br \/>\n24<br \/>\n25<br \/>\n26<br \/>\n27<br \/>\n28<br \/>\n29<br \/>\n2A<br \/>\n2B<br \/>\n2C<br \/>\n2D<br \/>\n2E<br \/>\n2F<br \/>\n30<br \/>\n31<br \/>\n32<br \/>\n33<br \/>\n34<br \/>\n35<br \/>\n36<br \/>\n37<br \/>\n38<br \/>\n39<br \/>\n3A<br \/>\n3B<br \/>\n3C<br \/>\n3D<br \/>\n3E<br \/>\n3F<br \/>\n40<br \/>\n41<br \/>\n42<br \/>\n43<br \/>\n44<br \/>\n45<br \/>\n46<br \/>\n47<br \/>\n48<br \/>\n49<br \/>\n4A<br \/>\n4B<br \/>\n4C<br \/>\n4D<br \/>\n4E<br \/>\n4F<br \/>\n50<br \/>\n51<br \/>\n52<br \/>\n53<br \/>\n54<br \/>\n55<br \/>\n56<br \/>\n57<br \/>\n58<br \/>\n59<br \/>\n5A<br \/>\n5B<br \/>\n5C<br \/>\n5D<br \/>\n5E<br \/>\n5F<br \/>\n60<br \/>\n61<br \/>\n62<br \/>\n63<br \/>\n64<br \/>\n65<br \/>\n66<br \/>\n67<br \/>\n68<br \/>\n69<br \/>\n6A<br \/>\n6B<br \/>\n6C<br \/>\n6D<br \/>\n6E<br \/>\n6F<br \/>\n70<br \/>\n71<br \/>\n72<br \/>\n73<br \/>\n74<br \/>\n75<br \/>\n76<br \/>\n77<\/td>\n<td align=\"left\" valign=\"top\" width=\"61%\">C -1<br \/>\nC#-1<br \/>\nD -1<br \/>\nEb-1<br \/>\nE -1<br \/>\nF -1<br \/>\nF#-1<br \/>\nG -1<br \/>\nG#-1<br \/>\nA -1<br \/>\nBb-1<br \/>\nB -1<br \/>\nC 0<br \/>\nC# 0<br \/>\nD 0<br \/>\nEb 0<br \/>\nE 0<br \/>\nF 0<br \/>\nF# 0<br \/>\nG 0<br \/>\nG# 0<br \/>\nA 0<br \/>\nBb 0<br \/>\nB 0<br \/>\nC 1<br \/>\nC# 1<br \/>\nD 1<br \/>\nEb 1<br \/>\nE 1<br \/>\nF 1<br \/>\nF# 1<br \/>\nG 1<br \/>\nG# 1<br \/>\nA 1<br \/>\nBb 1<br \/>\nB 1<br \/>\nC 2<br \/>\nC# 2<br \/>\nD 2<br \/>\nEb 2<br \/>\nE 2<br \/>\nF 2<br \/>\nF# 2<br \/>\nG 2<br \/>\nG# 2<br \/>\nA 2<br \/>\nBb 2<br \/>\nB 2<br \/>\nC 3<br \/>\nC# 3<br \/>\nD 3<br \/>\nEb 3<br \/>\nE 3<br \/>\nF 3<br \/>\nF# 3<br \/>\nG 3<br \/>\nG# 3<br \/>\nA 3<br \/>\nBb 3<br \/>\nB 3<br \/>\nC 4<br \/>\nC# 4<br \/>\nD 4<br \/>\nEb 4<br \/>\nE 4<br \/>\nF 4<br \/>\nF# 4<br \/>\nG 4<br \/>\nG# 4<br \/>\nA 4<br \/>\nBb 4<br \/>\nB 4<br \/>\nC 5<br \/>\nC# 5<br \/>\nD 5<br \/>\nEb 5<br \/>\nE 5<br \/>\nF 5<br \/>\nF# 5<br \/>\nG 5<br \/>\nG# 5<br \/>\nA 5<br \/>\nBb 5<br \/>\nB 5<br \/>\nC 6<br \/>\nC# 6<br \/>\nD 6<br \/>\nEb 6<br \/>\nE 6<br \/>\nF 6<br \/>\nF# 6<br \/>\nG 6<br \/>\nG# 6<br \/>\nA 6<br \/>\nBb 6<br \/>\nB 6<br \/>\nC 7<br \/>\nC# 7<br \/>\nD 7<br \/>\nEb 7<br \/>\nE 7<br \/>\nF 7<br \/>\nF# 7<br \/>\nG 7<br \/>\nG# 7<br \/>\nA 7<br \/>\nBb 7<br \/>\nB 7<br \/>\nC 8<br \/>\nC# 8<br \/>\nD 8<br \/>\nEb 8<br \/>\nE 8<br \/>\nF 8<br \/>\nF# 8<br \/>\nG 8<br \/>\nG# 8<br \/>\nA 8<br \/>\nBb 8<br \/>\nB 8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>MIDI+Arduino project gives you a physical MIDI or MSC trigger button. &nbsp; Arduino Code: \/\/ MSC MIDI Arduino controller \/\/ By Dave Mickey, myMIDIremotes int buttonPin4 = 7; int buttonPin3 = 6; int buttonPin2 = 5; int buttonPin1 = 4; int ledPinON = 2; \/\/LED states that the code loaded correctly int ledPinMIDI = 3; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-46","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=\/wp\/v2\/pages\/46","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=46"}],"version-history":[{"count":10,"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=\/wp\/v2\/pages\/46\/revisions"}],"predecessor-version":[{"id":51,"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=\/wp\/v2\/pages\/46\/revisions\/51"}],"wp:attachment":[{"href":"http:\/\/www.mymidiremotes.com\/home\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}