1

Witam , ostatnio przyszedł mi prosty pomysł do głowy jak generować PWM na POKEYU. Na razie moja teoria działa w praktyce.

Pomysł polega na tym żeby osiągnąc modulację współczynnika wypełnienia definiowaną przez użytkownika (czyt. muzyka).

Teoria wygląda następująco

1. Ustawiamy $d208 - na włączenie filtra - z dokumentacji technicznej pokeya wynika że jest on barmką AND między 1 a 2 kanałem.

2. Ustawiamy głośność i zniekształcenie filtrowanego kanału , 2 wyciszamy.

3. Tutaj ustawiamy właściwą częstotliwość kanału bazowego , na 2 kanale ustawiamy maksymalną częstotliwość - wpisujemy 1.

4. Resetujemy liczniki obu kanałów aby wystartowały równo - wpisując coś niezerowego do $d209

5.  Oba zaczynają liczyć razem od nowa  - wobec czego następuje cisza przez 1 okres licznika 1 i 2.

6. Odczekujemy n cykli zegarowych zanim ustawimy zegar 2 na częstotliwość zegara 1.

7. Otrzymujemy regulację wsp wypełnienia !

Rysunek:


1. ___---___---__

2. __---___---___

3. ___-_____-___

1. Fala 1 generatora , 2. Fala 2 generatora 3. Fala po filtrze (sumie)

Przykłądowy listing:

opt l-h+
org $0800

start lda #$8
wt cmp $d40b
bne wt
dec $d01a
sta $d40a

lda #$2     ; filtruj 1 - 2 gim
sta $d208

lda #0
sta $d207
lda #$ef
sta $d203

ldx #$ff   ; ta sama fala na 2 generatorach
stx $d202  ;
lda #1     ; 32 khz na 1
sta $d206  ;

ldy $ff

lda #$ff  ; resetuj kanaly
sta $d209 ; oba startują równo !


wt1 dey
bpl wt1

stx $d206
inc $d01a

lda $ff
clc
adc #1
and #63
sta $ff


jmp start

; jak na razie jeszcze nie wpadłem na wzór jak przeliczyć n w zależności od częstotliwości i wsp. wypełnienia .

Czekam na sugestię

2

...z takimi pomysłami to lepiej do Jaskiera - TMC2.0??? :D

Kontakt: pin@usdk.pl

3

a do czego sluzy PWM ??

modulacja współczynnika wypełnienia, z czym to zjesc ?

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

4

Za pomocą PWM mozna sterować silnikami (regulować ich obroty) albo wykorzystać jako bardzo prosty przetwornik C/A - na wyjscie trzeba podłączyć układ różniczkujący RC, wtedy w zalezności od wypełnienia uzyskujemy stałe (prawie) regulowane napięcie.
A do muzyki o jeszcze nie widziałem zastosowania ale może już czas i na to.....

5

A ja trzymam kciuki - za to i za SID-playera :)

GOOD LUCK!

I Ty zostaniesz big endianem...

6

teoria obwodow tu, uklady scalone tam.. : >

7

Sukkor_benoth : ok, normalnie PWM służy do sterowania serwomechanizmami, silniczkami itp. ale posłuchaj jakiejkolwiek muzyki z SID-a to zrozumiesz o co mi chodzi .

tebe: modulacja współczynnika PWM służy j.w ale np. SID od dawna wykorzystuje to do robienia jak w dokumentacji pisze "animującego się dźwięku" - w przypadku CMC takim instrumentem jest SYNTH ale niestety nie masz możliwości wpływu na szybkość i czas modulacji. Tam wynika ona z czegoś innego a dokładnie z efektu "dudnienia".

Oczywiście SID robi to sprzętowo i ma 12 bitowy rejestr do sterowania PWM.


Dokładnie PWM oznacza Pulse WIdth Modulation - czyli modulacja szerokości impulsu - co w praktyce oznacza że w przypadku fali prostokątnej mamy np.

____----____----____----____ 50 % (czyli tyle samo 0 co 1)
lub
_________________________ 0 %

_____--______--_____--____ 25 % wypełnienia

Oczywiście standardowo POKEY ma 50% - czyli na zmianę 0 i pełna głośność. Chodziło mi aby mieć możliwość sterowania przynajminiej od 0-50% w np. 16- 32 krokach co wystarczy do tworzenia ciekawych efektów ala C64. Niestety POKEY nie ma możliwości uzyskania od 50% - 100% poprzez generatory :( wynika to z budowy filtrów.
Jedyną rzeczą jest syntezowanie dźwięku poprzez timery na zasadzie SOFTSYNTHU poprzez sterowanie membramą.

Jak ktoś czegoś nie wie/nie rozumie to pisać a postaram się odpowiedzieć!

8

czyli napiszemy nowego SoftSyntha

1. edycja fali

wartosci, odzwierciedlaja wysokosc slupka 0..15 dla Pokeya, 0-255 dla Covoxa. W samplach 8-bit np. WAV sa wartosci od -127..128


1122334455665544332211

itd. w sumie 256 bajtow opisujacych fale

2. obwiednia, czyli glosnosc sampla

glosnosc to bedzie kilkadziesiat tablic, ktore odpowiednio beda modyfikowaly wartosci opisuajace fale

ldx fala,y
lda volume,x


ok. mamy juz edytor fali i obwiedni, teraz jakie operacje beda mozliwe na tak krotkich samplach :)?

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

9

swiety: nadal nie wiem do czego ci pwm - sprawnosc takiego generatura w zakresie 0-15% jest prawie zadna, stad w audio ucieka sie od takich konstrukcji, sprawnosc w okolichach do 100% jest rowniez zenujaca
generalnie to technike modulacji pwm masz we wzmacniaczach klasy D - tyle ze czestotliwosc kluczowania tranzystorow koncowych wynosi grubo ponad czestotliwosci audio (nawet do 1mhz)
powod ten sam - efektywnosc + THD, do tego musisz sobie dodac pasywne filtry dolnoprzepustowe zeby glosnik wysokotonowy zawalu nie dostal...
jesli zas chodzi o sid'a - popatrz sobie prosze na jakies dzwieki generowane przez ten uklad

wracajac do sedna - generowac pwm mozna, tylko ze zakres jego uzycia konczylby sie na plynnym rozjasnianiu/sciemnianiu zaroweczki - o audio mozna zapomniec

przechodze na tumiwisizm

10

No nie - przecież nie chodzi mi o sterownie żaróweczkami   :evil: ale odtwarzaniem dzwięków przypominających SID-a  - sprawność od 0-50 % przy prawie pełnym zakresie uzyskiwanych częstotliwości POKEYA chyba wystarczy do uzyskiwania ciekawych efektów. Po za tym to nie chcę odtwarzać sampli na PWMie , choć temat jest ciekawy ale wykorzystać to do playera do muzyki!
Eksperymentowłem z playerem do muzyki i efekt jeszcze nie jest taki jakiego do końca się spodziewałem ale wg mnie na tyle ciekawy że warto to wykorzystać. Są przy generacji tego niewielkie zakłucenia ale nie strasznie dokuczliwe.

Po za tym to Atari ma filtry dolnoprzepustowe na przedwzmacnieaczu , a wszystko testowłęm na dużych kolumnach i nie było problemów!


Niech może na ten temat wypowie się jakiś muzyk Atarowski lub lepiej z C64.


Jak ktoś nadal nie wie o co mi chodzi to proszę fragment dokumentacji do SIDa dotycząca rejestrów PWM:

PW LO/PW HI (Registers 02,03)
Together these registers form a 12-bit number (bits 4-7 of PW HI are not used)
which linearly controls the pulse width (duty cycle) of the pulse waveform on
Oscillator 1. The pulse width is determined by the following equation:

PWout = (PWn/40.95) %

Where PWn is the 12-bit number in the Pulse Width registers.
The pulse width resolution allows the width to be smoothly swept with no
discernable stepping. Note that the pulse waveform on Oscillator 1 must be
selected in order for the pulse width registers to have any audible effect. A
value of 0 or 4095 ($FFF) in the pulse width registers will poroduce a constant
DC output, while a value of 2048 ($800) will produce a square wave. [A value of
4095 will not produce a constant DC output].

A jak już jest ktoś dociekliwy to niech sobie zsampluje dźwięk typu SYNTH z Chaos Music Composera i zobaczy jaki ma przebieg !

11

a moze bys jakis przyklad do posluchania zamiescil ?

All I hear is the sound of me falling on the ground

12

Swiety podaj e-maila

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

13

Oto ostatnie ostrzezenie dla wszystkich:

Jeśli nie wiesz jakiego ktos ma emaila to zerknij na jakikolwiek jego post a ponizej zobaczysz cos takiego:

