eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingGeneracja N-kanałowego dzwięku na 1-bicie.Re: Generacja N-kanałowego dzwięku na 1-bicie.
  • Data: 2010-12-07 00:36:26
    Temat: Re: Generacja N-kanałowego dzwięku na 1-bicie.
    Od: "Grzegorz Plywacz" <b...@o...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]


    Użytkownik "Sebastian Biały" <h...@p...onet.pl> napisał w wiadomości
    news:idgrev$ce0$1@news.onet.pl...
    > Tak, to nie pomyłka, powrót do ZXSpectrum i PCSpeakera.
    >
    > Mam do dyzpozycji jeden bit którym mogę sterować blaszką piezo.
    >
    > Dzieki które dobywam mogą być raczej tylko jednobitowe - włącz/wyłącz.
    >
    > Czy ktoś może *pamięta* czy istniały jakieś algorytmy mieszania dwóch fali
    > prostokątnych o róznych częstotoliwościach aby uzyskac złudzenie dzwieku
    > dwukanałowego na tym jednym bicie? Wydaje mi się że produkcje na
    > ZXSpectrum potrafiły osiągać coś podobnego. Doskonale sobie zdaje sprawę z
    > nikłej jakości dzwieku, nie chodzi o jego podnoszenie (w szczególnosci nie
    > chodzi mi np. o filtr + pwm w celu osiągnięcia lepszych rozdzielczości).
    > Interesuje mnie jak na 1 bicie zmieszać dwie fale prostokątne w sposób
    > przyjemny dla ucha w stopniu w jakim przyjemne sa 2 fale prostokątne.
    > Zakładam ze 2 kanaly dadzą radę się przeskalowac na N.

    Zaciekawiło mnie ...

    To z czym masz do czynienia, to mniej więcej mieszanie dwóch (lub więcej
    sygnalow)
    na nieliniowym elemencie. W tym przypadku nieliniowośc polega na tym, że
    występuje
    obcięcie (0 albo 1). O ile generując jedną częstotliwość w wyniku dostaniemy
    mniej
    więcej to co nadalismy, to już w przypadku dwóch fal o częstotliwościach
    odpowiednio
    f1 i f2, dostaniemy f1 + f2, f1 - f2 plus cały szereg harmonicznych 2f1 +
    f2, etc...
    Harmonicznymi bym sie nie przejmowal :) Cała zabawa polega na tym, aby mając
    żadane dwie czestotliwości, które mają sie pojawić w widmie, dobrać te,
    który
    wygenerujemy. Np. chcąc zagrać 440 Hz i 1000 Hz nadamy np 720 i 280 Hz.
    Acha i jeszcze jedno, zrobiłem kilka eksperymentów i wychodzi mi, że
    najlepiej
    wygenerować poszczególne sygnały a potem przed wysłanie do piezo zrobić ich
    sumę modulo 2.
    Oczywiście w przypadku większej ilości fal sytuacja ma tendencje do
    komplikowania
    się w tempie geometrycznym :)

    A jakby kogoś interesowało, krótki kod w Matlabie dla zobrazowania:

    clear all;

    fs = 40000; % próbkowanie

    len = 5; % 5 sekund

    freqs = [720, 280];

    T = freqs .^ -1;

    s = zeros(len * fs, 1);


    for n = 1 : length(s)

    t = n/fs;

    s(n) = 0;

    for i = 1 : length(freqs)

    if mod(t, T(i)) < (T(i)/2)

    s(n) = not(s(n));

    end

    end

    end

    s = s - mean(s);

    plot(linspace(0, fs, length(s)), (abs(fft(s))));

    --

    G.Pływacz




Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: