Hej, Nie jestem specem od dźwięku, więc pewne kwestie ciężko mi zrozumieć. Ile różnych przebiegów dźwięku może wygenerować Atari? W jednym miejscu znalazłem, że szum i prostokątny. W Innym: ->link<- jest podane:
POKEY has 6 waveforms: $0x - pink noise, can use 9-bit $2x triangle $4x - 5 plus 4 bit ... two iterations $8x - white noise, can use 9-bit $Ax - square wave $Cx - saw wave, 2 iterations
Three clocks: 64 khz, 15 khz, 1.79 mhz
Four filters: Hi pass (2 --> 0, 3 --> 1) 16- bit (0 --> 1, 2 --> 3) Reverse 16-bit (1 --> 0, 3 --> 2) Two tone (1 --> 0)
I teraz, czym jest tajemnicze "$4x - 5 plus 4 bit ... two iterations", bo jak widać czegoś brakuje?
I czy mówienie o 4 filtrach nie jest trochę naciągane? Czy dobrze mi się zdaje, że jedynym prawdziwym filtrem jest hi pass (też nie jest to pełny analogowy filtr, wieć takim pseudo filtrem) a reszta jest trochę naciągana? Czy jednak te dodatkowe byście potraktowali też jako filtry i dlaczego?
I na koniec o SIDdzie mówi się, że jest to cyfrowy sytezator z analogowymi filtrami (hybryda). Natomiast, czy dobrze się orientuje POKEY nie ma analogowych filtrów? Czy też należałoby go określić jako cyfrowy syntezator z analogwymi filtrami?
Mało kto mi tutaj przyzna rację, ale parametrycznie SID wypada zdecydowanie lepiej. Przede wszystkim daje większe możliwości, nie fałszuje i bliżej mu do profesjonalnych syntezatorów :)
Majstersztykiem ostatnio była muzyka i efekty z konwersji Super Mario Bros, które brzmiały jak oryginalny NES :)
A w skrócie: - 3 tone generators (voices), frequency 0-4 kHz (16 Bit decomposition) - 4 forms of waves (sawtooth, triangle, rectangle pulse width modulation, (white) noise /rush) - 3 amplitude modulator, until 48 dB - 3 envelope generators - Synchronization of the oscillators - Ring modulation - Programmable filters (low pass, bandpass, high pass) - Master volume in 16 steps - Random generator - Audio input (cannot be used for sampling, but the signal can be routed through the SID filter)
SID to prawdziwy syntezator w chipie, następna wersja poszła do kiborda Ensoniq ESQ-1 (kuuuurna, mogłem taki za $100 kupic, ale nie miałem $100 akurat :((((((( )
$4x and $Cx have two waveforms: mod 3 and non mod 3. In $Cx they are known as RMT C and RMT E. In $4x you use these with the 1.79 mhz clock but they work like $Cx
It's normal usage lets you increase note resolution. But if you reverse it (play channel 0 and silence 1) it makes interesting effects. You can get 25% pulse wave in $Ax distortion and warbling guitars in $4x
Two tone filter SKCTL=$8B also has interesting uses too.
Nadal jestem trochę zagubiony... Czy dobrze mówię, że POKEY ma standardowo szum i przebieg kwadratowy a dodając zniekształcenia można osiągnąć coś podobnego do piły, trójkąta?
@Alex, czy POKEY też ma synchronizację oscylatorów? Wydaje mi się, że tak, ale z pewnymi ograniczeniami.
Jestem wychowany na Commodorku od VC-20,Ale jeśli chodzi o brzmienie,to Sid jest bardziej mięki niż Pokey.Pokey w moim odczuciu jest bardziej taki cyfrowy.I tak jak pisałeś wcześniej muza w konwersji Super Mariana jest super.I mam takie odczucie,że Pokey by nie wydolił(jego brzmienie jest za twarde).
@itguyinaction może napisz, o co Ci chodzi, bo jak widać różne techniczne odpowiedzi, które dostajesz tu i na fb Cię nie satysfakcjonują. Pewnie chcesz zrobić jakieś porównanie w filmiku na swój kanał, ale to naprawdę ciężko porównać - na pewno SID od samego początku powstawał jako syntezator dźwięku, POKEY generuje dźwięki na sposób absolutnie nie-muzyczny, ale inżynieryjny i w pewnym sensie jest rozwinięcięm TIA z A2600. Przypuszczam, że podstawowym zadaniem POKEY'a było generowanie efektów dźwiękowych - przecież wczesne gry Atari nie miały muzyczek w ogóle! Przez te 30+ lat ludzie nauczyli się cuda z tych chipsetów wyciągać i jakieś zestawionko "tyle i tyle oktaw, filtry takie i śmakie" nie powie zupełnie nic o tym, co się da na tych chipach zagrać. Zobacz, dopiero kilka lat temu goście tacy jak makary i triace zaczęli na serio używać "audio clock" 15kHz, co otwarło nowy rozdział w basach :]
poza tym to wszystko jest "moot point", bo już w latach 80. powstał Softsynth, który "generuje sample", w latach 90 playery mod'ów z Amigi a w dwutysięcznych emulator SIDa (demo Reditus Zelaxów), więc jak się ma czas procka to można na pokeyu zagrać "prawie wszystko".
@pirx, przejrzałeś mnie. :) Poważniej cały czas nie dają mi do końca te przebiegi. Wiem, że w wielu miejscach pisze, że dwa: szum i prostokątny i finito. Ale cały czas nie daje mi spokoju wspomniany post, do którego dawałem linka. Pamiętam, że jeszcze w daaaaaawnych czasach, czyli ze 35 lat temu dorwałem jakąś książkę (teraz już za chiny nie mogę skojarzyć jaką, nawet szukałem w różnych tytułach, ale zupełnie nie mogę skojarzyć, może to był jakiś tytuł robiony prawie na ksero jak to w dawnych dziejach), gdzie dość dokładnie był opisany POKEY. W większości ksiąg jest zwykle napisane, że 10 i 14 przy zniekształceniach dla POKEY daje czysty dźwięk, a reszte eksperymentuj i koniec. A w tamtem publikacji było to opisane duuuuużo dokładniej. Pamiętam, że tłumaczono sposób działania tych zniekształceń i że dzięki temu można otrzymać inne przebiegi, nie idealne ale całkiem znośne. Były dwa rodzaje szumu to na pewno i kilka przebiegów. Instrukcja Altirry do której nawiązujesz też niewiele pisze. W zasadzie nie widzę nigdzie dokładnego opisu jak te różne zniekształcenia i różne dane wpisane do generowania zniekształceń wpływają na finalny przebieg. (A jeśli to gdzieś jest to podaj proszę dokładną stronę).
Zresztą gdybyś mógł jasno odpisać, bo ciągle unikasz jasnej odpowiedzi, czy z POKEY po odpowiednim ustawieniu zniekształceń, da się uzyskać przebieg zbliżony do trójkątnego czy piły, czy też nie?
Bo dla mnie sprzętowe możliwości POKEY to nie to jaki sygnał generuje jeden element (czyli szum i prostokątny), tylko co finalnie można otrzymać z całego układu (czyli po przejściu przez element dodający zniekształcenia).
P.S. Tu jest jakiś niby emulator POKEY. Nie wiem na ile dobry, ale też podaje możliwość uzyskania wielu różnych przebiegów nie tylko tych dwóch ->link<- i jeszte tu ciekawa dyskusja ->link<-
@pirx, jeszcze może spróbujmy wspólnie przeanalizować tę instrukcję od altirry.
Wydaje mi się, że kluczowy jest fragment ze strony 89-90:
Waveform selection Bits 5-7 of AUDCx control the waveform used by the audio circuitry for a channel. This allows each channel to produce a flat level (no output), a square wave, or a more complex wave driven by the polynomial noise generators. Bit 5 selects either noise (0) or a square wave (1). When the square wave is enabled, each time the timer expires and the output circuitry is clocked, the output toggles, resulting in a square wave with a frequency half that of the timer. When noise is enabled, bit 6 selects either the 9/17-bit generator (0) or the 4-bit generator (1). Bit 7 controls the sampling mode. If it is set, the timer output directly clocks the output waveform. If it is cleared, however, the 5-bit generator masks out some of the clock pulses, omitting pulses that would cause the output to toggle or sample the 4/9/17-bit noise generators. This gives a rougher sound. Due to the short periods of most of the pseudorandom noise generators, it is possible to have undesirable interactions between the period of the countdown timer and the period of the noise generator. For instance, a channel using the 64KHz clock and an AUDFx value of $CC has a period of 5740 clocks. When used with the 4- bit noise generator, five different sounds can result because the 4-bit generator has a period of 15 and the timer period is divisible by 5, meaning that only three bits of the pattern are used. Exactly which three are used depends on when the sound is started. In a more extreme case, $D1 would produce no noise at all, because the period is 5880 clocks, which is divisible by 15 – meaning that it will always sample the same bit from the noise pattern
Ja to rozumiem tak.
Bit 5 wartość 0 szum wartość 1 przebieg prostokątny
ale dalej jeśli bit 5 = 0 to dwie opcje bit 6 ma wartość 0 generator 9/17 bitów wartość 1 generator 4-bitowy
czyli mam już tak naprawdę dwa rodzaje szumów, ale instrukcja ich nie nazywa, wygląda na to, że tu chodzi zapewne o szum biały i różowy, niech mnie ktoś mądrzejszy poprawi. Tak by zresztą potwierdzały podane przez tego gościa wartości $0x i #8x. Pytanie jeszcze czy jakoś możemy wpływać na te generatory?
Czyli póki co mamy już 3 możliwe przebiegi.
Ale teraz mamy jeszcze bit 7. wartość 1 dźwięk idzie bez zmian, czyli prostokątny, co znów potwierdza podana przez tego gościa wartość $Ax wartość 0 i tu zaczyna się zabawa to dzwięk wynikający z tego co napisano wcześniej jest modyfikowany jakimś 5-bitowym generatorem maskującym. I generalnie instrukcja altirry za dużo o tym nie mówi. Czy te "maski" pozwalają jakoś zmodyfikować przebieg prostokątny by uzyskać coś więcej? Wspomiane w przytoczonym poście przebiegi trójkątny i piłokształtny? I czy tą maskę może jakoś zdefiniować programista?
Z podanych wartości przez tego gościa wydaje się, że zabawa 0 w bicie 7 oraz bitem 4 (hi pass filter, też nie prawdziwy a oszukany pseudo filtr) pozwala właśnie na przebiegi trójkątny i piłokształtny. Jestem ciekawe czy tak jest. Pewnie nie są to idealne przebiegi, ale coś zbliżonego.
$8x distortion samples a 17-bit pattern. This produces white noise. $0x adds a 4 bit sampling to it, which makes pink noise.
If you set last bit of AUDCTL, the 17-bit sampling gets changed to 9-bit, which produces a more regular pattern. It's especially useful musically in $8x distortion with 1.79 mhz set, you get a set of two scales ... one of them has a differing timbre every 7 frequencies, so it behaves like the $Cx distortion with it's timbre change every 3 steps.
As for oscillator sync: This is done through the wrongly named hi-pass filter. You set bit 2 (for channels 2 and 4) or bit 3 (for channels 1 and 3). In both channels, set the same frequency, $Ax distortion on the first channel and silence the second one. By delaying the start of second frequency, it puts the oscillators out of phase and lets you have variable duty cycle. So you put 0 in second channel for a number of cycles, and then play the frquency you want. If you are in 15 khz mode, it takes longer to sync the oscillators.
If you have frequencies offset by 1 step, you get a swirling sound, like in SID. Interesting things also happen if the second frequency is up or down an octave or two, or up and down by 5 semitones.
The $2x distortion (AUDC=$2x) does produce a sort of triangle wave, but with a lot of resonance. It's really different from triangle on the NES 2A03 chip.
$Cx as mentioned above also does saw waves, and it's dependent on the frequency you used, due to the way the 5-bits in this setting are sampled.
There are other ways to get saw waves, but they require some advanced programming of POKEY. One method I came across, is by setting 1.79 on first and third channels, and engage hi-pass (AUDCTL=$64) and use the $Ax distortion. at ultra high frequencies, the oscillators are manipulated so fast that they will produce very nice saw waves. You can get up into C7 range without tuning errors, but as you get down into 2nd to 3rd octave, a high pitched sound artifact appears.
Najprościej jak można. POKEY to chip logiczny (logika 0-1, 0V-5V) zbudowany na bramkach (w dużym uproszczeniu) Pokey generuje randomowe liczby (17, 9 lub 5 bitowe) wg standardowego algorytmu (mamy parametry do tego algorytmu). Ostatni z tych bitów idzie na wyjście. Kropka. Przebiegi są ZAWSZE prostokątne + jakaś tam na tym LOGIKA CYFROWA
ALE. w wyniku nakładania dźwięków generatorów powstają dodatkowe tony różnicowe. I te tony mogą być sinusoidami zwlaszcza, jeśli bazowe tony puścimy w ultradźwiękach. To zwykła fizyka, nie właściwość POKEYA. Używane w kilku demkach i grach.
Zupełnie innym tematem jest cyfrowa synteza bez używania generatorów.
I jeszcze jedno mi przyszło, czy ten prostokątny przebieg z wypełnieniem 50% (square) jest na pewno taki, czy może być ogólnie inny prostokątny z innym wypełnieniem?
Unmodified, it is always a 50% square. Modifying it through the hi pass filter will change the pulse width. And there's other ways of shaping the sound too.