{"id":834,"date":"2019-03-09T10:15:02","date_gmt":"2019-03-09T10:15:02","guid":{"rendered":"http:\/\/www.anttipussinen.net\/?page_id=834"},"modified":"2019-05-06T08:53:20","modified_gmt":"2019-05-06T08:53:20","slug":"834-2","status":"publish","type":"page","link":"https:\/\/www.anttipussinen.net\/?page_id=834","title":{"rendered":"Audio to Midi\/Serial Spectral analyzer"},"content":{"rendered":"\n<h5 class=\"wp-block-heading\"><\/h5>\n\n\n\n<p>Audio to MIDI\/Serial spectrum analyzer VJ:lle, taiteilijoille ja hardware-hakkereille -ty\u00f6paja osana Sw\u00e4g 15v juhlaohjelmaa<\/p>\n\n\n\n<p>24.3. alkaen klo. 11.00 Lielahden kartanolla Hiedanrannassa, kokoushuone Mariessa. Kesto noin viisi tuntia.<\/p>\n\n\n\n<p>Ty\u00f6pajassa rakennetaan seitsem\u00e4ll\u00e4 eri taajuusalueella \u00e4\u00e4nisignaalia reaaliajassa analysoiva laite, sek\u00e4 k\u00e4yd\u00e4\u00e4n l\u00e4pi laitteen analoginen ja digitaalinen toimitaperiaate sek\u00e4 siihen liittyv\u00e4 koodi. Laitteen prosessorina toimii Arduino Pro -mikrokontrolleri.&nbsp;<\/p>\n\n\n\n<p>Tietokoneiden sis\u00e4\u00e4n rakennetut \u00e4\u00e4nikortit eiv\u00e4t ole suunniteltu \u00e4\u00e4nen analysointiin tai \u00e4\u00e4nitykseen lyhyell\u00e4 viiveell\u00e4.&nbsp; T\u00e4m\u00e4 on tuttua erityisesti VJ:lle ja muille \u00e4\u00e4neen ja musiikkiin visualisointeja tekeville. \u00c4\u00e4nen sis\u00e4\u00e4nmenon viive on yleens\u00e4 niin suuri, ett\u00e4 esimerkiksi \u00e4\u00e4nireaktiivisten vj-esitysten toiminta on v\u00e4hint\u00e4\u00e4nkin ep\u00e4varmaa, tai ei k\u00e4yt\u00e4nn\u00f6ss\u00e4 onnistu. Ty\u00f6pajassa rakennettava laite tekee t\u00e4m\u00e4n analyysin tietokoneen puolesta seitsem\u00e4ll\u00e4 eri taajuusalueella. Koska \u00e4\u00e4nimateriaalin data siirtyy tietokoneeseen 8-bittisin\u00e4 numeroina, sit\u00e4 voidaan k\u00e4ytt\u00e4\u00e4 erilaisten parametrien ohjaamiseen l\u00e4hes ilman latenssia. T\u00e4m\u00e4 s\u00e4\u00e4st\u00e4\u00e4 my\u00f6s tietokoneen prosessoriaikaa.<\/p>\n\n\n\n<p>T\u00e4m\u00e4 data siirtyy tietokoneeseen joko perinteisell\u00e4 serial yhteydell\u00e4 tai class compliant UsbMidin\u00e4, tarkoittaen, ett\u00e4 mik\u00e4li k\u00e4ytett\u00e4v\u00e4 ohjelmisto tukee Midi\u00e4, n\u00e4kee tietokone laiteen Midi interfacena automaattisesti.&nbsp; Valinta Serial ja Midi datan v\u00e4lill\u00e4 tehd\u00e4\u00e4n aina ennen laitteen kiinnitt\u00e4mist\u00e4 tietokoneeseen. Koko laite saa virtansa usb-liit\u00e4nn\u00e4n yli. Serial-yhteytt\u00e4 tukevat mm. Max\/msp sek\u00e4 Touchdesigner -ohjelmistot. Midi-protokollaa tukevat melkein kaikki \u00e4\u00e4ni-, video- ja vj-ohjelmistot. Laite analysoi erikseen seuraavat taajuusalueet: 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz, 16kHz.<\/p>\n\n\n\n<p>Laitteella voidaan s\u00e4\u00e4t\u00e4\u00e4 \u00e4\u00e4nenvoimakkuus ennen analysointia niin, ett\u00e4 vaikka livetilanteessa \u00e4\u00e4nentaso vaihtelisi, voidaan sit\u00e4 kompensoida manuaalisesti. Workshop maksaa 65 euroa sis\u00e4lt\u00e4en materiaalit. Maksu suoritetaan k\u00e4teisell\u00e4 paikanp\u00e4\u00e4ll\u00e4. Aiempi kokemus kolvaamisesta, elektroniikasta tai koodamisesta ei ole v\u00e4ltt\u00e4m\u00e4t\u00f6nt\u00e4; kaikki poistuvat ty\u00f6pajasta mukanaan toimiva laite.&nbsp;<\/p>\n\n\n\n<p>Sitovat ilmoittautumiset s\u00e4hk\u00f6postitse osoitteeseen info@anttipussinen.net.<\/p>\n\n\n\n<p>Ty\u00f6pajaan mahtuu 10 henkil\u00f6\u00e4. Mik\u00e4li omistat kolvin tai muita asiaan liittyvi\u00e4 ty\u00f6kaluja kuten katkaisupihdit tai tinaimurin, ota ne mukaan ja ilmoita siit\u00e4 ilmoittautumisen yhteydess\u00e4. Muille osallistujille j\u00e4rjestet\u00e4\u00e4n ty\u00f6kalut. Tekniset tiedot:<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; Stereo audio input<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; 60 to +24 db gain adjustment<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; Analyzation to 7 bands, middle frequencies, 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz, 16kHz<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; Data transfer to computer using serial, variable baud rates, value: 0-255<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; Data transfer to computer using UsbMIDI, baud rate varies with OS, value 0-127<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; Measured latency from audio to serial\/midi ~ 1.3 ms<\/p>\n\n\n\n<p>&#8211; &nbsp; &nbsp; Midi class compliant interface<\/p>\n\n\n\n<p>&#8211;&nbsp; &nbsp; USB powered<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Code and programming, from arduino IDE select arduino Pro micro or arduino leonardo as a board and then upload following code<\/p>\n\n\n\n<p>Arduino Code: <\/p>\n\n\n\n<p>include &#8220;MIDIUSB.h&#8221;<\/p>\n\n\n\n<p>int strobe = 10; \/\/ strobe pins on digital 10<br>\nint res = 9; \/\/ reset pins on digital 9<br>\nint audio[7]; \/\/ store band values in these arrays<\/p>\n\n\n\n<p>int Hz = 0;<br>\nint MidiCC = 70;<\/p>\n\n\n\n<p>int band;<br>\nint selector_pin = 2;<br>\nboolean selector_state = true;<\/p>\n\n\n\n<p>int led_pin = 16;<\/p>\n\n\n\n<p>int treshold = 126;<br>\nboolean clip = false;<\/p>\n\n\n\n<p>int clip_loop_count = 0; \/\/ extend led on for x loops<br>\nint clip_loop_max = 3; \/\/<\/p>\n\n\n\n<p>void setup() {<\/p>\n\n\n\n<p>pinMode(res, OUTPUT); \/\/ reset<br>\npinMode(strobe, OUTPUT); \/\/ strobe<br>\ndigitalWrite(res,LOW); \/\/ reset low<br>\ndigitalWrite(strobe,HIGH); \/\/pin 9 is RESET on the shield<br>\npinMode(selector_pin, INPUT_PULLUP);<br>\npinMode(led_pin, OUTPUT);<\/p>\n\n\n\n<p>selector_state = digitalRead(selector_pin);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void readMSGEQ7()<br>\n\/\/ Function to read 7 band equalizers<br>\n{<br>\ndigitalWrite(res, HIGH);<br>\ndigitalWrite(res, LOW);<br>\ndelayMicroseconds(72); \/\/ delay after reset<\/p>\n\n\n\n<p>for(band=0; band &lt;7; band++)<br>\n{<br>\ndigitalWrite(strobe,LOW); \/\/ strobe pin on the chip &#8211; move to next band<br>\ndelayMicroseconds(32); \/\/<br>\naudio[band] = analogRead(0); \/\/ store left band reading<\/p>\n\n\n\n<p>digitalWrite(strobe,HIGH);<\/p>\n\n\n\n<p>Hz = audio[band] &gt;&gt; 3;<br>\n  MidiCC = band + 70;<\/p>\n\n\n\n<p>if (Hz &gt;= treshold)<br>\n  {<br>\n     clip = true;<br>\n     clip_loop_count = 0;<br>\n  }<br>\n  else if (Hz &lt; treshold)<br>\n  {<br>\n   clip = false;<br>\n  }<\/p>\n\n\n\n<p>midiEventPacket_t midiCc = { 0x0B, 0xB0, MidiCC, Hz };<br>\n MidiUSB.sendMIDI(midiCc);<br>\n MidiUSB.flush();<\/p>\n\n\n\n<p>delayMicroseconds(1000);<br>\n}<br>\n}<\/p>\n\n\n\n<p>void readMSGEQ7_Serial()<br>\n\/\/ Function to read 7 band equalizers<br>\n{<br>\ndigitalWrite(res, HIGH);<br>\ndigitalWrite(res, LOW);<br>\ndelayMicroseconds(72); \/\/<br>\nfor(band=0; band &lt;7; band++)<br>\n{<br>\ndigitalWrite(strobe,LOW); \/\/ strobe pin on the shield &#8211; kicks the IC up to the next band<br>\ndelayMicroseconds(32); \/\/<br>\naudio[band] = analogRead(0); \/\/ store left band reading<\/p>\n\n\n\n<p>digitalWrite(strobe,HIGH);<\/p>\n\n\n\n<p>Hz = audio[band] &gt;&gt; 3;<br>\n  MidiCC = band + 70;<\/p>\n\n\n\n<p>Serial.print(band, DEC);<br>\n  Serial.print(&#8221; &#8220;);<br>\n  Serial.print(Hz, DEC);<br>\n  Serial.print(&#8216;\\n&#8217;);<br>\n  Serial.flush();<\/p>\n\n\n\n<p>delayMicroseconds(1000);<br>\n}<br>\n}<\/p>\n\n\n\n<p>void loop() {<\/p>\n\n\n\n<p>if (selector_state == true)<br>\n{<br>\n readMSGEQ7();<br>\n}<\/p>\n\n\n\n<p>if (selector_state == false)<br>\n{<br>\n readMSGEQ7_Serial();<br>\n}<\/p>\n\n\n\n<p>\/\/ treshhlod led code<br>\n if (clip == true)<br>\n {<br>\n   digitalWrite(led_pin, HIGH);<br>\n   clip_loop_count++;<br>\n   clip == false;<br>\n }<br>\n else if (clip_loop_count &lt;= clip_loop_max)\n {\n   \/\/digitalWrite(led_pin, HIGH);\n   clip_loop_count++;\n }\n else if (clip_loop_count &gt; clip_loop_max)<br>\n {<br>\n   digitalWrite(led_pin, LOW);<br>\n   clip_loop_count = 0;<br>\n }<br>\n else if (clip == false &amp;&amp; clip_loop_count == 0)<br>\n {<br>\n   digitalWrite(led_pin, LOW);<br>\n }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Audio to MIDI\/Serial spectrum analyzer VJ:lle, taiteilijoille ja hardware-hakkereille -ty\u00f6paja osana Sw\u00e4g 15v juhlaohjelmaa 24.3. alkaen klo. 11.00 Lielahden kartanolla Hiedanrannassa, kokoushuone Mariessa. Kesto noin viisi tuntia. Ty\u00f6pajassa rakennetaan seitsem\u00e4ll\u00e4 eri taajuusalueella \u00e4\u00e4nisignaalia reaaliajassa analysoiva laite, sek\u00e4 k\u00e4yd\u00e4\u00e4n l\u00e4pi laitteen analoginen ja digitaalinen toimitaperiaate sek\u00e4 siihen liittyv\u00e4 koodi. Laitteen prosessorina toimii Arduino Pro -mikrokontrolleri.&nbsp; Tietokoneiden [&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-834","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=\/wp\/v2\/pages\/834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=834"}],"version-history":[{"count":7,"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=\/wp\/v2\/pages\/834\/revisions"}],"predecessor-version":[{"id":1039,"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=\/wp\/v2\/pages\/834\/revisions\/1039"}],"wp:attachment":[{"href":"https:\/\/www.anttipussinen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}