Spisu treści:

Syntezator arpeggiujący (Mosquito I): 6 kroków
Syntezator arpeggiujący (Mosquito I): 6 kroków

Wideo: Syntezator arpeggiujący (Mosquito I): 6 kroków

Wideo: Syntezator arpeggiujący (Mosquito I): 6 kroków
Wideo: Synth Kerala - Mosquitos [Official Lyric Video] 2024, Listopad
Anonim
Syntezator arpeggiujący (Mosquito I)
Syntezator arpeggiujący (Mosquito I)

Mosquito I to mały syntezator arpeggiacyjny, który wykorzystuje Arduino Nano i bibliotekę syntezy dźwięku Mozzi. Może odtwarzać ponad dwadzieścia 8-etapowych sekwencji, ale możesz dodać tyle niestandardowych sekwencji, ile chcesz. Jest stosunkowo prosty w konfiguracji i nie wymaga wielu części.

Kieszonkowe dzieci:

  • Arduino Nano (lub dowolne Arduino naprawdę powinno działać)
  • 5 szt. potencjometrów (10K liniowych)
  • 2 szt. Przyciski
  • 1 szt. LED
  • 1 szt. Rezystor (330 omów)
  • Rezystor 2 szt. (1K)
  • 1 szt. Rezystor (2K)
  • 1 szt. Kondensator elektrolityczny (100 uF)
  • 1 sztuka kondensatora ceramicznego (33 nF)
  • 1 szt. Gniazdo stereo
  • Podłączyć przewód
  • Deska do krojenia chleba

Krok 1: Konfiguracja Arduino

Konfiguracja Arduino
Konfiguracja Arduino
Konfiguracja Arduino
Konfiguracja Arduino

Najpierw ustawmy Nano na płytce prototypowej i ustawmy naszą moc:

  1. Umieść Nano na płytce stykowej. Miejsce, jak pokazano na powyższym obrazku. Powinien znajdować się w środkowym kanale płytki stykowej. Będziesz chciał, aby znajdował się na jednym końcu płytki stykowej, z portem USB skierowanym w tę stronę. W ten sposób kabel nie będzie przeszkadzał po podłączeniu. Jeśli używasz większego Arduino, takiego jak Uno lub Mega, nie będziesz oczywiście montować go na płytce stykowej.
  2. Podłącz szyny zasilające do Arduino. Podłącz jedną z dodatnich (czerwonych) szyn płytki stykowej do pinu 5 V Arduino za pomocą drutu lub przewodów połączeniowych. Następnie podłącz jedną z ujemnych (niebieskich) szyn do jednego z pinów GND Nano.
  3. Połącz ze sobą szyny zasilające. Aby uzyskać moc wzdłuż szyn po obu stronach płytki prototypowej, połącz ze sobą szyny po obu stronach płytki prototypowej, prowadząc przewód od szyny dodatniej z jednej strony do szyny dodatniej z drugiej strony. Powtórz to z szynami ujemnymi.

Krok 2: Dodawanie elementów sterujących

Dodawanie elementów sterujących
Dodawanie elementów sterujących

Mosquito I wykorzystuje pięć potencjometrów i dwa przyciski do sterowania.

Potencjometry:

  1. Postaw garnki na desce do krojenia chleba. Umieść garnki tak, aby każdy kołek znajdował się w osobnym rzędzie.
  2. Podłącz garnki do szyn zasilających. Podłącz lewy bolec każdego garnka (jeśli patrzysz na stronę pokrętła) do jednej z ujemnych szyn na płytce stykowej. Podłącz prawy boczny bolec każdego garnka do jednej z dodatnich szyn płytki do krojenia chleba.
  3. Podłącz potencjometry do Arduino. Podłącz środkowy styk każdego potencjometru do jednego z analogowych styków Arduino. Środkowy pin pierwszej puli łączy się z A0, drugą z A1 i tak dalej, a ostatnia z A4.

Wciskać przyciski:

  1. Umieść przyciski na płytce stykowej. Umieść dwa przyciski na płytce stykowej tak, aby obejmowały kanał środkowy.
  2. Połącz pozytywne strony. Po jednej stronie płytki stykowej podłącz jeden z kołków przycisku do szyny dodatniej.
  3. Połącz negatywne strony. Umieść jeden z rezystorów 1K na płytce stykowej tak, aby jeden koniec był podłączony do nieużywanego pinu przycisku, a drugi koniec rezystora do szyny ujemnej.
  4. Przycisk połączenia z Arduino. Poprowadź przewód w rzędzie, który łączy przycisk z szyną ujemną z pinem D2. Zrób to samo z drugim przyciskiem, ale podłącz go do D3.

Krok 3: Dodawanie wyjść

Dodawanie wyjść
Dodawanie wyjść

Wyprowadzamy dźwięk z pinu 9, a także migamy diodą LED w pierwszym kroku każdej sekwencji. Oto jak skonfigurować sprzęt do tego.

PROWADZONY

  1. Umieść diodę LED w pustym miejscu na płytce stykowej.
  2. Podłącz ujemną (krótką) nogę diody LED do szyny ujemnej.
  3. Umieść rezystor ograniczający prąd. Podłącz jedną stronę rezystora 330 omów do dodatniej (długiej) nogi diody LED. Podłącz drugą stronę rezystora do pinu D4 Arduino.

Wyjście audio

  1. Umieść sieć RC. Sygnał wyjściowy z Arduino pochodzi z pinu 9, ale sygnał może być nieco gorętszy niż niektóre głośniki. Aby sprowadzić go do czegoś bliższego poziomowi liniowemu, dodałem sieć RC (w oparciu o projekt Notes & Volts). Umieść kondensatory 33nF i 100uF wraz z rezystorem 2K, jak pokazano na rysunku/schemacie. Upewnij się, że kondensator elektrolityczny 100uF jest podłączony z odpowiednią polaryzacją (dodatnia/długa noga idąca do styku 9 na Arduino i ujemna/krótka noga podłączona do gniazda).
  2. Podłącz ujemną stronę gniazda audio do masy. Połączenia z gniazdem audio będą się nieznacznie różnić w zależności od typu, z którego korzystasz, ale generalnie wszystkie działają tak samo. Musimy podłączyć tuleję gniazda do masy. Czasami jest to oznaczone symbolem minusa lub oznaczone jako „sleeve”, „ring” lub „gnd”. Jeśli na gnieździe audio nie ma etykiet, może być konieczne zapoznanie się z arkuszem danych lub po prostu dokładne sprawdzenie gniazda i sprawdzenie, czy możesz określić, który pin jest podłączony do tulei lub zewnętrznego pierścienia gniazda.
  3. Podłącz dodatnią stronę gniazda audio do ujemnej strony kondensatora 100uF. Nasz sygnał audio przepływa teraz z pinu 9 Arduino przez sieć RC i wychodzi z ujemnej strony kondensatora 100uF. Podłączymy to do pozytywnej strony naszego gniazda audio. Jest to zwykle oznaczone symbolem plusa lub może być oznaczone jako „wskazówka”. Ponownie, jeśli nie jest oznaczony, może być konieczne sprawdzenie go, aby dowiedzieć się, który pin będzie łączył się z końcówką gniazda. Ponadto, jeśli używasz gniazda stereo, może być połączenie końcówki L i końcówki R. Ponieważ wysyłamy sygnał mono, możesz po prostu podłączyć się do jednego z końcówek.

Ważne: Jeśli okaże się, że dźwięk jest zbyt cichy, możesz wyeliminować sieć RC w kroku 1 i połączyć się bezpośrednio z dźwiękiem z pinu 9 Arduino. To powinno być w porządku, jeśli podłączasz dźwięk do czegoś z przedwzmacniaczem, takim jak zewnętrzne głośniki komputerowe, w których masz pokrętło głośności, ale nie polecałbym tego w przypadku słuchawek, wkładek dousznych lub bezpośredniego okablowania do głośnika. Jeśli zdecydujesz się wyeliminować sieć RC, sugeruję całkowite zmniejszenie głośności głośników przed uruchomieniem Arduino, a następnie stopniowe zwiększanie głośności, aby uniknąć wysadzenia głośników.

