-
Posts
127 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Community Map
Posts posted by F#READY
-
-
Best wishes for 2019 to all!
-
1
-
-
Excellent! Watching now

-
Great Miker! Love it!

-
Looking forward to a great 8-bit invasion!
Hope some more people from NL will join us

Freddy.
-
1
-
-
What is the reason to have smaller files? For long term preservation it's best practice to keep the files close to the source (the raw dumps).
Derived files (e.g. ATX, PRO) can be used for testing and as publication format for emulators.
Or maybe I'm missing something?
-
@AtariNerd: what Keatah said. Actually it is tested with the most common XL rev.2 OS as documented in the readme

https://github.com/FreddyOffenga/outlove/blob/master/README.md
-
1
-
-
SAMPLING By The Gatekeeper Last issue, there where three great articles about sampling ( by AlphaSys and Frankenstein ! ) This time I would like to tell some more. 6-Bits play routine? -------------------- First of all, I would like to give some more details about the, which Frankenstein called, 6-bit play method which I also used in my MOD-Player. Within the Pokey chip, the four audio channels are mixed together like this: Channel1--| | Channel2--| |------Audio Out Channel3--| | Channel4--| This way, if Channel1 has a volume of 15 and Channel2 one of 15 ( 3 and 4 are zero ) the Audio Out has a volume of 30 ! A little math tells us that 4 channels of 16 different volumes can give us 4*16=64 different Audio Out volumes. Right! Well, not exactly. :-) C1:15 C2:00 C3:00 C4:00 C1:00 C2:15 C3:00 C4:00 C1:00 C2:00 C3:15 C4:00 C1:00 C2:00 C3:00 C4:15 have the same Audio Out. O.K. then it's three less. You still have 61 different output values. Alas, the XL isn't fast enough to output four values at 'almost' the same time. Take a look at this :-Q LDA C1 LDX C2 LDY C3 STA $D201 STX $D203 STY $D205 LDA C4 STA $D207 The fourth channel is 'poked' to the right value 9.03 ms after channel one. In practice this turned out to be too slow... This means the XL can only use up to three channels which gives 46 different output values. Here they are: C1 C2 C3 Result --------------- 00 00 00 00 01 00 00 01 02 00 00 02 . . . . . . . . 14 00 00 14 15 00 00 15 15 01 00 16 <-- !!! 15 02 00 17 15 03 00 18 . . . . . . . . 15 14 00 29 15 15 00 30 15 15 01 31 <-- !!! 15 15 02 32 15 15 03 33 . . . . . . . . 15 15 14 44 15 15 15 45 This is not 6-bits but LOG(46)/LOG(2) = 5.52 bits. This is very unhandy. For example, take the MOD-Player. It has four channels, playing a sample in a resoltion of 4 bits. 4*(2^4) ends up into 64 different combinations, which needs 6 bits to be played without quality loss. Sadly, we only have 5.52 bits... We have to calculate 6 bits into 5.52 bits with this formula : X=6-bits value Y=5.52-bits value Y = X / 64 * 46 Well, try this in Machine Language, and you'll be happy if you get a replay speed of 1 kHz ! Solution : Look-Up Table !!! The Look-Up Table ----------------- You build up three tables, one for each channel, containing 64 values, the values that have to be played for that 6-bits combination. Then, a certain sample can be played by this small routine : TABLE1 EQU $2000 TABLE2 EQU $2040 TABLE3 EQU $2080 PLAY LDX VALUE LDA TABLE1,X PHA LDY TABLE3,X LDA TABLE2,X TAX PLA STA $D201 STX $D203 STY $D205 RTS VALUE DFB 0 On Side-B you'll find a small Turbo-Basic program which builds up these three tables. It'S briefly documented, so I won't tell anything more about it here... Oversampling ------------ Frankenstein mentioned the term oversampling in his theory article. I really agree with him, that the meaning of it is getting vague. A lot of people use it in a different context and don't tell what they actually mean. I'm sorry to say, but to my opinion, Frankenstein is also wrong. He combined two subjects into one. The method of calculating values between to samples and the result of that, having a higher replay frequency. Let's get a clear mind ! (?) Oversampling : When you digitaly record an audio signal, with a frequency spectrum ranging from 20 Hz to 20 kHz, the theory of Nyquist tells us you need a recording frequency of at least 40 kHz. Two times the highest input frequency that is. Now, it's called oversampling when the samplefrequency is not twice the input frequency, but e.g. 5 or 10 times. It's used to lessen the terrible effect of high frequencies. But what about that calculating of values between two taken samples ? Well, that is called interpolation. CD-Players use interpolation technics to 'recover' lost data. Take this situation. An (imaginairy) 2-bits CD-Player has read the following values : A 11|* *l ^ 10|** *o * | 01|** **s** 00|*****t** ---------- abc --> t After the second occurance of %11, the player wasn't able to regain the sample information. Now it can just play the %11 again ( 0-order ), but it can also calculate the so called 'expected value'. b = ( a + c ) / 2 This is interpolation of the first order. ( Lineair Interpolation. ) There are also higher order interpolation technics using logarithmic functions, sines and cosines etc. As Freddy told us, it's possible to calculate all averages of two samples, and play this one between the two known samples. The resulting data-stream has to be played twive as fast as the original, that results in 1 time oversampling. Processing the 1 time oversampled data stream once again results in 2 times oversampling etc. Analog Filters -------------- With two components, a resistor and a capacitor, you can filter out either low and high frequencies. Take a look ate the following two schemes : ---- In -----| R1 |-------- Out ---- | | ___ ___ C1 | | GND _figure 1_ ||C1 In -----||------------ Out || | - | | |R| |1| | | - | GND _figure 2_ Figure 1 will push down high frequencies above a certain f(R,C) and figure 2 pushes down all frequencies below f(R,C). f(R,C) = 1 / ( 2*pi*R*C ) e.g. R=1K C=10 pF --> f=15.9 kHz All frequencies above or under 15.9 kHz will be pushed down. Digtal Filtering ---------------- First of all, you don't need to use oversampling for digtal filtering. It's based on taking not a 100% of the next sample taken. That way, high frequencies will fade away. You can simulate both RC-Filters seperately, but not together. The essention of this algorithm is to add only a fraction of the new sample to a fraction of the old one. Watch this :-) a=1/2 b=1/2 (-: Last Sample New Sample Calculated... (Y) (X) (aY+bX) 128 140 134 134 (!) 144 139 139 151 145 145 143 144 Mention that a+b=1 and a>=b. All quick changes of amplitudo will dissapear. The imaginairy f(R,C) is very low when a>>b. To simulate the other RC-filter, bY has to be subtracted from aX. ( aX - bY | a+b=1 v a>=b ). All sorts of exotic filters are possible. Modulation Technics ------------------- There is a whole range of different modulation methods. Named here are only a few... PAM - Pulse Amplitudo Modulation %11 |* %10 |** %01 |*** %00 ----- abcd PPM - Pulse Place Modulation Pls | * * * ----------------- a b c d PWM - Pulse Width Modulation Pls |*** ** * ----------------- a b c d PNM - Pulse Number Modulation Pls |* * * * * * --------------------------------- a b c d PCM - Pulse Code Modulation Pls |*** * --------- a b c d PAM is used on our XL/XE and so it is on ST(E)'s, Amigoes, MSX(2) and C64s. You can generate and n number of pulses, all with a different amplitudo. IBM compatible PC'S could use PAM, but they only have one bit and can therefore only generate block-waves. But wait a minute, all the other modulation technics only require two states. ( Pulse or no pulse ! ) That's why MOD-Players on PC use PWM. They just vary the width of the pulse. Be carefull, every pulse, no matter the length of the one before, starts at a certain frequency! Offcourse, there are a lot of disadvantages. The frequency of the starting points have to be very high so that one pulse sounds like PAM. Luckily the PC sound producer is VERY VERY BAD. It isn't able to produce sounds higher than 8kHz, therefore a starting point frequency of about 10 kHz is fine. Still you need at least a 12 MHz AT. Imagine you want an 4-bit play routine. The length of one period is 16. ( e.g. 15 times 1 and one time 0. ) Now the replay rate of all zeroes and ones is 160 kHz !!! ( This is still slow compared to the 2.56 MHz for an 8-bits player !!! ) Probably you think, why do you tell me this ? Our XL/XE is much too slow for this ! Then I must admit that you are right, but this last paragraph about modulation is not meant to be used in practice on an XL. It's just some more theoretical background. Maybe it inspires somebody to get one of these modulation technics working on a XL. ( What about some external hardware, producing a 1-bit PWM output from an 8-bit paralell digital input ? ) Well, this is the end. ( Finally. ) Let me tell you this, Frankenstein, I can secure you that there were two people that liked your article. ( Me and you that is ! ) I hope we like this one also ! Editor: Yes, I liked it. Thanx!Hehe, nice! Megazine #5 and #6 had some good articles about sampling