http://www.tkdami.net/~atari/email.gif

Jak klikniesz w ikonke email to otworzy sie twoj ulubiony program pocztowy z zaadresowana wiadomoscia. AUTOMATYCZNIE! SAMO! ZA DARMO!

Kolejne zapytania o mail poskutkuja odpowiednia kara.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

14

hmm pdoaj jakiegos linka aby to przesluchac...
Dely: a jesli chodzi o emaila to Swiety go nie ma:?

My tu gadu gadu, a dziewczyny w Ornecie nic cieplego w ustach od rana nie mialy:) <>

15

Dely spojrz lepiej pod posta Swietego, a nie zobaczysz tam ikonki e-mail

wiec do kogo kurfa te txty  8O

jeszcze jeden taki post Dely a posmaruje Twoja łysine odzywka do włosów  :lol:

p.s.
czuje sie dobrze i mam sokoli wzrok

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

16

przyklad jest tutaj
http://atariarea.histeria.pl/forum/viewtopic.php?t=1508

tyle ze tablicy glosnosci tam nie ma :) (wazy ponad 8KB)

brzmi to jak do-re-mi-fa-sol-la

zrobilem fale prostokata i trojkatna, ale zadnej perkusji nie uslyszalem, tylko jakby wybrzmiewajace nuty

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

17

...

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

18

Niech może na ten temat wypowie się jakiś muzyk Atarowski lub lepiej z C64.

A proszę... Jeśli uda się Wam zaemulować regulację wypełnienia pulsu, to odpadnie nam bardzo poważny argument za wyższością SIDa nad POKEY-em. Połowa charakteru muzyki z C64 mieści się w tej jednej możliwości... Polecam następujący przykład:
http://exotica.fix.no/tunes/archive/C64 … androm.sid
Wszyscy swego czasu srali po nogach słysząc intro - które leży wyłącznie na pooowoooluutkuuu modulowanym pulsie z lekkim delayem.

19

... Jeśli uda się Wam zaemulować regulację wypełnienia pulsu, to odpadnie nam bardzo poważny argument za wyższością SIDa nad POKEY-em.

Myśle, że się mylisz; bo to który z układów jest lepszy zależy od tego; kto co lubi. Jeśli więc dla kogoś beeper ze Speca będzie lepszy od Pokeya, czy (co gorsza :D ) SID'a; to i tak przyznam mu racje, bo każdy ma wolną wolę wyboru i prawo do posiadania własnych preferencji. Więc co miałeś na myśli kolego?? ... hehehe. Jeśli uważasz, że sid jest lepszy odpowiem Ci: Tak, masz rację, lecz i tak msx pisać będę na pokeya.

Gud_boj!! :D  :D  :D

Kontakt: pin@usdk.pl

20 Ostatnio edytowany przez tebe (2018-05-05 10:36:32)

PWM i sample blisko 7bit-owe na POKEY-u

http://atariage.com/forums/topic/278463 … periments/

a tutaj, C64 i sample 8-bit

http://www.hotstyle64.com/pl/issues/5/o … 20na%20c64

C64 i 48kHz

http://brokenbytes.blogspot.ch/2018/03/ … r-for.html


p.s.

Candle  posypiesz głowę popiołem ? ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

21

POKEY HiFi  :)

8bit sample na POKEY-u

http://atariage.com/forums/topic/244946 … 8-bit-pcm/

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

22

Genialna sztuczka! 8-bit na dwóch kanałach.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

23

wydaje mi sie na 3 kanalach ale to bez znaczenia. efekt jest powalajacy...

ale to bez znaczenia, na standardowym atari wykonali to co jeszcze pare dni temu bylo do zrobienia tylko minimum na covoxie ?

http://atari.pl/hsc/ad.php?i=1.

24

Na dwóch, bo wydaje mi się, że z rozpędu Autor użył AUDC2 do zgrubnego ustalania poziomu membrany, a mógł to zrobić  za pomocą AUDC3 (sprawdziłem, ale odsłuch mogę uskutecznić obecnie tylko na emulu). Tak więc na jednym POKEY-u można generować dwa sample 8-bit parami: AUDC1+3 oraz AUDC2+4.
Ech dlaczego sam na to nie wpadłem, żeby pikiem generować podpoziomy na drugim kanale :]

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

25

zwróciliście uwagę że post 'kool kitty 89' z pomysłem na który powołuje się Xuel został opublikowany w 2015, trzy lata zajęła realizacja ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C