Jump to content
IGNORED

SoftSynth 2 ?


tebe

Recommended Posts

Well .... there is no Font Size available to show how big my doubts are ;)

 

Now, come on.....didn't Sheddy's Space-Harrier have samples in it? That's graphics 7 too. I wonder how high his Samplerate is. I hope he reads this topic.

 

MY doubts are belonging to "MCS and PCM". GR.7 is another drawer .

 

only 3900Hz guys. think there'd be problems with 7800Hz with DLI's on as well, not that I've experimented much with sound.

 

 

Thanks, Sheddy :) ....my words

 

@Analmux

 

Try to think about using PCM at a max of 3900Hz for the "low" tones and using POKEYs Generators for the Hi tones. You can even use POKEYS Generators to give the "low" PCM Tones clean hi-toned Harmonics. Using clean octaves and playing the tunes "NOT" 2 or three octaves to high, POKEY won't "cry his Balls out" (quotation of Sack/Cosine)

Link to comment
Share on other sites

For those who can't play the last version of the player on a real machine or have crappy emulators: Here's an mp3 (though just 22.050 kHz in 64kbps mode)

 

http://www.phys.uu.nl/~bpos/mp3/play_dos.mp3

 

It's my real a8bit at work.

 

--------

 

@ Sheddy:

 

How did you generate the samples?

 

synced with DLI or wsyncs (kernels maybe??), or a pokey-timer??

 

In the above context we already discarded the pokey-timer option for two reasons:

-frequency byte is already used for normal channels (16bit and filter) so we can't have an independent audf samplerate.

-pokey-timer IRQs conflict with DLIs

 

That's why it would need to be implemented inside the DLI itself and synchronized with Wsync. Then I think it must be possible (I only think that  :ponder:  ). And it should run at 7800 Hz (50% cpu time = maybe overkill) instead of 3900 Hz (25% cpu time = maybe best balance for ingame music).

 

I had trouble with the WSYNC method, I found it was too easy to "lose" a whole scanline of time to it, if anything ran over, distorting the sound. At the moment I use code that constantly polls for VCOUNT changing. With a gr.7 type screen any DLIS using WSYNC can intermingle with the VCOUNT changes as long as the DLIS exits quickly after the WSYNC. Any VBI has to be kept to an absolute minimum as well.

 

Ideally, instead, as Swiety says, it should be possible to use a Pokey timer though I didn't have much success with that approach.

Link to comment
Share on other sites

I have another idea fo playing samples when screen is turn on.  

 

For up and down border i can play my routine on normal POKEY IRQ.  

POKEY IRQ triggering on 1.79 MHz Channlel - every 2 raster lines.  

Why 1.79 - because if most simply for cycling routine.  

I calculated - at line i have 114 cycles , by two lines 228 cycles , 9 for refreshing memory when screen is turn off. 8 cycles for starting IRQ.

 

Good idea, but then we loose one of the channels that otherwise could be used for a HiRes voice (16bit) or a filter. Then we can't have as much voices, like in Emkay's configuration: 2 HiRes 16bit/Filtered voices AND 2 PCM voices.

 

Another thing: A decent IRQ handler takes a lot of logic, as you'd have to check and clear IRQST. Everytime an IRQ takes place, we loose cycles for pushing P,PCL and PCH on the stack. Then, when we return from the interrupt we loose also a few cycles.

 

When the graphics starting i think that IRQ rutine must finish by STA $d40a and IRQ counter running at fastest speed.

 

??Do you mean; to be sure it will start at the right time at the bottom border of the screen?? I think it won't be needed: when we have a well defined IRQ rate we can keep it constant and we just disable AUDF1 (or other) timer in IRQEN when screen DMA is on (visible screen). And: Once the IRQ timer is synchronized correctly to the DMA scheme/wsync scheme you won't have to change a thing anymore, just by poking to $D209 at the right time (f.e. right after a wsync)

 

To generate IRQ every 228 cycles will definitely need a HiRes voice/timer (16bits).

 

Okay, then it's my turn to give a possible solution:

We make a very special DLIST, with blank lines on the top/bottom borders of the screen (Antic mode $90 = 2 bllank scanlines + dli). I hope, I didn't experiment with it yet, that will work. Then we let the DLIs trigger the Sample Playback routine.

 

When normal screen DMA is on, we can jump to the standard solution I described earlier: MCS/G2f + PCM = one big fullscreen kernel that stuffs registers.

Link to comment
Share on other sites

To generate IRQ every 228 cycles will definitely need a HiRes voice/timer (16bits).

 

As long as I remember You are wrong in 2 aspects:

-228 can be stored in one byte so You don't have to join the channels.

-the main frequency of POKEY is 1/4 of scan line, so writing 7 to AUDF will cause IRQ to fire after every 2 scan lines.

Link to comment
Share on other sites

  • 1 month later...
Swiety works, has own family

 

So he has a normal life? ;)

and codes something for the upcoming ZELAX demo.  8)   By the way,  I am about to help him with it (graphics side).

So I think, Swiety will come back to this subject yet but not very soon....

 

 

Any specs. for this demo you want to tell us? :D

Link to comment
Share on other sites

So he has a normal life?   ;)  

 

Yes, he does. :)

 

Any specs. for this demo you want to tell us?  :D

Well... what for? :roll:

I guess it will be decent DEMOnstration, maybe it will blow your hungry eyes with some neat fx-es... who knows :roll:

Let's wait for the QUAST party where it should probably be released.... ;)

Link to comment
Share on other sites

  • 3 months later...
Saint (Swiety) Look at new stuff from Quast party !  

Zelax demo is "Reditus" !  

What do you thing about softsynth at open screen ????

Great stuff, and it works on the real hardware also. Really impressive stuff.

I notice that of course Antic is now on and other routines are running :)

How much CPU is left when running the routine?

Link to comment
Share on other sites

When screen is opened all Cpu time is used for wait for end of line (sta $d40a) :( , but on border i swithed routine to pokey IRQ (only softsynth loop)

Other routines as orginal SID player, registry emulator and some more is running in normal loop. (It work 3-4 times slow than without IRQ)

 

This technique give you clean sound without metalic distorsions and if orginal SID routine not get a lot of time , you can run simply routine - exemple vertical scroller - At demo i copy all screen 1 line up !!!!! :)

 

Maybe at opened screen I can display TIP or RIP graphisc mode ???

I never try it . :?

Link to comment
Share on other sites

Saint (Swiety) This technique give you clean sound without metalic distorsions and if orginal SID routine not get a lot of time , you can run simply routine
It sure sounds the business, and there is time to run some (limited) routines :) wow.

 

Maybe at opened screen I can display TIP or RIP graphisc mode
Maybe in the next demo!

 

...if orginal SID routine not get a lot of time
Would it be possible to just use 1 channel of SID for say the deep synth sound. Would your routine then use less CPU time? Enough to do more complex routines or even Pokey music mixed?
Link to comment
Share on other sites

Would it be possible to just use 1 channel of SID for say the deep synth sound. Would your routine then use less CPU time? Enough to do more complex routines or even Pokey music mixed?  

 

It possibe but you must reload Pokey irq registry and its problem for synchronization when screen is opened (Pokey IRQ's is verry stupid - it give you only one shot timer, it can't give me continous irq events without reloading registry :twisted: that give a lot of distorsions because when antic stops Cpu (when refreshing memory or reading graphisc data) time for next irq is more than last event.

 

I think is good idea for do table of timer values for all screen lines (maybe 2 lines) (based on $d40b first for synchro, and counting events next) but this technique get a lot of cpu because on all irq's events you must read table of values and check table pointer!)

 

It verry dificult do this table for all screen because you must counting cycles whos get cpu and antic

You must do another table for another display list !

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...