-
Content Count
2,271 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by ivop
-
Now that sounds like a cool trick. Let us know how it works out
-
Good observation. Once the extra bit is used, 7x7 might work even better, if that doesn't inflate lookup tables.
-
I would go for 4x4. You know, multiples of two, easier to match and compare to
-
Duh. That was not the point. The Taylor Dane part shows how three oscillators playing their own freqeuncy, at a bare 100Hz update rate, can create pretty convincing human voices. Other examples were less convincing, but still you hear some interesting sounds during Kraftwerk. Anyway, consider ooooh, aaaah, iiiiih, eeeeh, uuuuh, backing vocals at 800Hz. With the voice of Taylor Dane
-
Found it! This is 100Hz updates of just the frequencies of three oscillators. No samples. Imagine 800Hz updates on certain channels pokey, with a backing track at 50Hz
-
If the interleaving allows that, that would be the answer! 9 streams, 2 at high speed, 7 at 50Hz (PAL). Yeah, it might be difficult to find escape sequences that always work. HARDbass has the advantage that the RMT player is still running. It can act on certain RMT instruments, which is not possible with a SAP-R or LZSS compressed streams. Hence the idea of escape sequences. Perhaps the different volume only modes could be (ab)used for this. $10-$1f is just volume only, but $30-$3f, $50-$5f etc..., could be used to signal that a certain tone generator should be enabled (ORA #$A0 for example). You can easily create an RMT instrument that only uses volume only values for AUDC. This could be done on Pokey, too: https://www.youtube.com/watch?v=lHjn8ffnEKU Currently, higher update frequencies are mainly used for percussion and drums, but it could also be used for modulations in the higher frequency range. Edit: Sorry, this is not what I meant. There's a C64 demo that uses its programmable sound generators to generate several frequencies that were present in the original sample. Can't find it, but I'll keep looking But that's something that could also generate interesting sounds at 200+Hz. Modulating higher freqeuencies.
-
Atari and Commodore versions on SAME side of a floppy
ivop replied to ldelsarte's topic in Atari 8-Bit Computers
Interesting. As they both run a 68k, I suppose it should be possible to detect if one is running on an ST or Amiga. Do Amiga disks use the same FAT12 boot sector? Otherwise, it could become tricky. -
Incroyable. They managed 10:30am First mistake I noticed: it was pretty dumb to do black on yellow. Now my "serial number" window is completely black, which is pretty hard to write on Next, I need to separate the ROSSH part (hacksaw or boxknife), and then start soldering the switches! Edit: BTW considering the DHL prices (see two posts above), I was surprised to see a DHL guy at the door, because I ordered FedEx! Edit2:
-
Well, they took a bit longer. So that's a ride from Hangzou, China, to Shanghai Airport, several scans, flight to Sennan in Japan, flight to Grace-Hollogne (which is Luik/Liege) in Belgium. That's just across the border of Maastricht, but no, it was flown to Paris, France(!) Apparently it's now in transit again. I assume to Amsterdam, The Netherlands ? They say they'll deliver it at my doorstep within 10 hours from now. I'm off to bed
-
Sure, but I thought that was a given
-
Perhaps you can have two separate LZSS streams? One for channel 2-4 at 50/60Hz, and one high speed stream for channel 1. Another option is to just run your LZSS player at 50/60Hz, but use escape sequences (i.e. certain AUDF/AUDC combinations that make no sense) that trigger a parallel waveform player that is run every x scanlines.
-
I think he means commands for glissandos, vibrato, and arpeggios at 16-bit resolution with AUDCTL linked channels. This is something RMT does not support.
-
This explains your Spectrum experience Yesterday, for the first time in my life, I watched a Spectrum restoration video on YouTube, and they specifically tested several points to assure powering on the board wouldn't fry it Interesting stuff. And they totally recapped the board.
-
Darn, there already was a Liz Project? That would have been the name of choice for my next hardware project About the C, MOS indeed had 6502 A/B/C which meant 1/2/4MHZ. The 6502C version never really got any foothold. With "our" 6502C, i.e. Sally, C means Custom. It's a 6502B with extra transistors for the /HALT line. The early Atari 400/800 models used a 6502B, with the HALT circuitry external to the CPU.
-
Here they are pretty cheap, and no need for huge quantities. If I'm not mistaken (to lazy to lookup) this is the same store I bought the non-angled versions for Project Jenny. Both 2x7 and 2x15 are available. Edit: just checked, it is indeed the same store.
-
RMT2LZSS: convert RMT tunes to LZSS for fast playback!
ivop replied to rensoup's topic in Atari 8-Bit Computers
Tried different waveforms: GENWAVEFORM .macro mem, label, x org :mem .def waveform:label = * ; SQUARE ::x dta $1f ::x dta $10 ; SAW ;::x*2 dta $1f-(#*16/(:x*2)) ; SINE ; dta sin($18, 7, :x*2) ; TRIANGLE ;::x dta $10+(#*16/(:x)) ;::x dta $1f-(#*16/(:x)) .def len_waveform:label = * - waveform:label .endm Note that this uses a 48 byte waveform, or less, down to 26 bytes. Replay rate is 975Hz (PAL). All maximum volume. Square wave: sounds pretty good. Could also be used as a subwoofer channel. Saw wave: similar, but you can still hear some aliasing. Sine wave: horrible bass IMHO. Slightly higher, it still might be useful. Triangle wave: see sine wave main.s main-saw.xex main-sine.xex main-square.xex main-triangle.xex -
RMT2LZSS: convert RMT tunes to LZSS for fast playback!
ivop replied to rensoup's topic in Atari 8-Bit Computers
Proof of concept with varying window sizes. AUDF1 = $d200 AUDC1 = $d201 AUDCTL = $d208 WSYNC = $d40a VCOUNT = $d40b NMIEN = $d40e _frac = $e0 _cnt = $e1 GENWAVEFORM .macro mem, label, x org :mem .def waveform:label = * ::x dta $1f ::x dta $10 .def len_waveform:label = * - waveform:label ; should be 2*:x .endm PLAYWAVEFORM .macro x, int, frac _index = *+1 lda waveform:x :+16 sta WSYNC ; 8=1950Hz, 16=975Hz, PAL sta AUDC1 lda _frac add #:frac sta _frac lda _index adc #:int cmp #len_waveform:x bcc less_than sec sbc #len_waveform:x less_than sta _index .endm LOOPWAVEFORM .macro x, int, frac loopwave PLAYWAVEFORM :x, :int, :frac lda VCOUNT bne loopwave :+8 inc _cnt bpl loopwave lda #0 sta _cnt .endm ; 12 tones, 12-TET GENWAVEFORM $4000, 0, 24 GENWAVEFORM $4100, 1, 23 GENWAVEFORM $4200, 2, 22 GENWAVEFORM $4300, 3, 21 GENWAVEFORM $4400, 4, 20 GENWAVEFORM $4500, 5, 19 GENWAVEFORM $4600, 6, 18 GENWAVEFORM $4700, 7, 17 GENWAVEFORM $4800, 8, 16 GENWAVEFORM $4900, 9, 15 GENWAVEFORM $4a00, 10, 14 GENWAVEFORM $4b00, 11, 13 ; GENWAVEFORM $4c00, 12, 12 ; octave org $5000 main lda #0 sta _frac sta _cnt sta NMIEN sta AUDCTL sta AUDF1 LOOPWAVEFORM 0, 1, 0 LOOPWAVEFORM 1, 1, 0 LOOPWAVEFORM 2, 1, 0 LOOPWAVEFORM 3, 1, 0 LOOPWAVEFORM 4, 1, 0 LOOPWAVEFORM 5, 1, 0 LOOPWAVEFORM 6, 1, 0 LOOPWAVEFORM 7, 1, 0 LOOPWAVEFORM 8, 1, 0 LOOPWAVEFORM 9, 1, 0 LOOPWAVEFORM 10, 1, 0 LOOPWAVEFORM 11, 1, 0 LOOPWAVEFORM 0, 2, 0 LOOPWAVEFORM 1, 2, 0 LOOPWAVEFORM 2, 2, 0 LOOPWAVEFORM 3, 2, 0 LOOPWAVEFORM 4, 2, 0 LOOPWAVEFORM 5, 2, 0 LOOPWAVEFORM 6, 2, 0 LOOPWAVEFORM 7, 2, 0 LOOPWAVEFORM 8, 2, 0 LOOPWAVEFORM 9, 2, 0 LOOPWAVEFORM 10, 2, 0 LOOPWAVEFORM 11, 2, 0 LOOPWAVEFORM 0, 1, 0 jmp * run main Note that this is by no means tuned to anything. It plays samples at 975Hz, and the intervals are all the twelve notes in an octave that work without fractions. Tuning means calculating compromises between window size and int.frac increments. main.s main.xex -
Do you measure under load (i.e. connected with the computer turned on) or just the unloaded output? In any case, 5.82V sounds a bit high.
-
It could be nice to also create an Android/Linux or iOS version
-
RMT2LZSS: convert RMT tunes to LZSS for fast playback!
ivop replied to rensoup's topic in Atari 8-Bit Computers
I did some test, and without proper resampling on the Atari side, the round-robin 256 bytes at different speeds at such a low sample rate, simply doesn't work. It causes a LOT of aliasing. Code: AUDF1 = $d200 AUDC1 = $d201 AUDCTL = $d208 IRQEN = $d20e WSYNC = $d40a NMIEN = $d40e _frac = $e0 org $4000 waveform :128 dta $1f :128 dta $10 main sei lda #0 sta _frac sta NMIEN sta IRQEN sta AUDCTL sta AUDF1 loop _index = *+1 lda waveform :16 sta WSYNC sta AUDC1 lda _frac clc adc #$00 ; frac increment sta _frac lda _index adc #$08 ; int increment sta _index jmp loop run main It only works with common dividers of the sample window. Try changing the integer increment, or add a fractional part, and you'll hear what I mean. The cause is that you are basically doing a very crude resampling if you use an increment to "hop" through your sample window. A solution is to use varying window sizes for each of the twelve notes per octave. Lower octaves can be achieved by stepping slower through the window, with half the increment/fraction/hop size. Or, trigger an IRQ at AUDF frequency, step through one fixed window byte by byte, but that'll mean interrupts are fired all over the place, depending on the frequency of the tone played. Edit: BTW, if you wonder, turning off DMACTL does not have any effect. -
No, you are right. I missed/forgot that particular board that adds another bunch of resistors. As you say, redundant. And it even slightly decreases the response time
-
RMT2LZSS: convert RMT tunes to LZSS for fast playback!
ivop replied to rensoup's topic in Atari 8-Bit Computers
@rensoup how do you synchronize a 800Hz replay routine? Seems hard to me. There's a reason HARDbass is 1950Hz on PAL, without sacrificing an IRQ timer. $ bc 312*50/8 1950.000000 312/8 39.000000 312*50/16 975.000000 312/16 19.500000 312*50/24 650.000000 312/24 13.000000 Playing a sample once every 8 scanlines. 312 scanlines are exactly 39 times 8 scanlines. Playing one sample every 16 scanlines, resulting in a 975Hz replay rate, does not fit in 312 scanlines. It's 19 and a half period. Once every 24 scanlines fits again. -
The resistors are current limiters, in case of shorts. All models have them on the motherboard, except for the 600XL. They have a small PCB insert which has the resistors on it, before it goes to the mylar.
-
Your link points back to AtariAge https://sourceforge.net/projects/cc65extra/files/
-
True, but that's much easier to fix again. Or wait for this to be tested and working https://atariage.com/forums/topic/304492-xl-keyboard-technical-drawings/?do=findComment&comment=4808864 That'll be just flat cables going to the motherboard. I'm also considering a small adapter board similar to @tf_hh 's KEYCON project: https://atariage.com/forums/topic/270312-new-tiny-project-keycon-keyboard-adapter-for-xlxe/ A very small 0.8mm PCB with a pin header, for those who can't or won't desolder the keyboard edge connector.
