Spisu treści:

Arduino Soundlab: 3 kroki
Arduino Soundlab: 3 kroki

Wideo: Arduino Soundlab: 3 kroki

Wideo: Arduino Soundlab: 3 kroki
Wideo: КАРМАННЫЙ ПОМОЩНИК СЛР/POCKET CPR 2024, Październik
Anonim
Image
Image
Budowa
Budowa

To niesamowite, jak szeroką gamę niesamowitych dźwięków można wygenerować za pomocą techniki syntezy FM, nawet przy użyciu zwykłego Arduino. W poprzedniej instrukcji było to zilustrowane syntezatorem, który miał 12 zaprogramowanych dźwięków, ale widz zasugerował, że znacznie fajniej byłoby mieć pełną kontrolę nad parametrami dźwięku za pomocą potencjometrów i tak jest!

W tym laboratorium dźwiękowym, tony mogą być kontrolowane przez 8 parametrów: 4 dla obwiedni ADSR głośności i 4 dla modulacji częstotliwości, która określa teksturę.

Dodanie 8 potencjometrów nie szło kosztem ilości klawiszy: trzy zestawy po 8 klawiszy są odczytywane w ciągu kilku mikrosekund jeden po drugim, co daje w sumie 24 klawisze, co odpowiada dwóm pełnym oktawom. W rzeczywistości dwa piny Arduino są nieużywane i możliwe byłoby rozszerzenie do 40 klawiszy.

Obejrzyj wideo, aby dowiedzieć się, jak tworzyć dzikie dźwięki, oto krótki przegląd:

* A=atak: czas na osiągnięcie przez ton maksymalnej głośności (zakres 8ms-2s)

* D=decay: czas, po którym dźwięk opada do stałego poziomu głośności (zakres 8ms-2s)

* S=sustain: stały poziom głośności (zakres 0-100%)

* R=release: czas wygaśnięcia tonu (zakres 8ms-2s)

* f_m: stosunek częstotliwości modulacji do częstotliwości nośnej (zakres 0,06-16) wartości poniżej 1 dają półtony, wyższe wartości alikwoty

* beta1: amplituda modulacji FM na początku nuty (zakres 0,06-16) małe wartości powodują niewielkie zmiany tekstury dźwięku. duże wartości powodują zwariowane dźwięki

* beta2: amplituda modulacji FM na końcu nuty (zakres 0,06-16) Daj beta2 inną wartość niż beta1, aby tekstura dźwięku ewoluowała w czasie.

* tau: prędkość, z jaką amplituda FM ewoluuje od beta1 do beta 2 (zakres 8ms-2s) Małe wartości dają krótki huk na początku nuty, duże wartości to długa i powolna ewolucja.

Krok 1: Budowa

Budowa
Budowa
Budowa
Budowa
Budowa
Budowa

Oczywiście, to wciąż prototyp, mam nadzieję, że pewnego dnia ja lub ktoś inny zbuduję to duże, mocne i piękne z dużymi klawiszami i prawdziwymi tarczami dla potencjometrów w niesamowitej obudowie….

Potrzebne komponenty:

1 Arduino Nano (nie będzie działać z Uno, który ma tylko 6 wejść analogowych)

24 przyciski

8 potencjometrów w zakresie 1kOhm - 100kOhm

1 potencjometr 10kOhm do regulacji głośności

1 kondensator - elektrolityczny 10 mikrofaradów

1 gniazdo słuchawkowe 3,5 mm

1 układ wzmacniacza audio LM386;

2 kondensatory elektrolityczne 1000 mikrofaradów

1 kondensator ceramiczny 1 mikrofarad

1 mikroprzełącznik

1 głośnik 8Ohm 2Watt

1 płyta prototypowa 10x15 cm

Upewnij się, że rozumiesz załączone schematy. 24 przyciski są połączone w 3 grupach po 8, które są odczytywane w D0-D7 i aktywowane w D8, D10 i D11. Potencjometry mają +5V i masę na odczepach końcowych, a odczepy środkowe wyprowadzone są na wejścia analogowe A0-A7. D9 ma wyjście audio i jest sprzężony z prądem zmiennym do potencjometru 10 kOhm do regulacji głośności. Dźwięku można słuchać bezpośrednio za pomocą słuchawek lub wzmocnić układem wzmacniacza audio LM386.

Wszystko mieści się na prototypowej planszy 10x15 cm, ale przyciski są zbyt blisko, aby dobrze grać, więc lepiej byłoby zbudować większą klawiaturę.

Obwód może być zasilany przez złącze USB w Arduino Nano lub z zewnętrznego zasilacza 5V. Skrzynka na baterie 2xAA wraz z konwerterem step-up to idealne rozwiązanie do zasilania.

Krok 2: Oprogramowanie

Prześlij załączony szkic do Arduino Nano i wszystko powinno działać.

Kod jest prosty i łatwy do modyfikacji, nie ma kodu maszynowego ani przerwań, ale jest kilka bezpośrednich interakcji z rejestrami, aby współdziałać z zegarem, przyspieszyć odczyt przycisków i kontrolować zachowanie ADC do odczytu potencjometru

Krok 3: Przyszłe ulepszenia

Pomysły społeczności są zawsze mile widziane!

Najbardziej przeszkadzają mi przyciski: są malutkie i mocno klikają po naciśnięciu. Naprawdę fajnie byłoby mieć większe przyciski, które wygodniej jest naciskać. Ponadto przyciski czułe na siłę lub prędkość pozwoliłyby kontrolować głośność nut. Może zadziałałyby przyciski 3-kierunkowe lub przyciski dotykowe?

Innymi fajnymi rzeczami byłoby przechowywanie ustawień dźwięku w EEPROM-ie. Przechowywanie krótkich utworów w EEPROM-ie pozwoliłoby również na tworzenie znacznie ciekawszej muzyki. Wreszcie, można by generować bardziej złożone dźwięki, jeśli ktoś wie, jak generować dźwięki perkusji w wydajny obliczeniowo sposób, to byłoby niesamowite…

Zalecana: