Elektroda.pl
Elektroda.pl
X
Szkolenia elektronika Udemy
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mini 1-bitowy syntezator Gigantora

Gigantor 27 Lis 2013 20:03 19188 28
  • Mini 1-bitowy syntezator Gigantora

    Wstęp

    W skrócie: to kieszonkowy syntezator dźwięku z automatem perkusyjnym i kompozytorem „melodii”.

    Koncepcja tego urządzenia powstała zaraz po stworzeniu syntezatora Atari Punk Console – zaintrygowały mnie syntezatory z minimalistycznym interfejsem o ograniczonych możliwościach (np. Nebulophone, Bleep Drum, Standuino fraAngelico). Inspiracją było również Atari 2600 oraz muzyka 1 – bitowa. Podstawowe założenie było jedno – 2 gałki + jak najmniejsza ilość przycisków, przy czym całość powinna być możliwa do obsłużenia wyłącznie kciukami. Wymiary wizytówkowe, minimalna ilość elementów, zasilanie bateryjne. Sporo czasu zajęło opracowanie koncepcji – silnik syntezy ma wiele parametrów, ja użytkownikowi mogłem udostępnić zaledwie kilka z nich. Z uwagi decyzje podjęte na etapie konstrukcji założeń, wydawane dźwięki nie przeznaczone są dla każdego. Próżno szukać tu przyjaznych dla przeciętnego ucha brzmień (zależy oczywiście, co dla kogo jest przyjemne).

    Prezentowane urządzenie jest czwartą z kolei stworzoną wersją i moim 25-tym mniej lub bardziej złożonym syntezatorem dźwięku.

    Patrząc od strony „dźwiękowej” zaimplementowano:
    - syntezator wiodący (3 generatory),
    - syntezator perkusyjny „stopa perkusji”,
    - syntezator perkusyjny „talerz / trójkąt”.

    Użytkownik ma do dyspozycji 4 niezależne sekwensery 8-krokowe odpowiedzialne za:
    - wyzwolenie / wysokość dźwięku syntezatora wiodącego,
    - wyzwolenie funkcji płynnego osiągnięcia dźwięku (slide) syntezatora wiodącego,
    - wyzwolenie „stopy perkusji”,
    - wyzwolenie „talerza”.

    Silnik syntezy

    Wbrew pozorom, układ syntezy jest całkiem skomplikowany (jak na coś tak niewielkiego). Zastosowano zmodyfikowaną syntezę DDS (bez użycia tablic z kolejnymi wartościami próbek przebiegów) dla generatorów DCO oraz tradycyjną, z tablicą próbek dla LFO. Każdy z generatorów (poza LFO) jest 1-bitowy.

    Na silnik syntezy składają się:
    - 3 generatory DCO (przebieg prostokątny) pracujące w częstotliwościach audio z możliwością twardej synchronizacji (syntezator wiodący),
    - 1 generator LFO (przebieg trójkątny, 8 bit) modulujący współczynnik wypełnienia przebiegu prostokątnego dla 3 pozostałych DCO, przy czym głębokość modulacji jest inna dla każdego z nich, częstotliwość pracy LFO jest regulowana przez użytkownika.
    - 1 generator DCO odpowiedzialny za dźwięk „stopy perkusji” - parametry „decay” i „pitch” ustawiane przez użytkownika,




    - 1 generator szumu na rejestrze przesuwnym z liniowym sprzężeniem zwrotnym generujący „talerz / trójkąt”, można zmieniać parametry „decay” oraz sprzężenia zwrotnego.

    Hard & soft

    Wyjścia z generatorów wysyłane są bezpośrednio na oddzielne piny mikrokontrolera, miksowane analogowo i buforowane. Zastosowano mikrokontroler ATMEGA8L (zasilanie 5V), taktowany wewnętrznym zegarem 8MHz. Docelowo znajdzie się tu ATMEGA88 (zasilanie 3V bateryjne). Ruch enkoderów wykrywany jest w przerwaniach INT0 i 1, przycisków w przerwaniu timera. Do wysterowania LEDów zastosowano charlieplexing. Istnieje możliwość regulacji głośności perkusji oraz głośności wyjściowej urządzenia. Cały kod napisano w C, zajmuje poniżej 5kb.

    W pierwotnych planach urządzenie miało zawierać także filtr analogowy, jednak dźwięk tracił zbyt wiele charakteru. Poza tym ucierpiałaby także prostota konstrukcji.

    Interfejs

    Syntezator obsługuje się za pomocą 2 enkoderów z przyciskami i 4 dodatkowych przycisków. Rząd 8 LEDów wskazuje aktualnie odgrywaną pozycję w sekwencji oraz zapisane pozycje, 4 nad przyciskami wyświetlają aktualny tryb pracy. W każdym z trybów dostępny jest inny zestaw funkcji :
    - LEAD, w trybie tym można: zaprogramować sekwencje syntezatora wiodącego i wyzwalania „slide”, zmienić prędkość odgrywania sekwencji, podwyższyć/obniżyć tonację sekwencji,
    - DRUM, w tym trybie można: zaprogramować sekwencje perkusyjne, zmienić brzmienie perkusji, automatycznie zmodyfikować sekwencję (2 algorytmy), wyzwolenie pojedynczego uderzenia / „drum roll”, włączyć / wyłączyć sekwencje,
    - SYNTH, w tym trybie można:zmienić prędkość generatora LFO modulującego szerokość wypełnienia przebiegu generatorów DCO syntezatora wiodącego, rozstroić generatory, włączyć twardą synchronizację generatorów syntezatora wiodącego, ustawić jeden z 6 akordów, unison lub unison+suboscylator, zresetować ustawienia.
    - MEMORY: zapis sekwencji, odtwarzaj / zapis.

    Poniżej film z działania oraz (od ok. 3:00) kilka pętli stworzonych podczas konstruowania urządzenia


    Link



    Podsumowanie

    Nadal poprawiam pewne niedoróbki związane z interfejsem, jednak znaczna większość pracy za mną. W planach jest jeszcze dodanie wejścia sygnału wyzwalającego sekwenser, by możliwa była współpraca z innymi urządzeniami. Będzie to o tyle trudne, że wszystkie piny uC są już zajęte.

    Kosztorys:
    enkodery, przyciski – 10zł
    układy scalone – 10 zł
    diody, rezystory, kondensatory – 5zł
    dystanse, gałki – 5 zł
    laminat – 4 zł

    Razem ~35 zł za masę zabawy i nauki.

    Na zdjęciach poniżej: gotowe urządzenie i prototypy.

    Mini 1-bitowy syntezator Gigantora Mini 1-bitowy syntezator Gigantora Mini 1-bitowy syntezator Gigantora


    Fajne!
  • Szkolenia elektronika Udemy
  • #2 27 Lis 2013 21:54
    badworm
    Poziom 18  

    Będzie udostępniony schemat i soft?

  • #3 27 Lis 2013 22:22
    Gigantor
    Poziom 18  

    DominTR3B napisał:
    Ładna obudowa i sprzedawaj po 2000 :D .Lepsze niż dzwięk comodorca.Dorób wyjście na mixer :idea: .


    Wyjście liniowe jest, na osobne wyjścia na mikser nie ma miejsca. Dodam za to pady do modyfikacji na PCB.
    Po 2000 może nie, ale podobne komstrukcje na "zachodzie" osiągają namacalne ceny. Tutaj coś o zbliżonych możliwościach, lecz bardziej rozdmuchanym interfejsie: NTHsynth

    badworm napisał:
    Będzie udostępniony schemat i soft?


    Zapomniałem o schemacie (troche niechlujny, ale daje pogląd):

    Mini 1-bitowy syntezator Gigantora

    Softu raczej nie będzie, jeszcze się go wstydzę.

  • #4 28 Lis 2013 11:24
    SylwekK
    Poziom 29  

    Świetny projekcik! A mógłbyś opisać sposób (algorytm) tworzenia dźwięku przykładowego generatora DCO oraz generatora szumu. Ten ostatni za czasów Commodorka robiłem z bardzo dobrym skutkiem używając operacji EOR, ale kompletnie nie pamiętam jak ja to robiłem, a mogłem uzyskiwać dźwięki od szumu po całkiem fajny dźwięk trójkąta (o instrument oczywiście chodzi :) ).

  • #5 28 Lis 2013 13:35
    johny888
    Poziom 2  

    H3nry napisał:

    Ps.Jeżeli układ dostępny byłby w formie kitu jestem zainteresowany ;D


    A ja rowniez - gdyby uklad dostepny byl takze w formie gotowej. :)



    PS: Widze, ze na forum 1bit.i-demo.pl pytaja, czy bedzie dostepny firmware do tego.

  • #7 28 Lis 2013 16:15
    SylwekK
    Poziom 29  

    @donduuuuu... ;)

    Cytat:
    Hard & soft

    Wyjścia z generatorów wysyłane są bezpośrednio na oddzielne piny mikrokontrolera, miksowane analogowo i buforowane. Zastosowano mikrokontroler ATMEGA8L (zasilanie 5V), taktowany wewnętrznym zegarem 8MHz. Docelowo znajdzie się tu ATMEGA88 (zasilanie 3V bateryjne). Ruch enkoderów wykrywany jest w przerwaniach INT0 i 1, przycisków w przerwaniu timera. Do wysterowania LEDów zastosowano charlieplexing. Istnieje możliwość regulacji głośności perkusji oraz głośności wyjściowej urządzenia. Cały kod napisano w C, zajmuje poniżej 5kb.

  • Szkolenia elektronika Udemy
  • #9 28 Lis 2013 16:24
    leonow32

    Poziom 29  

    I to jest właśnie piękne - ktoś inny by do tego użył jakiegoś procka DSP z zaawansowanym przetwornikiem DAC i całą masą innej elektroniki za kilkaset złotych. Tymczasem tutaj pokazałeś jak zrobić ciekawy instrument dosłownie z niczego dzięki dobremu pomysłowi :)

  • #10 28 Lis 2013 16:34
    Fazi87
    Poziom 24  

    Cytat:
    Softu raczej nie będzie, jeszcze się go wstydzę.


    To może chociaż udostępnisz wsad i rysunek płytki? Fajnie by było sobie zbudować taką "zabawkę". No chyba że zamierzasz gdzieś opublikować lub sprzedawać jako kit to poczekam z niecierpliwością :-)

  • #11 28 Lis 2013 19:14
    dgajew
    Poziom 18  

    Brakuje dobrej obudowy ze złączami chinch i ten projekt uczyni Cię sławnym i bogatym ;] Kilka pinów możesz odzyskać jeżeli inaczej zorganizujesz czytanie stanów 4 przycisków, np. z drabinką rezystorów sprawdzaną przez jedno z wejść wbudowanego konwertera A/C. Świat czeka na kit, świetna robota!

  • #12 29 Lis 2013 10:14
    n6210
    Poziom 15  

    Genialny w swej prostocie projekcik.
    Brzmienie od razu nasuwa pomysł tworzenia muzyki do oldskulowych gierek komputerowych (to komplement :) ), choć na pewno zakres zastosowań jest dużo większy.

    Bardzo ciekawie rozwiązałeś sterowanie LED-ami :)
    Mam nadzieję, że jednak udostępnisz kod bo to była by świetna baza dla podkładów dźwiękowych pod różne gierki "produkowane" na takich małych procesorach.

    Próbowałeś może sprawdzać jak bardzo zajęty jest CPU i ile jeszcze udało by mu się upchnąć czegoś do zrobienia ?

  • #13 29 Lis 2013 21:28
    Gigantor
    Poziom 18  

    SylwekK napisał:
    [...] mógłbyś opisać sposób (algorytm) tworzenia dźwięku przykładowego generatora DCO oraz

    generatora szumu. [...]


    Przedstawono działanie generatora generatora LFO oraz generatora szumu.Poniżej krótki fragment kodu, generację

    szumu można jeszcze zoptymalizować (np. stosując tablicę).

    Kod: c
    Zaloguj się, aby zobaczyć kod


    H3nry napisał:
    Czy może kolega pokazać kilka przebiegów od strony kształtu sygnału ewentualnie udostępnić nagranie

    w formie *wave lub innym popularnym ?


    Załączam krótkie próbki w formacie .wav.

    johny888 napisał:
    H3nry napisał:

    Ps.Jeżeli układ dostępny byłby w formie kitu jestem zainteresowany ;D

    A ja rowniez - gdyby uklad dostepny byl takze w formie gotowej. :)
    PS: Widze, ze na forum 1bit.i-demo.pl pytaja, czy bedzie dostepny firmware do tego.

    Fazi87 napisał:
    To może chociaż udostępnisz wsad i rysunek płytki? Fajnie by było sobie zbudować taką "zabawkę". No chyba że zamierzasz gdzieś opublikować lub sprzedawać jako kit to poczekam z niecierpliwością :-)


    Kit mam w planie, zabiorę się za niego w wolnym czasie (i jak zakoduję jeszczę parę efektów).
    Firmwaru raczej nie mam zamiaru udostępniać "luzem", jak już to w pakiecie z kitem :)

    leonow32 napisał:
    I to jest właśnie piękne - ktoś inny by do tego użył jakiegoś procka DSP z zaawansowanym przetwornikiem DAC i całą masą innej elektroniki za kilkaset złotych. Tymczasem tutaj pokazałeś jak zrobić ciekawy instrument dosłownie z niczego dzięki dobremu pomysłowi :)


    Pomysł opierał się na wykorzystaniu mikrokontrolera 8-bit do tego, co potrafi najlepiej: działania na 8 bitach, bez prób odwzorowania układów analogowych (filtrów, generatorów obwiedni itd). Wychodzę z założenia, że to, co analogowe zostawię układom analogowym, a co cyfrowe, cyfrowym - uC może co najwyżej generować sygnał kontolny dla układu analogowego.

    dgajew napisał:
    Brakuje dobrej obudowy ze złączami chinch i ten projekt uczyni Cię sławnym i bogatym ;] Kilka pinów możesz odzyskać jeżeli inaczej zorganizujesz czytanie stanów 4 przycisków, np. z drabinką rezystorów sprawdzaną przez jedno z wejść wbudowanego konwertera A/C. Świat czeka na kit, świetna robota!


    Obudowa to najtrudniejszy element, dlatego założyłem konstrukcję "kanapkową". Poza tym w tego typu projekcie, pochłonęłaby większość kosztów. Czytania z ADC chciałem uniknąć - docelowo miał być wciskany więcej niż 1 przycisk (wiem, że zawsze można pobawić się z wartością rezystorów). Piny postaram się odzyskać, obsługując wszystkie diody razem (obecnie to 2 osobne "charlieplexingi" 8 + 4).
    Co do dodatkowych wejść / wyjść i interfejsu: bez problemu można dołożyć cinch, wyjścia z każdego generatora osobno, regulowaną głośność każedego z generatorów, stworzyć interfejs typu "knob-per-function". Chciałem jednak uniknąć sytuacji, gdy prosty projekcik rozrośnie się do kolubryny, gdzie większość kosztów będą stanowiły gniazda i potencjometry. Za to dołożę pady do przeprowadzenia modyfikacji.

    n6210 napisał:
    Genialny w swej prostocie projekcik.
    Brzmienie od razu nasuwa pomysł tworzenia muzyki do oldskulowych gierek komputerowych (to komplement :) ), choć na pewno zakres zastosowań jest dużo większy.

    Bardzo ciekawie rozwiązałeś sterowanie LED-ami :)
    Mam nadzieję, że jednak udostępnisz kod bo to była by świetna baza dla podkładów dźwiękowych pod różne gierki "produkowane" na takich małych procesorach.

    Próbowałeś może sprawdzać jak bardzo zajęty jest CPU i ile jeszcze udało by mu się upchnąć czegoś do zrobienia ?


    Moim zdaniem urządzenie jest trochę za proste do muzyki "gierkowej". Zabawa "na żywo" daje dobre efekty, jednak to tylko sekwenser 8-krokowy. Kodu "wprost" nie udostępnię, skłaniam się już bardziej ku samouczkowi programowania syntezatorów na mikrokontrolery.
    Upchnąc można jeszcze sporo - niestety po pewnym czasie słychać utratę jakości dźwięku (spada płynność modulacji). Mój rekord to 16 generatorów i obsługa midi - wszystko na 8MHz, za to bez fizycznego interfejsu.

    Ciekawostka: wspomniałem, że to IV prototyp. Poniżej demo wersji II - płytka jest 3x mniejsza, podobnie jak możliwości. Urządzenie zrobiono "na fali" projektów z opakowań po miętówkach.


    Link


    W załącznikach krótkie próbki (po 3 sekundy) w formacie .wav.

  • #14 30 Lis 2013 00:39
    Ronin64
    Poziom 35  

    Do muzyki "gierkowej" to proponuję użyć SID 8580 ;)

  • #15 30 Lis 2013 00:52
    Gigantor
    Poziom 18  

    Ronin64 napisał:
    Do muzyki "gierkowej" to proponuję użyć SID 8580 ;)


    Lepszy MOS6581 :)
    Zrobiłem nawet do niego sprzętowo-programowy tracker (komputer + zewnętrzny moduł dzwiękowy)... Niestety moje zdolności programistyczne były wówczas nieciekawe, toteż projekt trochę obumarł.

  • #16 30 Lis 2013 00:59
    Ronin64
    Poziom 35  

    8580 ma lepiej brzmiące filtry ;) 6581 kuleje pod tym względem.

  • #18 30 Lis 2013 01:27
    Ronin64
    Poziom 35  

    Dzięki temu lepiej odtwarza sample (głośniej). Ale na szczęście powstały lepsze sposoby odgrywania sampli w jakości lepszej niż 4 bity ;) Brzmienia perkusji załatwia się poprzez odpowiednie tabele z instrukcjami jakiej fali i o jakiej częstotliwości użyć.

  • #19 04 Gru 2013 22:14
    Gigantor
    Poziom 18  

    Dziękuję za pozytywny odzew,
    przede mną droga, chociaż nie aż tak długa. Obecnie staram się zaimplementować:
    - możliwość synchronizacji z zewnętrznym źródłem taktującym sekwensery,
    - parę dodatkowych efektów dźwiękowych wyzwalanych "na żywo",
    - wkradło się także parę błędów wymagających poprawy(oczywiście, o ile ktoś o nim nie wie, nie będzie wiedział, kiedy go usłyszy).
    Brakuje także 2 gniazd mini jack na płytce i włącznika zasilania, koszyka na baterie i innych drobiazgów. Odnoście kodu, to będzie dostępny, gdy będę zadowolony z pracy urządzenia.
    Pozdrawiam!

  • #21 10 Gru 2013 23:22
    Gigantor
    Poziom 18  

    uzi18 napisał:
    Fajnie widziec takie projekty rodem z czasow C=64

    Podepnij diody pod 2 rejestry 595 w szeregu - zyskasz kilka pinow procka :)

    Powodzenia!


    Teoretycznie pomysł jest dobry, jednak jakby na płytce miałaby być mega8 + 2x595, to już bardziej opłaca się dać po prostu mega16 (dip40).
    Obecnie zmieniłem konstrukcję, 4 diody wysterowywane są z 2 pinów, dzięki czemu zaoszczędziłem 1 pin (kosztem 1 dodanego rezystora).
    Pozdrawiam

  • #22 15 Gru 2013 18:40
    Trzyzet
    Poziom 18  

    Super zabaweczka! :)

    Kiedy chodziłem do technikum próbowałem zrobić coś podobnego w stereo, brak wiedzy ostatecznie zmusił mnie do porzucenia "projektu".

    Cytat:
    - wkradło się także parę błędów wymagających poprawy(oczywiście, o ile ktoś o nim nie wie, nie będzie wiedział, kiedy go usłyszy).


    Czyżby błędy w wyzwalaniu kolejnych "ścieżek"? :)

  • #24 16 Gru 2013 18:49
    Rafraf
    Poziom 16  

    Gigantor napisał:
    Ronin64 napisał:
    8580 ma lepiej brzmiące filtry ;) 6581 kuleje pod tym względem.

    Za to 6581 wydaje trzask przy zmianie głośności, który można wykorzystać jako perkusję :)


    is it bug or feature? ;)

    kazdy kto siedzial troche w SIDzie wie, ze 8580 jest lepszy bo kazdy brzmi tak samo a w przypadku 6581: z powodu niedoskonalosci procesow wytwarzania kazdy egzemplarz ma inne brzmienie. Ponadto 8580 da sie takze "naprawic" aby podniesc glosnosc sampli odtwarzanych przez $d418 ;)

    natomiast co do projektu - ciekawa sprawa.
    Mozesz w ogole wytlumaczyc o co chodzi z tym 1bit music? to nie jest cos w stylu PWM na pc speaker przypadkiem?

  • #25 16 Gru 2013 22:44
    Gigantor
    Poziom 18  

    Trzyzet napisał:
    [...] Czyżby błędy w wyzwalaniu kolejnych "ścieżek"? :)

    Błędy są słyszalne w generowaniu "stopu perkusji". Przy wysokich BPM częstotliwość generatora zamiast - opadać rośnie.

    Templarious napisał:
    [...] Czy mógłbyś chociaż udostępnić plik .sch oraz .hex ?


    Schemat jest gdzieś w jednym z pierwszych postów, .hex niestety nie udostępniam chwilowo.

    Rafraf napisał:
    [...]

    kazdy kto siedzial troche w SIDzie wie, ze 8580 jest lepszy bo kazdy brzmi tak samo a w przypadku 6581: z powodu niedoskonalosci procesow wytwarzania kazdy egzemplarz ma inne brzmienie. Ponadto 8580 da sie takze "naprawic" aby podniesc glosnosc sampli odtwarzanych przez $d418 ;)


    Rozumiem, że nie doceniasz indywidualizmu i nieprzewidywalności 6581 :) Który lepszy - nie oceniam, miałem do czynienia głównie z 6581. Z tego co czytałem na forach, zdania są podzielone. (Mam nadzieję, że nie wdepnąłem w środek jakiejś SIDowej wojny).


    Rafraf napisał:
    [...] Mozesz w ogole wytlumaczyc o co chodzi z tym 1bit music? to nie jest cos w stylu PWM na pc speaker przypadkiem?


    Najprościej po prostu wpisać "1-bit music" w przeglądarce i posłuchać. I tak, PC speaker pod to podchodzi. Dobre wytłumaczenie znajduje się tu: What is 1-bit music?

  • #27 21 Sty 2014 13:34
    bruno4
    Poziom 13  

    Od listopada minęło już sporo czasu a My nadal czekamy na więcej ! Gigantor czy są szanse w najbliższej przyszłości na wsad, pcb itd ...

  • #29 06 Sie 2017 00:35
    tekknado
    Poziom 9  

    Ja bym prosił o odnowienie tematu