Skocz do zawartości

Mikser MIDI na Arduino Pro Micro


Daniil

Pomocna odpowiedź

Urządzenie MIDI na Arduino Pro Micro

Czas na zrobienie fajnego urządzenia. W tym artykule postaram się zadowolić ludzi związanych z tworzeniem muzyki. Stwórzmy mikser Midi i podłączymy go do programu dla DJ-ów (Traktor Pro 2). Urządzenie będzie miało 8 obrotowych potencjometrów, które pozwalają kontrolować głośność, niskie, średnie i wysokie częstotliwości korektora oraz 2 przyciski odtwarzania / pauzy.

image4.thumb.jpg.4bee6afd4ba93c5c327e4a50789a8092.jpg

Komponenty

Podstawą naszego projektu będzie płyta arduino pro micro (lub arduino leonardo). Będziemy kontrolować potencjometry obrotowe. Na nich nakładamy kolorowe czapki. Będziesz potrzebował dwóch przycisków i dużego kondensatora przy 4700 UF (od 6V). Wpichnijmy to wszystko do pudełka.

Elektroniczny obwód i montaż.

Najpierw przygotujmy pudełko. Konieczne jest przecięcie 8 otworów o średnicy 6 milimetrów, po dwa otwory po 12 milimetrów i otwór na tylną ściankę.

Kolejny etap to montowanie potencjometrów i przycisków. Włóż część i dokręć nakrętkę.
image3.thumb.png.e49fcd093e0c08e35bff98230e1c94a9.png

Nadszedł czas na lutowanie komponentów razem. Zrobiłem wszystko na zielonej płycie prototypowej. Możesz to zrobić na bredboardzie lub wytrawić / zamówić płytkę. Nie ignoruj kondensatora, bez niego urządzenie nie zadziała!

IMG_2451.JPG.58f16563615646922aed2ee478ce9b8c.JPG

Szkic

Algorytm programu jest prosty. Przeszukujemy potencjometry i przyciski, wysyłamy dane do komputera.

#include <frequencyToNote.h>
#include <MIDIUSB.h>
#include <pitchToFrequency.h>
#include <pitchToNote.h>

#define n_pots 8
int val;
int last_val[n_pots]={0,0,0,0,0,0,0,0};
int pot_pins[n_pots]={0,1,2,3,6,7,8,9};

#define btn0pin 2
#define btn1pin 3

void setup() {
 Serial.begin(9600);
 pinMode(btn0pin, INPUT);
 pinMode(btn1pin, INPUT);
}

void loop() {
 for (int i =0; i<n_pots;i++){
   val = (int)analogRead(pot_pins[i])/8;
   if (val != last_val[i]) {
     last_val[i] = val;
     controlChange(0, i, val);
   }
 }

 if (digitalRead(btn0pin)){
   controlChange(0,9,1);
   while(digitalRead(btn0pin)){}
 }


 if (digitalRead(btn1pin)){
   controlChange(0,10,1);
   while(digitalRead(btn1pin)){}
 }

 delay(30);
}



void controlChange(byte channel, byte control, byte value) {
 midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
 MidiUSB.sendMIDI(event);
 MidiUSB.flush();
}

Można zrobic 3d obudowę do miksera. Tak wygląda moja , ale jej plik źródłowy tu nie zostawię, bo jest dużo błędów. Kształt jest fajny, ale techniczna strona nie.

IMG_2448.JPG.f8a93ea965bfa07e7ecba4b0bedcf020.JPG

Użycie: dla przykładu użycia wziąłem traktor pro 2. Otwórz go, a następnie znajdź w nim "controller manager". Tutaj wiążemy potencjometry z dźwigniami interfejsu.

image6.thumb.jpg.cab8a4602a9c7053db692042a02df336.jpg

Naciśnij “Add device” - “Generic MIDI”. Wybierz wejscie  - “Arduino Leonardo”.

image1.thumb.jpg.0ffe4653496a91973b39294522d2c690.jpg

Teraz musisz określić wszystkie elementy sterujące. Istnieją dwa kanały, z których każdy ma: głośność, wysokie, średnie i niskie częstotliwości oraz przycisk "Play/Pause".

Kliknij "Add in" i znajdź Volume / High / Mid / Low. Wybierz kanał (A lub B). Kliknij “learn”. Przekręć potencjometr. Kliknij “learn”. Zrób to z wszystkimi elementami.

image7.thumb.jpg.00f5d1d6360f0cc7ea03980221b4260e.jpgimage5.thumb.jpg.970f91a5b3a6bae374ee44e8d3151a86.jpg

Dodajemy przycisk “Play/Pause”. Dodajcie go, analogicznie potencjometru. Zmienimy tryb pracy przyciska do “Toggle”.

image2.thumb.jpg.d1fb6189603ad1768fc5d425d6b498fd.jpg

I filmik demonstracja (niestety słowa rosyjskie, ale pracę można zobaczyć):

Będę czekał na komentarze!

  • Lubię! 1
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Właśnie zaakceptowałem Twój opis, możesz go teraz zgłosić do akcji rabatowej umieszczając link w temacie zbiorczym. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 🙂

Dla formalności potwierdzam, że zweryfikowaliśmy temat i @Daniil jest autorem tego projektu 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.