Სარჩევი:

ძირითადი Arduino MIDI კონტროლერი: 5 ნაბიჯი
ძირითადი Arduino MIDI კონტროლერი: 5 ნაბიჯი

ვიდეო: ძირითადი Arduino MIDI კონტროლერი: 5 ნაბიჯი

ვიდეო: ძირითადი Arduino MIDI კონტროლერი: 5 ნაბიჯი
ვიდეო: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, ნოემბერი
Anonim
ძირითადი Arduino MIDI კონტროლერი
ძირითადი Arduino MIDI კონტროლერი

შესავალი:

მე ახალი ვარ არდუინოსთან მუშაობისას, მაგრამ ვიმედოვნებ, რომ გავაფართოვებ ჩემს ცოდნას სხვების სწავლებით და გამოხმაურების მიღებით. ეს არის ძალიან ძირითადი MIDI კონტროლერი, რომელსაც აქვს 4 ღილაკი და პოტენომეტრი. ამ პროექტის მონახაზი ასე გამოიყურება:

1. ააშენეთ პურის დაფა

2. ატვირთეთ ესკიზი არდუინოში

3. გაიგეთ თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟი (loopbe1)

4. მარშრუტი თქვენი MIDI DAW (Ableton)

მარაგები

1 x Arduino Mega 2560

1 x პურის დაფა

1 x USB კაბელი

1 x პოტენომეტრი

4 x ტაქტიკური ღილაკები

4 x 120 Ohm რეზისტორები

14 x jumper კაბელები breadboard

ნაბიჯი 1: შექმენით პურის დაფა

ააშენეთ პურის დაფა
ააშენეთ პურის დაფა
ააშენეთ პურის დაფა
ააშენეთ პურის დაფა

შეაერთეთ თქვენი დაფა ისე, რომ ყველა კომპონენტი ემთხვეოდეს სურათს 1 ზემოთ. თითოეული ღილაკი უნდა გამოიყურებოდეს იგივე, რაც სურათზე 2. ღილაკი არის 2, 3, 4 და 5 არდუინოზე და პოტენომეტრის შუა ბუდე უკავშირდება AN040 შესასვლელს A0.

ნაბიჯი 2: ესკიზის ატვირთვა

ესკიზის ატვირთვა
ესკიზის ატვირთვა

დააკოპირეთ და ჩასვით ქვემოთ კოდი Arduino IDE– ში. აირჩიეთ სწორი დაფა "ინსტრუმენტების" ქვეშ და ატვირთეთ ესკიზი არდუინოში.

ბაიტი noteON = 144; // შენიშვნა commandbyte შენიშვნა; // შენახვა მიმდინარე სათამაშო ნოტის int ღილაკზე PIN1 = 2; int ღილაკი pin2 = 3; int ღილაკი Pin3 = 4; int ღილაკი Pin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage მიმდინარე ღილაკის მდგომარეობისთვის boolean lastState = LOW; // ბოლო ღილაკის მდგომარეობის შენახვა void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // ამჯერად ჩვენ დავაყენებთ პინს, როგორც INPUT Serial.begin (9600); // სერიული კავშირის ინიციალიზაციას} void loop () {int PotVal = analogRead (potPin); ბაიტის სიჩქარე = რუკა (PotVal, 0, 1023, 0, 127); currentState = digitalRead (ღილაკი პინი 1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, სიჩქარე); // ჩართეთ შენიშვნა 60 ჩართეთ 127 სიჩქარის დაყოვნებით (200); // ღილაკის დუნეზონის უხეში ფორმა} სხვაგან თუ (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // გამორთეთ შენიშვნა 60 შეფერხება (2); // ღილაკის დემონსტრირების უხეში ფორმა} lastState = currentState; currentState = digitalRead (ღილაკი Pin2); if (currentState == HIGH && lastState == LOW) {// თუ ღილაკზე ახლახან დაჭერილია MIDImessage (noteON, 61, სიჩქარე); // ჩართეთ შენიშვნა 60 127 სიჩქარის დაყოვნებით (200); // ღილაკის უხეში ფორმა debouncing} სხვა შემთხვევაში currentState = digitalRead (ღილაკი Pin3); if (currentState == HIGH && lastState == LOW) {// თუ ღილაკი ახლახან დაჭერილია MIDImessage (noteON, 62, სიჩქარე); // ჩართეთ შენიშვნა 60 127 სიჩქარის დაყოვნებით (200); // ღილაკის უხეში ფორმა debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // გამორთეთ შენიშვნა 60 გამორთვა დაგვიანებით (2); // ღილაკის დუნოსის უხეში ფორმა} lastState = currentState; currentState = digitalRead (ღილაკი Pin4); if (currentState == HIGH && lastState == LOW) {// თუ ღილაკი ახლახან დაჭერილია MIDImessage (noteON, 63, სიჩქარე); // ჩართეთ შენიშვნა 60 127 სიჩქარის დაყოვნებით (200); // ღილაკის უხეში ფორმა debouncing} სხვა შემთხვევაში } // გაგზავნეთ MIDI შეტყობინება void MIDImessage (ბაიტის ბრძანება, ბაიტი მონაცემები 1, ბაიტი მონაცემები 2) {Serial.write (ბრძანება); Serial.write (data1); Serial.write (data2); }

მე ჯერ კიდევ ახალი ვარ ზოგადად კოდის წერაში ….. ვისაც ცოტა მეტი გამოცდილება აქვს, ალბათ გაასუფთავებენ ამას …

ნაბიჯი 3: გაიგეთ თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟები

თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟების გაგება
თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟების გაგება
თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟების გაგება
თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟების გაგება
თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟების გაგება
თმის ვარცხნილობის MIDI და შიდა MIDI მარყუჟების გაგება

Arduino– ს სჭირდება სერიული ხიდის გავლა, როგორიც არის Hairless MIDI, შემდეგ შიდა MIDI მარყუჟის მეშვეობით, როგორიცაა loopbe1 (ან IAC ავტობუსი Mac– ისთვის).

შენიშვნა: თქვენ არ შეგიძლიათ ატვირთოთ ესკიზი არდუინოში, სანამ ის დაკავშირებულია თმის ვარცხნილობის MIDI სერიულ ხიდთან.

შეარჩიეთ თქვენი Arduino თმის გარეშე MIDI სერიულ პორტში და loopbe1 ან IAC ავტობუსი MIDI– ში.

შენიშვნა: დარწმუნდით, რომ მუნჯი არ არის ჩართული loopbe1– ის გამოყენებისას.

ნაბიჯი 4: დაუკავშირდით თქვენს DAW- ს

დაკავშირება თქვენს DAW– თან
დაკავშირება თქვენს DAW– თან

თუ თქვენ იღებთ სიგნალს თმის ვარცხნილობის MIDI აპლიკაციაში, როდესაც დააჭერთ ღილაკს პურის დაფაზე (შუქი აანთებს) თქვენ უნდა შეეძლოთ MIDI მონაცემების გაგზავნა DAW– ში. მე გამოვიყენე აბლეტონი, მაგრამ ნებისმიერი DAW უნდა მუშაობდეს. დარწმუნდით, რომ თქვენი შიდა MIDI მარყუჟი (loopbe1) ჩართულია თქვენს DAW პარამეტრებში (აბლეტონში გსურთ, რომ „ტრეკი“იყოს ჩართული). შემდეგი, შეარჩიეთ MIDI მარყუჟში თქვენი ერთ – ერთი ჩანაწერი, როგორც ეს მოცემულია ზემოთ მოცემულ სურათზე.

ნაბიჯი 5: ითამაშე

Image
Image

ღილაკები ახლა იმუშავებს, როგორც ნებისმიერი სხვა MIDI კონტროლერი! პოტენომეტრი ცვლის DAW– ზე გაგზავნილი ჩანაწერების სიჩქარეს. ზემოთ (ძალიან ბნელი…) ვიდეო გვიჩვენებს როიალის ხმას მოქმედებაში!

გირჩევთ: