logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Nechciany przester w cyfrowym efekcie gitarowym

Wodzmen 29 Mar 2011 11:58 1251 2
REKLAMA
  • #1 9336262
    Wodzmen
    Poziom 10  
    Robię multiefekt gitarowy na zestawie ADSP BF533 EZ-KIT Lite i zawiesiłem się w dwóch miejscach:

    Pierwszy problem polega na tym, że wszędzie słychać przester. Żeby nie wchodzić w szczegóły: Próbki całkowite z wejścia zamieniam na zmiennoprzecinkowe z przedziału <-1.0; 1.0>, po przekształceniach z powrotem zamieniam próbki na liczby całkowite i wysyłam na wyjście. To działa dobrze, efekt "clean" w żaden sposób nie zniekształca dźwięku. Przester i fuzz można pominąć, bo to najprostsza sprawa. Problem pojawia na przykład przy efekcie "echo". Jakiekolwiek operacje na próbkach, choćby dodanie echa długości 5 ms powoduje przesterowanie. Zapis i odczyt z bufora przebiega prawidłowo, bo zwykłe opóźnienie bez echa daje czysty dźwięk, przesterowanie pojawia się tylko kiedy próbuję nałożyć na siebie (dodać) dwa sygnały. Używam sumy ważonej, więc nie ma problemu z przekroczeniem wartości progowych próbki.

    Drugi problem to głośność. Sygnał "czysty", czyli w żaden sposób nie zmodyfikowany, jest o wiele bardziej cichy niż ten sam sygnał potraktowany np. fuzzem. Macie jakieś pomysły, jak z tego wyjść?

    Mam nadzieję, że udało mi się wszystko opisać tak, jak trzeba.

    Dzięki z góry za pomoc.
  • REKLAMA
  • #2 9344411
    jarekz_2
    Poziom 16  
    Wodzmen napisał:
    (...)Problem pojawia na przykład przy efekcie "echo". Jakiekolwiek operacje na próbkach, choćby dodanie echa długości 5 ms powoduje przesterowanie(...)

    Jedyne co mi przychodzi do głowy to to, że zakres liczb używanych do obróbki wynosi dokładnie -1 ... +1, tak jak zakres próbek wejściowych, bez rezerwy. Wtedy wiele operacji spowoduje nasycenie albo i gorsze błędy.
    Spróbuj ograniczyć zakres liczb do np. -0,1 ... +0,1, mnożąc próbki wejściowe przez 0,1. Sprawdź czy wtedy wystąpi przesterowanie przy „echu“.
  • #3 9399236
    Wodzmen
    Poziom 10  
    Po kłopocie.
    Okazało się, że popełniłem błąd przy zamianie wartości próbek z liczb całkowitych na zmiennoprzecinkowe i odwrotnie - wyczytałem, że kodek jest 24-bitowy i tak traktowałem przychodzące próbki przy ich skalowaniu i zamianie wartości. Wystarczyło obchodzić się z nimi jak z 16-sto bitowymi i wszystkie opisane przeze mnie problemy zniknęły.

    jarekz_2 - dzięki za próbę pomocy!:)
REKLAMA