Satura rādītājs:
- 1. darbība: demonstrācijas video
- 2. solis: informācija par gaismas sensoriem
- 3. darbība: informācija par ultraskaņas sensoru HC-SR04
- 4. solis: Aduino ķēde
- 5. darbība: I/O saraksts
- 6. solis: Aduino kods
- 7. solis: MIDI komunikācijas pamati
Video: EAL - Arduino MIDI kontrolieris: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Ražotājs Søren Østergaard Petersen, OEAAM16EDA
Šī pamācība apraksta uz arduino balstītu MIDI kontrolieri. Šis ir skolas projekts. Izmantojot roku, varat atskaņot vienkāršas melodijas, izmantojot MIDI savienojumu un pievienotu MIDI instrumentu (vai kā šajā gadījumā piezīmjdatoru, kurā darbojas softsynth programmatūra). Jūs varat atskaņot piezīmes no C dur skalas, c-d-e-f-g-a-b-c. Lai varētu savienot MIDI kontrolieri ar piezīmjdatoru, jums būs nepieciešama MIDI un USB saskarne, piemēram, m-audio Uno.
1. darbība: demonstrācijas video
Palieliniet skaļumu un izbaudiet!
Kā tas strādā:
MIDI kontrolieris izmanto Arduino MEGA 2560 plati. Divi gaismas (LDR) sensori, kas iebūvēti 16 mm elektriskajā caurulē, veido dubultu sensoru sistēmu un tiek izmantoti, lai izveidotu stabilu sprūdu bez viltus dubultās iedarbināšanas. Zibspuldze rada gaismas staru, kad staru kūlis pārtrauc roku, spēlējot kontrolieri, apakšējais gaismas sensors uztver trūkstošo staru, un HC-SR04 ultraskaņas sensors mēra attālumu no sensora līdz rokai.
Izmērītais attālums tiek izmantots Arduino programmā, lai aprēķinātu un iestatītu atbilstošu piezīmes numura vērtību, kas jāiepako MIDI piezīmes ziņojumā un jānosūta MIDI saskarnē. MIDI izvades saskarne izmanto 74HC14 sešstūra pārveidotāju un ir diezgan standarta ķēde. MIDI komunikācijā tiek izmantots seriāls1, atkļūdošanai tiek izmantots standarta seriālais ports.
Kad roka tiek virzīta taisni uz augšu un prom no gaismas staru kūļa, augšējais gaismas sensors atkal uztver gaismas staru, un MIDI piezīmes izslēgšanas ziņojums tiek iesaiņots un pārraidīts uz MIDI izvadi.
Spēles laukums starp sensoriem ir aptuveni 63 cm, un MIDI kontroliera kopējais garums ir aptuveni 75 cm.
2. solis: informācija par gaismas sensoriem
Abi gaismas sensori ir uzstādīti viens virs otra, veidojot dubultu sensoru sistēmu. Tas novērš nepatiesu iedarbināšanu, ja programmatūrā tiek izmantots pareizi. Katrs gaismas sensors sastāv no foto rezistora moduļa, kas iebūvēts 16 mm standarta elektriskā caurulē. Katrā mēģenē ar zāģi tiek izveidots slots, un slotā var iespiest fotorezistora PCB. Sensori ir salīmēti kopā ar līmlenti, kā arī piestiprināti pie koka gabala viena gala. Gaisma nedrīkst piekļūt sensoriem no aizmugures. Gaismas sensoros ir iebūvēti 10k pievilkšanas rezistori.
3. darbība: informācija par ultraskaņas sensoru HC-SR04
Īpaši skaņas sensors HC-SR04 ir fiksēts MIDI kontroliera otrā galā. Arī šeit ir ievietots spilgts lukturītis, tas rada nepieciešamo gaismas staru.
4. solis: Aduino ķēde
MIDI izejas ķēde būtībā ir standarta 74HC14 sešstūra pārveidotājs un daži rezistori, kā arī 5 kontaktu DIN savienotājs. Shēma 74HC14 virza MIDI izvadi un vienlaikus nodrošina zināmu Arduino plates aizsardzības līdzekli pret "reālo pasauli", kas savienota ar MIDI izeju. Papildu praktiska funkcija ir MIDI aktivitātes gaismas diode, kas signalizē, kad dati tiek nosūtīti.
Esmu izmantojis pareizu PCB prototipu savai aparatūrai, jo man bija daudz problēmu ar sliktiem savienojumiem uz maizes dēļa. Shēma ir veidota Fritzing, augstas izšķirtspējas pdf kopiju var lejupielādēt, nospiežot zemāk esošo saiti. Es labprātāk izmantoju pareizu shēmu programmu, piemēram, Kicad, es domāju, ka Fritzing ir ierobežots visam, izņemot vienkāršākos eksperimentus.
Izmantotie materiāli:
1 gab Arduino MEGA 2560
2 gab. Foto rezistors (LDR) ar iebūvētu pacelšanas rezistoru (no 37 sensoru komplekta)
1 gab. Ultraskaņas sensors HC-SR04
1 gab 74HC14 sešstūra apgriezts Schmitt sprūda
2 gab rezistors 220 omi 0,25W
1 gab rezistors 1k omi 0,25W
1 gab LED zema strāva 2mA
1 gab. 100nF keramikas kondensators (barošanas avota atvienošanai tieši pie 74HC14 strāvas tapām)
Maizes dēlis vai PCB prototips
2 gab. 16 mm elektriskā caurule, garums 65 mm
1 gab koka, garums 75cm
Santehnikas līmlente
Vadi
5. darbība: I/O saraksts
6. solis: Aduino kods
Skice test_Midi6 izmanto NewPing bibliotēku, kas jāiekļauj Arduino programmēšanas vidē, lai izmantotu ultraskaņas sensoru HC-SC04. Skice tiek komentēta dāņu valodā, atvainojiet. Lai skice būtu labi strukturēta, atsevišķas funkcijas tiek veidotas dažādām skices loģikas daļām, un lielākoties izvairās no globālajiem mainīgajiem. Programmu plūsma ir vizualizēta MIDI kontroliera blokshēmā pdf.
// 15.05.2017 versija: test_Midi6
// Søren Østergaard Petesen // Arduino MEGA 2560 // Dette program udgør en simpel MIDI controller som kan styre and ekstern MIDI enhed, f.eks en softsynt på en PC. // MIDI controlleren kan sende toneanslag (piezīme par kommando) hhv. (piezīme off kommando) for okt okt C-C, C dur skala. // Der spilles med en "karate hånd" på et brædt // hvor sensorerne er monteret. MIDI kommandoerne trigges af en dobbelt LDR sensor, da der skal laves en sikker // detektering af både når hånden lander på brættet (piezīme), samt når hånden fjernes igen (piezīme izslēgta). // MIDI kommandoerne "note on" og "note off" består hver af 3 bytes som sendes på serial1 porten // vha det i hardware opbyggede MIDI interface. // Tonehødden bestemmes vha ultralydssensor HC-SR04 #include // bibliotek til den anvendte ultralydssensor HC-SR04 #define TRIGGER_PIN 3 // Arduino pin to trigger pin ultraskaņas sensors #define ECHO_PIN 2 // Arduino pin to echo pin på ultrasonic sensor # definēt MAX_DISTANCE 100 // Maksimālais pacelšanās laiks Ping #define Median 5 // Antal målinger der beregnes gennemsnit af for at få en sikker afstandsbestemmelse NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing objekta izveide. int Senspin1 = 53; // Underste LDR1 føler int Senspin2 = 52; // Øverste LDR2 føler baits MIDIByte2; // Variabel deklarācija MIDIByte2 bool klar_note_on = 1; // Variabel deklaration for klar_note_on, styrer afsendelse af note on kommando. Første kommando er en note on kommando bool klar_note_off = 0; // Variabel deklaration for klar_note_off, styrer afsendelse af note off kommando void setup () {pinMode (Senspin1, INPUT); // sæt sensoru ievades pinMode (Senspin2, INPUT); // sæt sensoru ievade Serial1.begin (31250); // Serial1 bruges til MIDI communication: 31250 bit/sekundt Serial.begin (9600); // sērijas monitors, līdz testam} void loop () {bool Sensor1 = digitalRead (Senspin1); // Læs LDR1 - apakšā LDR bool Sensor2 = digitalRead (Senspin2); // læs LDR2 - øverste LDR if (Sensor1 && klar_note_on) // hvis LDR1 aktiveret og klar til note on {byte Note_Byte = Hent_tonehojde (); // Hent tone højde via ultralyds sensors MIDIByte2 = Hent_MidiByte2 (Note_Byte); // Hent MidByte2, MIDI piezīmes numurs, 0xFF er ārpus diapazona Send_Note_On (MIDIByte2); // kald Send_Note_On funktion klar_note_on = 0; // der skal kun sendes en note on kommando klar_note_off = 1; // næste kommando er note off} if (Sensor2 &&! Sensor1 && klar_note_off) // Hvis der skal nosūta piezīmi off kommando gøres det her.. {Send_Note_Off (MIDIByte2); // send note off kommando klar_note_off = 0; // der skal kun sendes en note off kommando} if (! Sensor1 &&! Sensor2) // her gøres klar til ny note on kommando, hånd er væk fra brædt {klar_note_on = 1; }} baits Hent_MidiByte2 (baits NoteByte) {// Denne funktion returnerer MIDI piezīmes numurs, valgt ud fra NoteByte baits MIDIB2; switch (NoteByte) // viņas definīcijas hvilken værdi MIDIByte2 skal have ud fra værdien af Note_Byte {case 0: {MIDIB2 = 0x3C; // tonen 'C'} break; 1. gadījums: {MIDIB2 = 0x3E; // tonen 'D'} break; 2. gadījums: {MIDIB2 = 0x40; // tonen 'E'} break; 3. gadījums: {MIDIB2 = 0x41; // tonen 'F'} break; 4. gadījums: {MIDIB2 = 0x43; // tonen 'G'} break; 5. gadījums: {MIDIB2 = 0x45; // tonen 'A'} break; 6. gadījums: {MIDIB2 = 0x47; // tonen 'B'} break; 7. gadījums: {MIDIB2 = 0x48; // tonen 'C'} break; noklusējums: {MIDIB2 = 0xFF; // ārpus diapazona}} atgriezt MIDIB2; // atgriešanās MIDI piezīmes numurs} baits Hent_tonehojde () {// Denne funktion henter resultatet af ultralydsmålingen unsigned int Tid_uS; // målt tid i uS baits Afstand; // beregnet afstand i cm baitu rezultāts; // inddeling af spille område const float Omregningsfaktor = 58,3; // 2*(1/343 m/s)/100 = 58, 3uS/cm, der ganges med 2 da tiden er summen af tiden frem og tilbage. Tid_uS = sonārs.ping_mediāns (mediāna); // Send ping, få tid retur i uS, gennemsint af Median målinger Afstand = Tid_uS / Omregningsfaktor; // Omregn tid til afstand i cm (0 = ārpus attāluma diapazons) resultat = Afstand / 8; // Beregn resultat return resultat; // Atgriešanās rezultāts} void Send_Note_On (baitu toneris) {// Denne funktion sender en note on kommando på MIDI interfacet const byte kommando = 0x90; // Piezīme par MIDI kanal 1 const baitu tilpumu = 0xFF; // tilpums / ātrums = 127 Sērijas1.rakstīt (kommando); // sūtīt piezīmi par kommando Serial1.write (tonenr); // sūtīt signālu nummer Serial1.write (volumen); // sūtīt apjomu (ātrums)} void Send_Note_Off (baitu toners) {// Denne funktion sender note off kommando på MIDI interfacet const byte kommando = 0x80; // Piezīme izslēgta, izmantojot MIDI kanal 1 const baitu tilpumu = 0xFF; // tilpums / ātrums = 127 Sērijas1.rakstīt (kommando); // send note off kommando Serial1.write (tonenr); // sūtīt signālu nummer Serial1.write (volumen); // nosūtīt tilpumu (ātrumu)}
7. solis: MIDI komunikācijas pamati
MIDI (mūzikas instrumentu digitālais interfeiss) ir universāls sērijas sakaru protokols elektronisko mūzikas instrumentu un citu ierīču saskarnei. Tiek izmantota seriālā komunikācija (31250 biti/s, pārraides vide ir strāvas cilpa, opto-izolēta uztvērēja galā. Tiek izmantoti 5 kontaktu DIN savienotāji. Vienā fiziskā MIDI savienojumā ir iespējami 16 loģiski sakaru kanāli. Daudzas komandas ir definētas MIDI standarta, es šajā projektā izmantoju divas komandas, šīs komandas sastāv no 3 baitiem:
a) Piezīme par komandu:
1. baitu sūtīt = 0x90, kas nozīmē piezīmi par komandu MIDI 1. kanālā
2. baitu sūtīt = 0xZZ ZZ ir piezīmes numurs, es izmantoju diapazonu no 0x3C līdz 0x48
3. baitu sūtīšana = 0xFF FF = 255, kas nozīmē maksimālo skaļumu, diapazons no 0x00 līdz 0xFF
b) Piezīme Izslēgšanas komanda: 1. baitu sūtīt = 0x80, kas nozīmē piezīmi izslēgt komandu MIDI 1. kanālā
2. baitu sūtīt = 0xZZ ZZ ir piezīmes numurs, es izmantoju diapazonu no 0x3C līdz 0x48
3. baitu sūtīšana = 0xFF FF = 255, kas nozīmē maksimālo skaļumu, diapazons no 0x00 līdz 0xFF
Ieteicams:
Bezkontakta midi kontrolieris: 6 soļi (ar attēliem)
Bezkontakta Midi kontrolieris: Mūsdienās ir tendence padarīt lietas bezkontakta. Es izveidoju vienkāršu midi kontrolieri, izmantojot Arduino Pro micro un dažus IR tuvuma detektoru paneļus, kuriem ir iebūvēts salīdzinājums, tam vajadzētu būt pieejamam diezgan viegli un lēti. Šis projekts ir
MesoTune - magnētiskais MIDI kontrolieris: 16 soļi (ar attēliem)
MesoTune - magnētiskais MIDI kontrolieris: Piezīme. Es vēlos šo projektu novērtēt Aleksam Bluhme. Tāpēc, lūdzu, pārbaudiet to šeit: https://vimeo.com/171612791. Vai esat mūzikas komponists, melodists, simfonists vai melodists, kuram patīk radīt savus ritmus, bet ir garlaicīgi ar visiem šiem skaņdarbiem
Microbit Midi CC bezvadu kontrolieris: 5 soļi (ar attēliem)
Microbit Midi CC bezvadu kontrolieris: šajā rokasgrāmatā mēs izveidosim bezvadu midi CC kontrolieri, kas ļaus jums izmantot savu Microbit kā midi kontrolieri un savienot to ar iecienītāko mūzikas producēšanas programmatūru. Kas ir Midi CC? Bieži saīsināts CC, bet pareizais termins ir "kontrole
YABC - vēl viens Blynk kontrolieris - IoT mākoņa temperatūras un mitruma kontrolieris, ESP8266: 4 soļi
YABC - Vēl viens Blynk kontrolieris - IoT mākoņa temperatūras un mitruma kontrolieris, ESP8266: Sveiki, Makers, es nesen sāku audzēt sēnes mājās, austeru sēnes, bet man jau ir 3x no šiem kontrolieriem mājās, lai raudzētu temperatūras kontroli savai mājas brūvei, sieva arī tagad dara šo Kombucha lietu un kā siltuma termostatu
MIDI 5V LED sloksnes gaismas kontrolieris Spielatron vai citam MIDI Synth: 7 soļi (ar attēliem)
MIDI 5V LED sloksnes gaismas kontrolieris Spielatron vai citam MIDI Synth: Šis kontrolieris mirgo trīs krāsu LED sloksnes gaismā par 50mS par piezīmi. Zils G5 līdz D#6, sarkans E6 līdz B6 un zaļš C7 līdz G7. Kontrolieris ir ALSA MIDI ierīce, tāpēc MIDI programmatūra var izvadīt gaismas diodes vienlaikus ar MIDI sintezatora ierīci