http://www.ataripreservation.org/websites/freddy.offenga/megazine/
-
yep good one. I guess if I would try to program this scroller, my version would easily fill up 48 KB. At this point I would consider to switch off OS to gain some extra 10 KB or so

I wonder how the approach works. First to make it run and then as small as possible? Or smallest possible right from the beginning?
Thank you

Usually I have a crude idea for something which I "think" would fit. The first step is to make it work and not care too much about clever tricks (which would make the code less understandable). Then optimise it and come to the conclusion it won't fit. Sometimes the next day after a good night sleep more optimisations will pop up. Eventually it's like optimising until it fits or come to the conclusion the idea simply won't fit.
But it doesn't end there. When it fits, there is this urge to add more. E.g. when it has no sound, I want to add a bleep or two.
So, we are lucky there are demo compo's with a deadline, otherwise one could go on forever adding, changing, optimising

-
2
-
-
Hi,
My 128 bytes entry for Outline 2k18 can be found here:
https://demozoo.org/productions/186763/
Due to wrong Altirra config. by the organisers I had to put it in the Wild compo, but still happy with the result...
-
16
-
-
Happened to me too. Heartbreaking...
-
1
-
-
LOL, very nice one!

Congrats MaPa and PG.
-
Correction: the Amiga should be considered the little brother and the VCS is the big brother for both

-
2
-
-
Was great fun again! Thanks to all the invaders who helped to make this event happen for the 3rd time.
Special thanks to SenorRossie for the organisation, decoration and lots of Atari stuff on display. Very cool

-
2
-
-
I've send this topic link to Bernhard Senior, so he and his family can read all the comments made here...
-
16
-
-
Would like to see a chameleon with NTSC palette.
Sorry, really bad joke

-
Ah ok. Did not see any references but also did not compare or check anything.
I can imagine there's new info after my last update which was decades ago

-
@Heaven: do you know on which platform(s) the oxyron docs are based (c64?). Did my share of investigating the subject, but lost track of any progress.
http://www.ataripreservation.org/websites/freddy.offenga/illopc31.txt
-
@Mathy: LOL, yes that maybe a bit too much interface

MidiBox? Hehehe
-
What about 'MIA'. Midi Interface Adapter or Midi Interface Atari.
-
MegaMidi (not to be confused with MegaMindy)
MidiMe (as in; c'mon midi me!)
MidiMidiMidi (if you like Buck Rogers)
Midiasynth
...
-
2
-
-
Love it!

-
NTSC? Don't hold your breath

-
3
-
-
Hi,
Here's my entry in the Silly Venture 16K (filesize) compo.
Only works on PAL (sorry!).
https://demozoo.org/productions/180955/
A bit info:
- 15 images, 30K compressed to 10K
- ivop mode grayscales
- music by Miker 5K compressed to 3K
- code and text about 2K
Had a really good time at the party!

Freddy.
-
9
-
-
Excellent! You got my vote


Another unreleased hard fx found - 256 col Twirl/warp
in Atari 8-Bit Computers
Posted
Very interesting and cool find!