Po skonfigurowaniu wszystkiego sprawdź, czy wszystkie połączenia wyglądają prawidłowo i pasują do powyższego obrazka i schematu

Krok 4: Przesyłanie kodu

Teraz, gdy sprzęt jest już skonfigurowany, możemy zająć się stroną oprogramowania:

  1. Uruchom środowisko Arduino IDE. Na swoim komputerze uruchom Arduino IDE (jeśli go nie masz, możesz je pobrać z
  2. Pobierz bibliotekę Mozzi. Biblioteka Mozzi pozwala nam używać naszego Arduino jako syntezatora. Aby pobrać tę bibliotekę do swojego IDE, przejdź do strony github Mozzi https://sensorium.github.io/Mozzi/download/. Kliknij zielony przycisk „Kod” i wybierz Pobierz ZIP.
  3. Zainstaluj bibliotekę Mozzi z pliku zip. W Arduino IDE przejdź do Sketch->Include Library->Add. ZIP Library… Przejdź do pobranego pliku zip, aby go dodać. Powinieneś teraz zobaczyć Mozzi w sekcji Szkic->Dołącz bibliotekę.
  4. Pobierz kod Mosquito I Arduino. Możesz to uzyskać z mojej strony github https://github.com/analogsketchbook/mosquito_one. (Zauważ, że schematy są tam również dostępne, jeśli potrzebujesz ich jako odniesienia do okablowania.
  5. Podłącz Arduino do komputera i wgraj kod.

Krok 5: Zamieszanie

Otóż to. Powinieneś być w stanie podłączyć głośniki do gniazda audio i usłyszeć słodki dźwięk syntezy arpeggiowanej z tego zwariowanego Nano! Jeśli na początku nic nie słyszysz, spróbuj wyśrodkować pokrętła na wszystkich potencjometrach, aby upewnić się, że otrzymujesz przyzwoite wartości początkowe.

Oto, co robią kontrolki:

Garnki:

Rate: Kontroluje szybkość odtwarzania sekwencera. Przyciszenie go odtwarza kolejno dyskretne nuty. Podkręcanie go w górę rozmazuje nuty, tworząc zupełnie nowe przebiegi.

Legato: Druga pula kontroluje legato lub długość nut. Obracanie go bardziej w lewo daje krótkie, sticatto, podczas gdy obracanie w prawo daje dłuższe nuty.

Pitch: Ustawia podstawowy strój dla sekwencji. Kontrola wysokości tonu ustawia wartości MIDI, więc zwiększa/zmniejsza wysokość tonu w półtonach, a nie w sposób ciągły.

Faza: Przekręcenie tego pokrętła w prawo wprowadza subtelny efekt fazowania. Technicznie rzecz biorąc, powoduje to lekkie rozstrojenie dwóch oscylatorów w Mosquito I, co powoduje fazowanie. Nie jest to jednak śledzenie z wysokością dźwięku, więc efekt fazowania jest prawdopodobnie bardziej zauważalny na niższych dźwiękach.

Filter: To pokrętło kontroluje częstotliwość odcięcia filtra dolnoprzepustowego. Przekręcenie go w lewo odcina wysokie częstotliwości, dając bardziej przytłumiony dźwięk, a przekręcenie w prawo daje jaśniejszy dźwięk.

Guziki:

Mosquito ma domyślnie ponad dwadzieścia różnych sekwencji, które może odtwarzać. Przyciski pozwalają wybrać, która sekwencja jest odtwarzana. Jeden przycisk przesuwa cię w górę listy sekwencji, a drugi w dół listy.

Krok 6: Dostosowanie

Dostosowywanie
Dostosowywanie

Dodałem kilka domyślnych sekwencji, głównie różne skale, ale możesz dość łatwo dostosować kod, aby zmienić sekwencję odtwarzanych nut, dodać nowe lub zmienić liczbę nut w sekwencji. Poniżej znajdują się szczegółowe informacje na temat tego, jak to zrobić, na wypadek gdybyś chciał go dostosować.

Zmiana notatek w istniejącej sekwencji

Sekwencje są przechowywane w tablicy tablic zwanych UWAGI. Każda nuta jest przechowywana jako wartość nuty MIDI, więc jeśli chcesz zmienić nuty w określonej sekwencji, po prostu zmień numery nut MIDI dla tej sekwencji. Domyślnym ustawieniem jest odtwarzanie 8 kroków na sekwencję, więc możesz mieć tylko 8 wartości MIDI w sekwencji (patrz poniżej, jeśli chcesz mieć różne długości sekwencji).

Warto zauważyć, że pokrętło pitch dodaje przesunięcie nuty do wartości MIDI określonych w tablicy NOTES. Gdy pokrętło jest wyśrodkowane, odtwarza nuty MIDI wskazane w tablicy, ale gdy obracasz pokrętłem pitch, dodaje lub odejmuje pół tonu do granych nut.

Dodawanie nowych sekwencji

Możesz dodać nowe sekwencje do tablicy NOTES, po prostu dodając nową 8-nutową tablicę na końcu listy. Jeśli jednak to zrobisz, będziesz musiał również zmienić wartość zmiennej numSequences, aby dopasować nową liczbę sekwencji. Na przykład tablica NOTES ma domyślnie 21 sekwencji, więc zmienna numSequences jest ustawiona na 21. Jeśli dodasz jedną nową sekwencję, musisz zmienić zmienną numSequences na 22.

Możesz dodać tyle nowych sekwencji, ile chcesz.

Zmiana długości sekwencji

Jeśli chcesz zmienić długość swoich sekwencji (jeśli chcesz powiedzieć 4-etapową lub 16-etapową sekwencję), możesz to zrobić, ale jedynym zastrzeżeniem jest to, że wszystkie sekwencje muszą mieć tę samą długość. Będziesz także musiał ustawić zmienną numNotes, aby pasowała do długości twoich sekwencji.

Inne zmiany

Istnieje wiele innych możliwych dostosowań, takich jak przełączanie typów przebiegów, ustawienia/wartości filtrów, które wykraczają poza zakres tego samouczka. Ustalenie kodu Mozzi może być na początku trochę trudne, ale starałem się jak najwięcej udokumentować kod, aby pokazać, co robią różne części kodu.

Istnieje kilka głównych części kodu Mozzi, które mają dość specyficzne zastosowania i wymieniłem je poniżej, aby dać ci wyobrażenie o tym, do czego są używane:

  • setup() - jeśli programowałeś dla Arduinos, zanim zapoznałeś się z tą funkcją i jest ona prawie taka sama w Mozzi. Używamy go głównie do konfiguracji domyślnych ustawień oscylatorów, filtrów itp.
  • updateControl() - tutaj wykonuje swoją pracę lwia część kodu Mozzi. To tutaj odczytujemy wartości potencjometrów i przycisków, mapujemy i przekształcamy te wartości, aby były przesyłane do syntezatora i gdzie odbywa się sekwencjonowanie.
  • updateAudio() - To jest ostateczne wyjście z biblioteki Mozzi. Zazwyczaj kod tutaj jest bardzo mały i szczupły, ponieważ funkcja ta jest używana przez Mozzi do maksymalizacji wszystkich cykli zegara, jakie może. Jak widać w kodzie komara, może to być trochę tajemnicze, ale wszystko, co w zasadzie robimy, łączymy/mnożymy nasze różne kształty fal, a następnie przesuwamy je, aby dopasować je do określonego zakresu liczb. Najlepiej, aby ta funkcja była bardzo lekka (nie wywołania szeregowe ani szpilki do odczytu) i zamiast tego umieścić większość rzeczy w funkcji controlUpdate(). Dokumentacja Mozziego opisuje to dokładniej.

Zalecana: