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

pianino elektroniczne

tarrant 08 Cze 2005 21:30 2560 6
  • #1 08 Cze 2005 21:30
    tarrant
    Poziom 2  

    witam użytkowników tego forum.

    studiuję na pw i na zaliczenie przedmiotu 'mikrokontrolery 8051' otrzymałem zadanie zaprojektowania pianina elektronicznego opartego na mikrokontrolerze ww. rodziny. niestety, ów przedmiot nie jest moją mocną stroną, dlatego prosiłbym o pomoc. wiem, że dla doświadczonego elektronika będzie to kilkanascie minut wyjętych z życiorysu =).

    chodzi o prosty układ zawierający klawiaturę kilkuoktawową, wyświetlacz lcd, wyjście midi i dwa głośniki.

    kilka pytań (mogą być zabawne, w końcu jestem laikiem =)):

    - czy da się to w ogóle zrobić używając pojedynczego mikrokontrolera? sześciooktawowa klawiatura w układzie matrycowym zużyje 17 pinów µC, do tego jakieś klawisze sterujące, wyświetlacz lcd afaik 4 lub 8, do tego midi i głośniki...

    - jak wykonać wyjście midi? gdzieś przeczytałem, że wystarczy jeden pin, na który podaje się trójbajtowe sygnały note_on i note_off.

    - czy do podłączenia głośnika wystarczy przetwornik C/A między głośnikiem a µC, czy rozwiązanie jest bardziej skomplikowane?

    0 6
  • #2 09 Cze 2005 03:56
    Paweł Es.
    Pomocny dla użytkowników

    Czy chodzi o klawiaturę sterującą przez MIDI istniejącym modułem brzmieniowym ?
    Czy też o pełną syntezę dźwięku ?
    Czy jedno- czy wielogłosową ?
    Klawiatura dynamiczna (z przeniesieniem prędkości uderzenia klawisz) czy bez ?

    MIDI to interfejs szeregowy z izolacją optyczną. Pracuje z prędkością 31250 bitów/s ±1%, jeden bit startu, jeden stopu, 8 bitów danych.
    Jężeli w bajcie jest ustawiony najstarszy bit to jest to rozkaz, jeżeli nie to dane.
    Dane > 127 rozbijane są na dwa bajty po 7 bitów danych (czyli zakres 14 bitowy - np Pitch Bender)

    Ilość przesyłanych bajtów danych zależy od rozkazu, jeżeli dane nie są przesyłane to co max. 300 ms trzeba wysyłać kod Active Sensing sygnalizujący odbiornikowi, że łącze jest drożne.
    Itd.

    To dość rozbudowany projekt. Jeden uP nie wyrobi się z obsługą klawiatury i przetwornika C/A. W ogóle do syntezy dźwięku używa się procesorów DSP (zwykłych lub specjalizowanych), bo jest zwykle masę obliczeń (np. próbkowanie 22,32,44,48,50 kHz, 16 bitów).
    8051 nie nadaje się specjalnie do syntezy dźwięku (za wolny) a już na pewno nie wielogłosowej.

    0
  • #3 09 Cze 2005 04:55
    tarrant
    Poziom 2  

    dziękuję za odpowiedź.

    temat projektu dostałem sformułowany nastepująco: "electric piano" i to wszystko. jestem w trakcie pisania pracy inżynierskiej (dla jasności, zajmuję się programowaniem obiektowym, nie elektroniką), sesja etc i jakoś umknęło mi, aby udać się do wykładowcy w celu uściślenia projektu, tak więc wszystko muszę dośpiewać sobie sam =)

    założyłem, że chodzi o pełną syntezę dźwięku, bez wrażliwości na dynamikę uderzenia klawisza. muszę jedynie opracować schemat połączeń elementów układu bez pisania oprogramowania.

    na czym dokładnie polega proces syntezy dźwięku? czy dołączyć zewnętrzny generator 12 częstotliwości dla najwyższej oktawy, które µC mógłby dzielić w zależności od wciśniętego klawisza (np. A w piątej oktawie - dzielimy wzorzec dla A przez 2 etc).

    może jednak dołączyć pamięć EPROM z zapisanymi próbkami?

    ponieważ raczej powinienem zastosować mikrokontroler z rodziny 8051, który byłby najlepszy?

    może wypisuję bzdury, ale jest już późno =)

    edit1:
    w innym wątku przeczytałem:

    Cytat:
    Do tego '51 tylko po co zewnętrzna pamięć? Czy te durnowate asystenty na uczelniach się nigdy nie nauczą, że technika idzie do przodu? Pokazali takim "geniuszom" system na '51 20 lat temu gdzie byla zewnętrzna pamięć i do dziś się nie mogą niczego innego nauczyć...


    czyli wewnętrzne pamięć mikrokontrolera w zupełności wystarczy do zapamiętania próbek? mógłbym założyć, że pianino to pianino, a nie keyboard z tysiącem brzmień, wtedy musiałbym zapamiętać 72 próbki (6 oktaw)...

    0
  • Pomocny post
    #4 09 Cze 2005 18:15
    Paweł Es.
    Pomocny dla użytkowników

    [quote="tarrant"]dziękuję za odpowiedź.

    założyłem, że chodzi o pełną syntezę dźwięku, bez wrażliwości na dynamikę uderzenia klawisza. muszę jedynie opracować schemat połączeń elementów układu bez pisania oprogramowania.

    Odczyt dynamiki uderzenia w klawisz odczytuje się z czasu przejścia styku związanego z klawiszem pomiędzy stykami stałymi - im jest dłuższy tym słabiej nacisnięto klawisz.


    na czym dokładnie polega proces syntezy dźwięku? czy dołączyć zewnętrzny generator 12 częstotliwości dla najwyższej oktawy, które µC mógłby dzielić w zależności od wciśniętego klawisza (np. A w piątej oktawie - dzielimy wzorzec dla A przez 2 etc).

    Taką metodę to się stosowało w organach elektronicznych i to starych.
    (Najpierw były oddzielne generatory, najwyższej oktawy, potem jeden generator z zespołem dzielników dzięki czemu się tony między sobą nie rozstrajały, a teraz stosuje się generatory cyfrowe (symulacja programowa).

    Synteza może być addytywna gdy przebieg składamy z sinusoid (lub innych przebiegów sinusoidopodobnych) o częstotliwościach będących całkowitymi wielokrotnościami tonu podstawowego (harmoniczne).
    W prostszym przypadku względne amplitudy poszczególnych sinusoid są stałe w czasie (stała barwa dźwięku). W bardziej skomplikowanym każda składowa ma oddzielnie kształtowany przebieg czasowy amplitudy (dynamiczna zmiana barwy).

    Synteza substraktywna - każdy głos ma jeden lub więcej generatorów wytwarzających przebiegi bogate w harmoniczne (piła, prostokąt 50%, prostokąt o mniejszym wypełnieniu, przebieg impulsowy). Sygnały wyjściowe tych generatorów są mieszane (można też dodać szum biały lub różowy) i podawane na filtr najczęściej dolnoprzepustowy z regulacją dobroci (dzięki czemu można zrobic podbicie na charakterystyce filtru dla częstotliwości granicznej (niektóre filtry mogą być regulowane aż do wzbudzenia, dzięki czemu mogą stanowić dodatkowy generator instrumentu. Z wyjścia filtru sygnał wchodzi na wzmacniacz o regulowanym napięciem wzmocnieniu, który pozwala kształtować obwiednię amplitudową sygnału.
    Z filtrem i wzmacniaczem współpracują jeden lub dwa generatory obwiedni. Jeden decyduje o zmianach widma w czasie (przez przestrajanie filtru "przycinającego" sygnał z generatorów) a drugi przebiegiem amplitudy.
    Generatory obwiedni mogą być typu prostego - dwa zbocza - atak i zanikanie lub bardziej skomplikowane (od 4 do 8 parametrów regulowanych). Przebieg obwiedni jest sterowany sygnałami z klawiatury (informacja o wciśnięciu i zwolnieniu klawisza) W bardziej skomplikowanych urządzeniach szybkość uderzenia w klawisze czy też ich zwalniania może modyfikować czasy trwania poszczególnych faz obwiedni.

    W instrumentach tzw. próbkujących (samplingowych) generator odtwarza fragmenty oryginalnych przebiegów instrumentów z pamięci stałej.
    W najprostszym przypadku jest to pojedyńczy okres przebiegu fazy ustalonej dźwięku. W złożonych instrumentach zapisywane i odtwarzane są fragmenty ataku, fazy ustalonej i fazy zanikania dźwięku.
    Ponieważ sygnały te zmieniają się z częstotliwością dzwięku na skali muzycznej i np. siłą uderzenia to zapisuje się próbki dla każdego klawisza oddzielnie (w tym dla kilku sił uderzenia) a potem odtwarza się sygnał za pamięci stosując płynne przenikania (wiele jest różnych metod polepszających jakość odtwarzania - zwykle opatentowane).

    W prostszych instrumentach próbki są zmieniane co kwintę lub tercję.
    Zmiana częstotliwości jest dokonywania przez zmianę kroku (ułamkowego) odczytu z pamięci ROM (RAM). Próbki leżące pomiędzy próbkami znajdującymi się w pamięci są uzyskiwane przez interpolację.

    Takie skokowe zmiany próbek mają tę wadę, że przy zmianie prędkości odtwarzania próbki przesuwają się naturalne formanty instrumentalne (np. wynikajace z konstrukcji instrumentów muzycznych) co powoduje niekorzystne zmiany barwy dźwięku.

    -----------------------------------------------------------------------------------
    może jednak dołączyć pamięć EPROM z zapisanymi próbkami?
    -----------------------------------------------------------------------------------

    Można ale czym ją Pan będzie odtwarzał, 8051 jest dość wolny poza tym nie wykonuje mnożenia (regulacja amplitudy) odowiednio szybko (pomijam już fakt, że to 8 bitowe mnożenie) ?

    .

    0
  • #5 09 Cze 2005 19:05
    tarrant
    Poziom 2  

    Cytat:
    Można ale czym ją Pan będzie odtwarzał, 8051 jest dość wolny poza tym nie wykonuje mnożenia (regulacja amplitudy) odowiednio szybko (pomijam już fakt, że to 8 bitowe mnożenie) ?


    to może 8051 wykorzystam tylko i wyłącznie jako kontroler klawiatury, natomiast samplowanie i sterowanie przetwornikiem C/A powierzę innemu mikorokontrolerowi (np. jakiemu?) - w ten sposób wilk będzie syty i owca cała =)

    Cytat:
    W najprostszym przypadku jest to pojedyńczy okres przebiegu fazy ustalonej dźwięku. W złożonych instrumentach zapisywane i odtwarzane są fragmenty ataku, fazy ustalonej i fazy zanikania dźwięku.


    czyli do wygenerowania dźwięku wystarczą zapisane 4 jednobajtowe wartości opóźnienia, ataku, podtrzymania i zanikania oraz zmapowana w pamięci sinusoida, wszystko dla każdego klawisza - jeśli dobrze zrozumiałem?

    co oznacza rozdzielczość przetwornika C/A? ilość bitów w przetwarzanej próbce? czy 12 bitów da jakąkolwiek akceptowalną jakość dźwięku?

    jeszcze raz dziękuję za odpowiedź.

    0
  • #6 10 Cze 2005 12:49
    Paweł Es.
    Pomocny dla użytkowników

    "to może 8051 wykorzystam tylko i wyłącznie jako kontroler klawiatury, natomiast samplowanie i sterowanie przetwornikiem C/A powierzę innemu mikorokontrolerowi (np. jakiemu?) - w ten sposób wilk będzie syty i owca cała =)"

    8051 może służyć jako kontroler klawiatury i wyświetlacza. Ale co do procesora zajmującego się syntezą to musi Pan najpierw oszacować wymagania co do niego na podstawie następujących parametrów:

    - częstotliwość próbkowania sygnału wyjściowego
    - ilość jednocześnie odtwarzanych kanałów
    - ilość operacji potrzebnych na jedną próbkę sygnału wyjściowego (dostępów do pamięci, dodawań, mnożeń z uwzględnieniem szerokości słowa, przesłań).



    Cytat:
    W najprostszym przypadku jest to pojedyńczy okres przebiegu fazy ustalonej dźwięku. W złożonych instrumentach zapisywane i odtwarzane są fragmenty ataku, fazy ustalonej i fazy zanikania dźwięku.


    czyli do wygenerowania dźwięku wystarczą zapisane 4 jednobajtowe wartości opóźnienia, ataku, podtrzymania i zanikania oraz zmapowana w pamięci sinusoida, wszystko dla każdego klawisza - jeśli dobrze zrozumiałem?

    Sama sinusoida da raczej efekt dźwięku smutnej fujarki pastuszka,
    Wartości parametrów obwiedni mogą być zapisane w jednym bajcie bo i tak potem są mapowane (wykładniczo na rzeczywiste wartości czasów (przyrostów) - syntezator ma regulacje czasów od 1 ms do 10 s.

    Ważne jest też coś innego. Jeżeli zapisujemy w pamięci po jednym przebiegu sygnału wzorcowego dla róznych częstotliwości to trzeba pamiętać, że przebieg złożony składa się z tonu podstawowego i harmonicznych. Aby dźwięk nie był zniekształcony to muszą być zachowane warunki twierdzenia o próbkowaniu, tj. najwyższa składowa przebiegu złożonego musi mieć częstotliwość mniejszą niż 0.5*fp gdzie fp częstotliwość próbkowania przebiegu wyjściowego. Wynika z tego, że poszczególne spróbkowane przebiegi w miarę wzrostu częstotliwości ich odtwarzania muszą mieć co raz bardziej obcięte pasmo (przed próbkowaniem).


    co oznacza rozdzielczość przetwornika C/A?

    Zapis cyfrowy polega na przybliżeniu ciągłego przebiegu analogowego przebiegiem schodkowym o określonej możliwej do uzyskania minimalnej
    wysokości schodka. Pomiędzy kolejnymi wartościami mogą być róznice wysokości wynikające z całkowitej wysokosci schodka.

    Cały zakres napięć wyjściowych dzielimy na ileś poziomów określajacych rozdzielczość. Ilości poziomów wyrażają się potęgą liczby 2:

    8 bitów -> cały zakres napięć dzieli się na 256 poziomów (od -128 do +127)
    12 bitów -> 4096 poziomów (-2048 do 2047)
    16 bitów -> 65536 poziomów (-32768 do 32767)

    wysokość schodka (kwant przetwornika) wynosi:

    q=Uz/N

    Uz - zakres napięć (od najbardziej ujemnego do najbardziej dodatniego)
    N - ilość poziomów =2^(ilość_bitów)

    Napięcie wyjściowe przetwornika C/A
    Uwy=q*m

    gdzie

    m - liczba całkowita od -2^N do +(2^N)-1




    "ilość bitów w przetwarzanej próbce? czy 12 bitów da jakąkolwiek akceptowalną jakość dźwięku?"

    Spokojnie, pierwsze instrumenty używały przetworników 8 bitowych. Do potrzeb takiego projektu spokojnie wystarczy 12 bitów.

    Nie wiem czy nie będzie lepiej wykorzystać komputerową kartę muzyczną i tylko nią sterować.

    Synteza dźwięku to bardzo rozbudowana dziedzina wiedzy i wymagająca dużych mocy obliczeniowych.

    Wybrał Pan sobie złożony temat nie mając pojęcia o tej dziedzinie.


    Proszę sobie poczytac poniższe materiały:

    http://sound.eti.pg.gda.pl/student/sdio/p/sdio4.pdf
    http://www.cyber.com.pl/archiwum/9/9.shtml

    0
  • #7 10 Cze 2005 14:00
    tarrant
    Poziom 2  

    dziękuję za pomoc.
    tak się składa, że to nie ja sobie go wybrałem, ale został mi narzucony. nie mam w zwyczaju porywania się z motyką na słońce i zakres własnych możliwości znam.

    0