Autor Instructables pod pseudonimem rgco wymyślił czterogłosowy syntezator 1,5 oktawy na Arduino Nie Dla porównania, rozpowszechnione syntezatory dla dzieci, które różnią się od siebie jedynie designem i są wykonane z tego samego układu, są trójgłosowe. To prawda, że mogą one automatycznie rytmicznie towarzyszyć muzyce, zapamiętywać melodie jednogłosowe i naśladować głosy zwierząt. Ale wtedy domowej roboty brzmi ładniej. Dlaczego
Chodzi o parametry. Częstotliwość próbkowania 31 kHz, 9-bitów, 4 głosy, synteza FM ze zmiennym w czasie przemiataniem, obwiednia ADSR, 12 instrumentów wirtualnych, 18 klawiszy obejmujących 1,5 oktawy.
Mistrz komponuje obwód syntezatora we Fritzing:
W nim symuluje lokalizację komponentów na płycie typu breadboard i połączenia między nimi:
I zbiera schemat w prawdziwym życiu:
Po prostu „wlej i używaj” to najprostsza rzecz, jaką możesz zrobić z projektem. 18 klawiszy (od PRZED czwartą oktawą do piątej FA) - aby zagrać, dziewiętnasta przełącza wirtualne instrumenty w ringu: fortepian, ksylofon, gitara, talerze, dzwonki, funky, vibrato, metal, skrzypce, bas, trąbka, akordeon. Na naturę dźwięku wpływa czas naciskania klawiszy, ale nie wysiłek, w przeciwieństwie do profesjonalnych syntezatorów. Ale programista chce, abyś również spróbował zaprogramować swoje wirtualne narzędzia. Każdy z nich ma dziesięć parametrów. Kreator powie ci, od jakiego parametru zależy.
ldness - tom
Jeśli ten parametr jest mniejszy niż 64, przeciążenie i powiązane zniekształcenia są wykluczone. Ale jeśli zaprogramujesz taki wirtualny instrument, który nie brzmi długo przy maksymalnej głośności, wartość tego parametru może przekroczyć 64, ponieważ wszystkie cztery głosy jednocześnie brzmią rzadko.
pitch0 - zmiana wysokości tonu
Zakres odpowiada powyższemu, jeśli ustawisz ten parametr na 12. Zmniejsz ruchy w dół, zwiększ - w górę. Zero odpowiada przesunięciu w dół dokładnie o jedną oktawę, 24 - w górę dokładnie o jedną oktawę.
ADSR_a - szybkość zmiany głośności od zera do maksimum
Im mniejszy, tym wolniejszy.Na przykład 8192 odpowiada 4 ms, 256 do 128 ms.
ADSR_d - prędkość zmniejszania głośności z maksimum do tego określonego przez parametr ADSR_s.
Zasada jest taka sama.
ADSR_s - wartość, do której zmniejsza się głośność po długim naciśnięciu klawisza
Na przykład 256 - głośność pozostaje maksymalna przez cały czas, gdy klawisz jest wciśnięty. 192 - głośność spada do 80 procent i pozostaje taka, dopóki klawisz jest wciśnięty. 0 - głośność spada do zera, nawet jeśli klawisz jest wciśnięty.
ADSR_r - prędkość zmniejszania głośności do zera po zwolnieniu klawisza
Zasada jest taka sama jak dla parametrów ADSR_a i ADSR_d.
FM_inc - stosunek częstotliwości modulacji do tonu
Przy wartości 256 współczynnik ten wynosi 1: 1, przy 512 - 2: 1, przy 128 - 1: 2, reszta jest podobna. Jeśli ten parametr zostanie ustawiony na wielokrotność 64, dźwięk będzie anharmoniczny.
FM_a1 - zakres modulacji częstotliwości na początku nuty
256 odpowiada szerokiemu zakresowi harmonicznych. Wraz ze spadkiem ton jest czystszy, a wraz ze wzrostem harmonicznych staje się bardziej.
FM_a2 - modulacja częstotliwości wobulacji na końcu nuty
Zasada jest taka sama. W przypadku większości prawdziwych instrumentów harmoniczne zanikają szybciej niż ton podstawowy. Jeśli zrobisz coś przeciwnego, otrzymasz niezwykłe dźwięki.
FM_dec - prędkość przejścia zakresu modulacji częstotliwości od ustawionej przez FM_a1 do ustawionej przez FM_a2
Zasada jest taka sama jak dla parametrów ADSR_a, ADSR_d i ADSR_r.
Częstotliwość PWM wynoszącą 31 250 Hz jest uzyskiwana przez podzielenie częstotliwości taktowania (16 MHz) przez 512. Program jest zaprojektowany w taki sposób, że zdarzenia są powiązane z czasem bez przerw. Zamiast tego zaangażowany jest bit przepełnienia timera. Aby program mógł zrobić wszystko, co jest od niego wymagane, używane są tylko liczby całkowite o długości 8 i 16 bitów. Fala sinusoidalna jest prezentowana w postaci tabeli liczb 8-bitowych. Operacje pomocnicze - odczytywanie stanów kluczy, zmiana instrumentów wirtualnych, wybieranie głosów, obliczanie parametrów nut zmieniających się w czasie - są rozłożone na 15 procedur, których wykonanie zajmuje 0,48 ms. W tej chwili niektóre operacje są wykonywane z 32-bitową precyzją, co jest konieczne do pomnożenia dwóch 16-bitowych liczb binarnych.
Prosta fala sinusoidalna brzmi nudno, ponieważ w jej spektrum nie ma harmonicznych. Synteza FM pozwala je odbierać i zmieniać ich spektrum w czasie, symulując dźwięk prawdziwych instrumentów. Wiele częstotliwości daje dźwięk anharmoniczny, który występuje na przykład w dzwonach. Urządzenie dobrze imituje zmiany widma właściwe dla prawdziwych instrumentów w czasie, gdy niektóre harmoniczne zanikają szybciej niż inne.