Spisu treści:

Kolejny MIDI to CV Box: 7 kroków (ze zdjęciami)
Kolejny MIDI to CV Box: 7 kroków (ze zdjęciami)

Wideo: Kolejny MIDI to CV Box: 7 kroków (ze zdjęciami)

Wideo: Kolejny MIDI to CV Box: 7 kroków (ze zdjęciami)
Wideo: Zapomnij o presetach! Uwolnij kreatywność! 2024, Lipiec
Anonim
Kolejny MIDI do CV Box
Kolejny MIDI do CV Box

Kolejny box MIDI to CV to projekt, który opracowałem, gdy Korg MS10 zapukał do moich drzwi i odbył się w moim studio. Ponieważ moja konfiguracja w dużym stopniu odnosi się do MIDI, aby zautomatyzować i zsynchronizować wszystkie instrumenty, kiedy kupiłem MS10, pierwszym problemem, z którym musiałem się zmierzyć, było zaimplementowanie takiej kontroli.

Korg MS20/10 nie są najłatwiejszymi syntezatorami do implementacji MIDI, ponieważ: przede wszystkim opierają się na kontroli Hz/V (liniowa korelacja między napięciem sterującym a częstotliwością nuty), zamiast oct/V (1 V na oktawę); po drugie, aby wyzwolić nutę, należy wysłać ujemny sygnał bramki i zewrzeć wejście do masy (S-Trig), a nie sygnał +5 V (V-trig).

Istnieją obecnie różne komercyjne rozwiązania do sterowania takimi instrumentami (np. Arturia Beatstep Pro, Korg SQ-1, Kenton Solo), ale ja jestem tanim draniem i nawet 100 euro to za dużo jak na „niebrzmiące” urządzenie:).

Oto jesteśmy: pozwól, że pokażę ci, jak zbudować niskobudżetową skrzynkę MIDI do CV, aby kontrolować/automatyzować wysokość tonu, bramkę, prędkość i częstotliwość odcięcia syntezatora przed-MIDI za pomocą zewnętrznego kontrolera MIDI (klawiatura, DAW, sekwencer lub cokolwiek innego).

"A co z nowym MS20 mini?"

Jak prawie każdy wie, nowy MS20 jest w rzeczywistości gotowy na MIDI: IN z 5-biegunowym złączem MIDI oraz IN/OUT ze złączem USB.

"Więc, jeśli mam MS20 mini, ta rzecz jest bezużyteczna!"

Więc nie. MS20 mini rozpoznaje tylko wiadomości włączania/wyłączania nut, a klawiatura nie jest wrażliwa na prędkość. Nie ma sposobu na pokonanie tego z klawiaturą MS10/20 vintage lub mini, ale z midi boxem i klawiaturą wrażliwą na prędkość jesteś złoty. Ponadto, za pomocą skrzynki MIDI możesz zautomatyzować odcięcie filtra (lub dowolny inny parametr sterowany napięciem) lub zmodulować go przez przychodzącą nutę MIDI na prędkość. Ponownie, jedynym kanałem MIDI, na który odpowiada MS20 mini, jest kanał 1. Dzięki temu urządzeniu możesz również przekroczyć ten limit.

„Co jeśli mam syntezator Oct/V?”

Nie ma problemu! Napisany przeze mnie kod jest kompatybilny z syntezatorami Oct/V (nieprzetestowany, ale jestem przekonany, że zadziała od razu po wyjęciu z pudełka;)).

Krok 1: !! Uwaga przestrogi - Zastrzeżenie

Twój sprzęt jest bardzo cenny i nie powinien być używany do przeprowadzania testów.

Zabawa z elektrycznością może poważnie uszkodzić twój sprzęt lub wyrządzić sobie krzywdę.

Nie mogę być pociągnięty do odpowiedzialności za szkody w twoim sprzęcie / sprzęcie, a nawet ty, pochodzące z jakiegokolwiek oprogramowania, schematów lub informacji lub linków, które zgłosiłem w tej instrukcji.

Zostałeś ostrzeżony!

Krok 2: Inżynieria sprzętu

Arduino przydaje się przy takich projektach. Istnienie dużej społeczności i bardzo dobre biblioteki, które obejmują prawie każde wspólne zadanie, sprawiają, że jest to właściwy wybór. Tutaj płytka zostanie zaprogramowana tak, że będzie odczytywała przychodzące dane MIDI, a następnie wysyłała odpowiednie napięcia do napędu:

- Pitch, poprzez konwersję wyjścia PWM na napięcie analogowe do sterowania VCO przez przetwornik cyfrowo-analogowy (DAC)

- Prędkość, poprzez filtrowanie wyjścia PWM do sterowania VCA za pomocą prostego filtra RC

- Częstotliwość odcięcia filtra, poprzez filtrowanie wyjścia pwm w celu sterowania VCF za pomocą prostego filtra RC;

- Bramka, bezpośrednio z wyjścia cyfrowego w przypadku V-trig (umieść 1Kohm szeregowo z wyjściem, aby zmniejszyć pobór prądu) lub przez prosty przełącznik tranzystorowy pnp z wyjścia cyfrowego (patrz schemat dołączony do kroku schematu).

Arduino nie jest w stanie wyprowadzać bezpośrednio stałych napięć, ale impulsy 0/+5 V z różnymi okresami (PWM). Potrzebujemy przetworników cyfrowo-analogowych (DAC) do pożytku. Filtry RC to najłatwiejszy przetwornik cyfrowo-analogowy, jaki przychodzi mi do głowy. Filtr RC jest wystarczająco dobry dla wzmacniacza i filtra sterowanego napięciem (VCA i VCF). Filtry RC są dostosowane do uzyskania częstotliwości odcięcia < 20 Hz (najniższa słyszalna częstotliwość).

Zrobiłem kilka testów z niespolaryzowanymi kondensatorami o małej pojemności i zakończyłem z wartością pojemności 0,1 uF, która najlepiej pasuje. Testowany dobrze na MS20 MKII.

Niestety, nie możemy polegać na filtrze RC do sterowania oscylatorem sterowanym napięciem (VCO), ponieważ nie byłby on wystarczająco dokładny (w skali Hz/V, na dole dwa półtony adiacend różnią się o mniej niż 0,02 V; w V /okt dwa adiacent półtony różnią się dla 0,083 V); użyjemy do tego IC DAC (MPC4725).

Znane ograniczenia

Ograniczając napięcie napędu do 5 V (napięcie wyjściowe Arduino), pełny zakres od 0 do 5 V obejmuje prędkość; odcięcie jest w połowie zakryte (-5V do +5V); zakres VCO jest częściowo pokryty, ponieważ w Hz/V wymagane byłoby napięcie 8 V, aby osiągnąć 440 Hz A4. Przy limicie wyjściowym 5V możemy ustawić oscylator do częstotliwości D4 w Hz/V.

Krok 3: Lista komponentów

Lista komponentów
Lista komponentów
Lista komponentów
Lista komponentów
Lista komponentów
Lista komponentów

Potrzebujesz:

1X Arduino UNO (lub nano)

1X płyta DAC MPC4725

Złącza mono 4X 1/8" lub 1/4"

1X złącze MIDI

1X transoptor 6N138

1X dioda 1N4148

Rezystor 1X 220 omów 1/4 W

Rezystor 1X 470 omów 1/4 W

Rezystor 1X 10K ohm 1/4 W

Rezystor 4X 1K ohm 1/4 W

Kondensator 2X 0,1 uF

1X tranzystor pnp BC547 (w przypadku S-trig)

1X pudełko z ABS (co najmniej 55 x 70 x 100 mm)

…i oczywiście płytka stykowa lub perforowana, lutownica, drut lutowniczy i kable (2 metry 28 AWG powinny wystarczyć).

Zauważ, że na powyższych zdjęciach mój prototyp montuje nasadki elektrolityczne 100 uF, ale są one zbyt wolne ze względu na czas ładowania pojemności. Pojemność 0,1uF to właściwy wybór.

Do zasilania mojego arduino użyłem dodatkowego złącza; nie jest konieczne bezpośrednie wyciskanie soku z mikrokontrolera przez wbudowane złącze mini USB.

Krok 4: Połączenia/schematy

Połączenia/schematy
Połączenia/schematy
Połączenia/schematy
Połączenia/schematy
Połączenia/schematy
Połączenia/schematy

Wejście MIDI

Układ MIDI IN jest prosty i dobrze opisany w sieci. Weźmy na przykład TĘ doskonałą instrukcję dotyczącą MIDI i Arduino autorstwa Amandy Gassaei. I tak zrobiłem n-ty schemat w tej sprawie.

Zauważ, że dodałem przełącznik w schemacie MIDI IN (przełącznik 1): jest to konieczne podczas przesyłania nowego szkicu do Arduino, ponieważ opto zakłóca linię RX nawet bez przychodzących komunikatów midi. Musisz otworzyć przełącznik przed przesłaniem szkicu, w przeciwnym razie IDE nie załaduje nowego szkicu.

Ewentualnie możesz zmodyfikować szkic, aby korzystać z komunikacji szeregowej oprogramowania.

DAC, filtr RC, syntezator

Połączenie dla filtrów DAC, RC i Synth (pitch, bramka i prędkość) pokazano na schemacie na górze. Wziąłem jako punkt odniesienia panel krosowy Korg MS20, ale przetestowałem wszystko również na MS10. Bezpośrednie połączenie punktu zmiany prędkości CV z punktem zmiany „początkowego wzmocnienia” VCA nie ma żadnego efektu (muszę to dalej dokopać), ale jeśli połączysz go z punktem zmiany „Total” i zwiększysz całkowitą liczbę zewnętrznych potencjometrów (MG/T. EXT), usłyszysz ładne zmiany tonów jako funkcję prędkości nuty.

Moje schematy (i mój prototyp też) nie używają rezystora ograniczającego prąd na wyjściu DAC, ale zawsze dobrym pomysłem jest umieszczenie go, aby zapewnić długą żywotność obwodów. Wystarczy rezystor 220 omów.

Zauważ, że na schematach powyżej 100 uF podano elektrolityczne nasadki, ale są one zbyt wolne ze względu na czas ładowania pojemności. Niespolaryzowane nasadki 0,1uF to właściwy wybór.

Brama wyjściowa

W przypadku, gdy zamierzasz zsekwencjonować syntezator kompatybilny z sygnałami V-Trig (wyzwalacz napięciowy), wystarczy rezystor szeregowy 1 kΩ w celu zmniejszenia poboru prądu; w przypadku syntezatora S-Trig (wyzwalacz przełącznika) można użyć prostego obwodu przełącznika PNP (patrz załączony schemat).

Krok 5: Oprogramowanie

Oprogramowanie
Oprogramowanie

Starałam się, aby szkic był jak najbardziej przejrzysty i „czytelny”.

Pracowałem na prostym arkuszu kalkulacyjnym, który znalazłem TUTAJ, aby uzyskać krzywą napięcia Vs Note# i użyć bezpośrednio równania w mikrokontrolerze. Równanie pokazano na wykresie u góry. Użyłem C2 jako notatki referencyjnej, aby uzyskać zależność napięcia Vs zgodną z Arp / Korg (C0 - 0,25 V, C1 - 0,5 V, C2 - 1 V, C3 - 2 V, C4 - 4 V, C5 - 8 V i tak dalej).

Musiałem zdefiniować jakąś zmienną do zabawy, aby uzyskać dobre dostrojenie… nie spiesz się, aby znaleźć prawidłowe wartości. Niezbędny jest tuner.

Zamierzamy zwiększyć częstotliwość pwm Timera/Licznika, aby zredukować tętnienie napięcia wyjściowego (tak proste jak linia kodu).

Aby kod był responsywny na przychodzące bajty, kod w dużym stopniu polega na wywołaniach zwrotnych funkcji.

Potrzebujesz bibliotek Sparkfun "Adafruit_MCP4725.h" i Forty Seven Effects/Francois Best "MIDI.h" do skompilowania! (Wielkie podziękowania dla tych osób: bez ich wysiłków ten projekt nigdy by nie został zrealizowany!).

Zakładam, że masz gotowe Arduino IDE na swoim komputerze i wiesz, jak załadować szkic na swoją płytkę Arduino.

W rzeczywistości nie jestem koderem, więc jest bardzo prawdopodobne, że szkic można by napisać lepiej. Jestem otwarta na sugestie (zawsze czegoś się uczę patrząc na kod kodera;))

Dodatkowe uwagi są zapisane w poniższym kodzie. Zainstaluj dwie biblioteki, otwórz załączony kod w swoim IDE, podłącz swoją płytkę, wybierz typ płytki i wgraj.

Krok 6: Rozwiązywanie problemów

Nawet jeśli projekt jest na niskim poziomie, jest mnóstwo rzeczy, które mogą pójść nie tak. Jeśli masz problemy podczas próby utworzenia własnego pola MIDI to CV, wykonaj następujące kroki:

1. Upewnij się, że Arduino prawidłowo odbiera komunikaty MIDI

Sprawdź kanał wyjściowy, do którego twoja klawiatura, DAW lub Sequencer wysyła komunikaty MIDI. Arduino domyślnie nasłuchuje kanału 1. Prześlij plik „TEST_MIDI_IN.ino”, aby przeczytać przychodzącą wiadomość NoteON.

2. Dokładnie sprawdź okablowanie

… a nawet lepiej: sprawdź je trzykrotnie! Zachowaj na to czas.

3. Sprawdź adres i wyjście DAC

DAC może być ustawiony na odbiór danych pod innym adresem niż ten, który ustawiłem na szkicu. Sprawdź adres, uruchamiając "I2C_scanner.ino". Jeśli wystąpi błąd „nie znaleziono urządzenia”, sprawdź okablowanie DAC (wejścia SDA i SCL są różne na różnych płytach Arduino!). Jeśli masz oscyloskop (nawet te cyfrowe oscyloskopy za 15 euro są wystarczająco dobre… i fajnie się nimi bawią!), możesz sprawdzić wyjście swojego DAC-a, wgrywając przykład generatora trójkąta falowego dołączony do instalacji biblioteki DAC.

Pamiętaj, że gdy transoptor jest podłączony do wejścia RX twojej płyty arduino, nie będziesz mógł wgrać nowego szkicu!! Umieść przełącznik (może to być zwykła zworka) przed pinem RX.

Większość z tych szkiców testowych nie jest moja lub przynajmniej opiera się na istniejącym materiale online.

Ta rzecz nie pasuje do mnie!?

To nie jest prawdziwy problem: równanie wyprowadzone dla sterowania Hz/V jest „idealne”. Pewne odchylenie od idealnego zachowania może wzrosnąć z +5 V, które dostarczasz, a nie z 5000 V, z przetwornika cyfrowo-analogowego i samego instrumentu. Aby rozwiązać ten problem, musisz użyć potencjometru dostrajania syntezatora/dostrajania i „voilà” idealnie dostrojonej kontroli MIDI;)

Krok 7: Przydatne linki

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specyfikacje/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Zalecana: