Autor Wątek: Beeper i głośność  (Przeczytany 18095 razy)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Beeper i głośność
« Odpowiedź #15 dnia: 2011.12.17, 23:20:37 »
Tak wygenerowany dźwięk dalej będzie miał daną częstotliwość, np. 440 Hz, ale będzie się składał głównie z harmonicznych, a nie z tonu podstawowego -- im mniejsze będzie wypełnienie, tym wyższa jest częstotliwość harmonicznych, które jesteś w stanie usłyszeć.  Dzieje się tak, bo tak naprawdę nie jest generowany ton główny, np. 440 Hz, ale co 1/440 sekundy krótki ton o częstotliwości... 88000 Hz, trwający 1 okres, czyli 1/440*100/0,5=1/88000 s. Mózg "szłyszy" to jako ton 440 Hz, ale baaaardzo cichy + ton 88 kHz, którego oczywiście nie słyszysz, bo jest nie tylko nieszłyszalny, ale do tego czas jego trwania jest praktycnie niezauważalny poza oscyloskopem. [Ale już przy 10% wypełnienia ton 4400 Hz słychać wyraźnie + wszystkie harmoniczne.]

Przy 50-procentowym wypełnieniu fali kwadratowej harmonicznych głównego tonu, 440 Hz, nie usłyszysz albo nie rozróżnisz. One dalej są, dlatego fala kwadratowa ma charakterystyczny, metaliczny przydźwięk....

To jest to, i tak samo "usłyszał" te dźwięki edytor, który po konwersji dżwięku do .wav pokazał mniej więcej średnią amplitudę, a nie wszystkie składowe, które zostały "zgubione". Poza tym chyba edytory używają takiego algorytmu, aby wyświetlały tylko częstotliwości w zakresie słyszalności, i już sam format wav częściowo je eliminuje w zależności od częstotliwości samplowania (22/44/48/96kHz) - czym wyższa tym lepiej słyszalne są wysokie składowe.
"Czysta" fala kwadratowa, w powiększeniu wyglądałaby tak:
_____|─────|______|───── (nie znalazłem lepszego znaku graficznego dla "góry"),
natomiast przy prostym operowaniu wypełnieniem zapewne przypominałaby coś takiego:
_____|─|___________|─|____ główna freq. pozostaje taka sama, amplituda też ta sama, ale dźwięk odbierany jest 1/4 cichszy (czy tak?).
Przy procesorze 3.500.000 Hz w pełni zaangażowanym w konstrukcję fali możliwości zarówno operowaniem głośnością i barwą wydają się ogromne.
AY Music, ULA plus.

rafamiga

  • ***
  • Wiadomości: 215
  • Miejsce pobytu:
    Warszawa
Odp: Beeper i głośność
« Odpowiedź #16 dnia: 2011.12.18, 00:59:40 »
natomiast przy prostym operowaniu wypełnieniem zapewne przypominałaby coś takiego:
_____|─|___________|─|____ główna freq. pozostaje taka sama, amplituda też ta sama, ale dźwięk odbierany jest 1/4 cichszy (czy tak?).

Nie, dźwięk nie będzie o 1/4 cichszy. Będzie tak samo głośny jak dźwięk o częstotliwości 4 razy wyższej, ale grany co czwarty okres fali. 8^) Dopiero przy naprawdę małym wypełnieniu fali następuje efekt "ściszania", gdy wydaje się, że zanika ton podstawowy, a słyszalne są tylko częstotliwości harmoniczne, których głośność spada wprost proporcjonalnie do stosunku ich częstotliwości do tonu podstawego -- i to jeszcze stosunek jest wyrażany w dB, a to skala logarytmiczna.

Dalej jednak, taki "kwadrat" wypełniony tylko w 0,5% to dźwięk tak samo "głośny" jak zdrowy "kwadrat" 50-procentowy, bo amplitudy obu są identyczne.

Jedyny trop prowadzi do obserwacji zachowania mierników poziomu sygnału -- na zwykłym, cyfrowym mierniku szczytowym będziesz miał pełną amplitudę na obu dźwiękach, natomiast na mierniku VU, którego wskazania są bardziej adekwatne do wrażenia głośności odbieranego przez mózg, będzie to widoczne. Ale to typowe dla tego pomiaru -- im więcej w sygnale stanów nieustalonych, typu krótkie "piki", tym bardziej wskazania miernika VU będą różnić się wskazań od miernika szczytowego. I tu kapituluję, bo potrzebny jest rasowy akustyk, aby wytłumaczył dlaczego tak się dzieje, że "szpilka" 0,5% jest cichszsza od 50%, bo IMHO ani filtr, ani fizyczna bezwładność głośnika nie tłumaczą tego fenomenu. Niemniej, to działa. 8^)

Przy procesorze 3.500.000 Hz w pełni zaangażowanym w konstrukcję fali możliwości zarówno operowaniem głośnością i barwą wydają się ogromne.

I tak, i nie. Musiałbyś dokładnie wiedzieć z jaką częstotliwością "ładować" stany logiczne do wyjścia głośnika, aby zacząć sterować głośnikiem na zasadzie "to rusz się troszeczkę w dół". 1-bitowe przetwornika DAC robią to np. ze 128-krotnym oversamplingiem, co daje 6,144 MHz dla częstotliwości próbkowania 48 kHz [taką stosuje się w sprzęcie profesjonalnym; dla CD to nieco mniej]. A to już mocno poza możliwościami ZX.
« Ostatnia zmiana: 2011.12.18, 01:54:46 wysłana przez rafamiga »
--
rafamiga

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Beeper i głośność
« Odpowiedź #17 dnia: 2011.12.18, 01:27:44 »
Ja to narysowałem w ogromnym uproszczeniu, załóżmy że okres fali trwa 440Hz, i w pierwszym przypadku "czystej fali" przez 1/220sek podawane jest napięcie, przez drugie 1/220sek nie jest.
W drugim, które zacytowałeś, co 1/440 sek podawane jest napięcie, lecz np. przez 1/88000 sek,

albo jeszcze inaczej
przez pierwszą połowę fali, co jakiś określony czas podawany jest ten krótki impuls, przez drugie 1/220 sek oczywiście nic, coś takiego:
(pierwsze 1/220 sek |_____________________________________|____________________________________________|_______________ itd.)
(drugie 1/220 sek _______________________________________________________________________________________________________)

Bezwładność głośnika w tym wypadku nie ma znaczenia, gdyż chyba wszyscy słuchamy z wyjścia audio.

Cytuj
co daje 6,144 MHz dla próbkowania 48 kHz
- czyli Pentagon z Turbo 7MHz powinien sobie poradzić :)

Z wypełnianiem fali to jest coś podobnego do nakładania fal. W załączniku prosty przykład dla AY (nie dla beepera)
Program uruchomiony z tymi parametrami generuje standardową kwadratową falę w kanale A,
zmieniając w linii 35 wartość 15 na 16 (i RUN) na tą falę nałożona zostaje druga, piłokształtna - obie odtwarzane są w kanale A.

« Ostatnia zmiana: 2011.12.18, 02:14:34 wysłana przez Abrimaal »
AY Music, ULA plus.

Duddie

  • ****
  • Wiadomości: 402
  • Miejsce pobytu:
    Warszawa
Odp: Beeper i głośność
« Odpowiedź #18 dnia: 2011.12.18, 10:21:19 »
RC to filtr dolnoprzepustowy - masz rację. Zasada działania takiego pseudo-przetwornika C/A opiera się na tym, że kondensator ładuje się napięciem przyłożonym do jego elektrod - tym wolniej, im większa jego pojemność i większa rezystancja rezystora R. Niestety, proces ten nie jest liniowy, a wykładniczy. Ale im dłużej czekamy, tym większe napięcie - czyli, im większe wypełnienie impulsu, tym większe napięcie będzie na jego elektrodach.

Ładowanie kondensatora (zmiany napięcia Uc) teoretycznie przebiega wg wzoru:

Uc(t)=Ucc*e^(-1/R*C)

dla czasu t=RC, napięcie na kondensatorze osiąga:

 Uc(t=RC)=Ucc*(1-1/e) , co w przybliżeniu daje  0,632*Ucc.

Powyższy wzór jest prawdziwy jeżeli kondensator ładuje się od 0V (czyli był całkowicie rozładowany.

Rozładowanie kondensatora przebiega:

 Uc(t)=Uc0*e^(-1/RC)

Uc0 - napięcie początkowe na kondensatorze,

dla czasu t=RC, napięcie na kondensatorze osiągnie:

 Uc(t=RC)=Uc0/e=0.368*Uc0

e - podstawa logarytmu naturalnego = 2.7182818
ZX Spectrum 48K, ZX Spectrum+, ZX Spectrum 128K, ZX Spectrum +2/+3, Timex 2048, Unipolbrit 2086, FDD3000, Timex Terminal 3000, PlusD, Multiface 128, Multiface +3, divIDE Plus, IF1+microdrive