OricExos - making the impossible

Want to discuss about Demos on the Oric, here you are !
User avatar
Symoon
Archivist
Posts: 1619
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: OricExos - making the impossible

Post by Symoon » Tue Feb 19, 2019 9:56 pm

Chema wrote:
Tue Feb 19, 2019 9:28 pm
Dbug wrote:
Tue Feb 19, 2019 9:05 pm
not like the horrible full separation audio of the Amiga
I know a few who would hang you for this comment :lol:
And yet I couldn't agree more with Dbug ;)
But I think we both had an Atari ST before having an Amiga, so our opinion might be a little biased :p
(although I don't like at all this 'war spirit' between machines)

User avatar
Chema
Game master
Posts: 2437
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OricExos - making the impossible

Post by Chema » Wed Feb 20, 2019 11:43 am

The retro computing group I mostly participate in (here in Spain) seems to have the war between Atari ST and Amiga settled. Everyone now enjoys both machines, and has allied to fight a common enemy: the PC :lol:

I must say I recently got my hands on an Amiga 500 and I was completely surprised with what that machine can achieve. And the sound of the Paula is incredible for its time... I guess it was the best sound of the home market computers until SoundBlaster 16 arrived (at least, though Gravis UltraSound was wow, both in quality and in price).

But I went completely off-topic here... sorry :)

User avatar
ibisum
Wing Commander
Posts: 1089
Joined: Fri Apr 03, 2009 8:56 am

Re: OricExos - making the impossible

Post by ibisum » Wed Feb 20, 2019 2:09 pm

>How would you use the mixer?

I'd set the levels of each Oric according to my needs as a musician according to the composition.

>I can see how having a user selectable global volume would be useful, but a user selectable mixing would be a headache for the programmer

A) I wasn't aware you're planning on having more than one programmer or user out there with OricExos hardware .. ;). B) Having a 4-part multitimbral Oric synth is really for us musicians/composers - thus having individual mix channels for each voice is highly valuable.

User avatar
Dbug
Site Admin
Posts: 2909
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug » Wed Feb 20, 2019 7:57 pm

chema wrote: I know a few who would hang you for this comment :lol:
I'm not saying that the Amiga has horrible sound, just that the non merged stereo is horrible, specially with a headset: There's a reason why pretty much every single Amiga game or music disk you can find on Youtube has been remastered with correct stereo with each channel blending in the other side.
ibisum wrote:
Wed Feb 20, 2019 2:09 pm
>How would you use the mixer?
I'd set the levels of each Oric according to my needs as a musician according to the composition.

>I can see how having a user selectable global volume would be useful, but a user selectable mixing would be a headache for the programmer

A) I wasn't aware you're planning on having more than one programmer or user out there with OricExos hardware .. ;). B) Having a 4-part multitimbral Oric synth is really for us musicians/composers - thus having individual mix channels for each voice is highly valuable.
Oh, you mean by program? Sure.
I was just looking at the picture you linked, which had potentiometers to adjust that.
Software programmable volume for each chip is fine, that would even allow things like cross fading between the chips, what I'm against is user selectable mixing using actual physical controls.

User avatar
ibisum
Wing Commander
Posts: 1089
Joined: Fri Apr 03, 2009 8:56 am

Re: OricExos - making the impossible

Post by ibisum » Thu Feb 21, 2019 1:16 pm

>Software programmable volume for each chip is fine, that would even allow things like cross fading between the chips, what I'm against is user selectable mixing using actual physical controls.

Sorry for the confusion - I am actually *pro-* having actual physical controls, but this is because I'm a musician/composer and for me thats sort of a vital aspect of instruments these days. But, anyway, was just an idea ..

User avatar
Dbug
Site Admin
Posts: 2909
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug » Thu Feb 21, 2019 2:26 pm

Sorry for the confusion - I am actually *pro-* having actual physical controls, but this is because I'm a musician/composer and for me thats sort of a vital aspect of instruments these days. But, anyway, was just an idea ..
Oh but i can totally see the point of physical controls while creating something, heck, I bought a jog controller to make it easier to navigate in the timeline when making videos.

My point is about the user watching what you did: You don't want to give them access to a way to wreck everything you painfully adjusted.

If you want physical controls, I believe the way it should be done is by having two separate things:
- Software programmable mixers, that can easily be adjusted by program in real time, or simply loaded from previously stored settings
- Some extern physical controls that you can use during the creation phase to adjust all these software elements

That's pretty much how most DAW equipment and software work these days :)

User avatar
ibisum
Wing Commander
Posts: 1089
Joined: Fri Apr 03, 2009 8:56 am

Re: OricExos - making the impossible

Post by ibisum » Thu Feb 21, 2019 10:33 pm

So how are the audio signals going to be handled - summed? I could imagine a 4-voice polyphonic Oric synth with summed signals might have some distortion/drive issues, or at least .. I'd hope that would be the case.. ;)

Can't wait to see more demos of Exos! Every time there's news, I think of the effort to replicate it.. An ExosSynth would be super neat.

User avatar
Dbug
Site Admin
Posts: 2909
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug » Fri Feb 22, 2019 10:17 pm

ibisum wrote:
Thu Feb 21, 2019 10:33 pm
So how are the audio signals going to be handled - summed? I could imagine a 4-voice polyphonic Oric synth with summed signals might have some distortion/drive issues, or at least .. I'd hope that would be the case.. ;)
I'm just a software guy, all I know is that on the AY the volume from 0 to 15 on one channel results in a voltage from 0 to 1 volt, and that if you get the three channels together you end up getting from 0 to 3 volt... non linear because of the log volume values.

Just summing the chips would mean that we would get only one quarter of the volume if we play only one machine, so probably not optimal, an actual mixing would be nice, but then we indeed risk to get clipping or saturation.

Suggestions on how to achieve the mixing are welcome, all I care is about predictability and ease of use, which is why I'd like the Master Oric to be basically behaving like a normal Oric: Mono at a standard volume so normal software runs the same, then we can have the other ones play in stereo to complement.

User avatar
NekoNoNiaow
Flight Lieutenant
Posts: 271
Joined: Sun Jan 15, 2006 10:08 pm
Location: Montreal, Canadia

Re: OricExos - making the impossible

Post by NekoNoNiaow » Fri Mar 01, 2019 4:21 am

Chema wrote:
Tue Feb 19, 2019 9:28 pm
Dbug wrote:
Tue Feb 19, 2019 9:05 pm
not like the horrible full separation audio of the Amiga
I know a few who would hang you for this comment :lol:
As your local Amiga fan, I must confess that the Amiga audio channel repartition is indeed a pain point.
The Amiga has four channels, but if one wants to make full use of stereo then every stereo sound will need to immobilize two channels (one at the left, one at the right) and thus the effective number of channels suddenly becomes two, which makes it really hard for music and sound effects to be played together.
Only a few additional electronic components would have been needed in order to be able to direct all four audio channels to the left or right so it is really a shame that they did not do it.
But hey, a lot of great music and sound effects were made with this limited system nevertheless. ;)

User avatar
iss
Squad Leader
Posts: 842
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss » Sun Mar 31, 2019 12:46 am

Just to wake up this thread with some good news.
The parallel port transfer is working at great speed :D
I've implemented a simple xfer protocol which allows to send data to 1,2 or 3 slave(s).
There is 'autoexec' flag which makes possible to send just data (i.e. not executable byte array like picture to hires screen) or program code and execute it. The protocol is easy extensible.

Now the plan is to patch in slave's ROM the receiving routine and this will rise OricExes to 'new level' :).

Please take a look at source on github - the compiled result is 190 bytes - any size optimizations are welcome!
My idea is to put this code over the keyboard translation table (just below the 3 interrupt vectors) - there are 130 bytes and because slaves don't need keyboard it's OK to use this space. I think I can find somewhere another not needed 60 bytes but any clue will help.

Only ONE thing remains unclear for me - the audio mixer... :?

User avatar
NekoNoNiaow
Flight Lieutenant
Posts: 271
Joined: Sun Jan 15, 2006 10:08 pm
Location: Montreal, Canadia

Re: OricExos - making the impossible

Post by NekoNoNiaow » Sun Mar 31, 2019 3:56 am

Fantastic work @Iss!

User avatar
Dbug
Site Admin
Posts: 2909
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug » Sun Mar 31, 2019 11:56 am

Please take a look at source on github - the compiled result is 190 bytes - any size optimizations are welcome!
Not much to optimize, except maybe:
- in "; receive content", increment Y instead of the low byte of zdst to make the 16 bit increment faster
- have "setup_slave" in the main code to avoid the cost of the jsr/rts
- modify " ; receive 6 bytes header" to load it reversed to avoid the cpy #6
- modify "receive_byte" to return the value in X instead of A, so you can get rid of the PHA/PLA in the routine
Only ONE thing remains unclear for me - the audio mixer... :?
I've to admit that hardware wise I've no idea how these things are done, obviously we want to avoid volume variance, but we also want to avoid truncation, and as I said earlier, I'd like the Exos to be able to run normal Oric software identical as normal, which means at the very least the master machine should play standard mono YM sound.

I've no idea what the cost and feasibilities of things, but Ibisum mentioned he'd like to have volume control, as well as stereo, the Atari STe had an additional chip, called a Microwire, that allowed this kind of thing, including tweak bass and treble, maybe something similar would work?

I was wondering about something like that:
mixer_idea.jpg
but my gf said it would not work because of volume change and output voltage when things are perfectly in phase and told me to look at this instead :)
https://electronics.stackexchange.com/q ... io-signals

EDIT: Somebody actually posted something exactly on this topic on the Commander X 16 Facebook page:
Ellen Larsson
2 hrs
Made a simplified schematic for a combined pan control and headphone output buffer/mixer.

Multiply the pink block by number of AY3 channels.

All values are noncritical beans.

Note that those cross-pots are digitally tapped (so called DPP:s). Commonly available and cheap packages come in duos, triads, and quads. Triads are nice since the AY-3 has three channels. On the other hand, a quad could be used to add a digitally controlled master volume fader to the output if you so wish.

Pan resolution:
It'd be more convenient from a programmers' point of view to limit the resolution to like 32 taps or even less, but it is actually cheaper to have a 7bit or even 8bit DPP chip so why not. That provides midi-like smoothness to the pan control. With a bit of search you can probably get a suitable chip up to the task for about a dollar. Another practical tradeoff is that logarithmic DPP:s (which would be ideal for audio) are a bit more expensive and usually only comes in dual chips (which adds more to the total in itself), but linear is fine. With a resolution this smooth, you can devise a response curve in software if you so wish.

Relative volume between AY3 and gameduino:
Some hard-wired R mix adjustments between the Gameduino outs and the AY-3 outs are in order. I just assumed a give or take 1:1 mix ratio, which is probably naive now that i think of it. The more ay-3 channels, the weaker they should be in comparison to the stereo out of gameduino. Also, i don't think we know the relative difference in amplitude between gameduino and ay3 at this point.

tl;dr:
Anyway, so this gives the programmer full control to customize how AY3 channels are panned: All-mono (zx spectrum / sunsoft 5b style), hard panned "turbo" style, more modern/subtle, or even on the fly programmable for spatial effects.
See: facebook.com/groups/CommanderX16/permalink/422154388535661/ [Closed Group]

User avatar
iss
Squad Leader
Posts: 842
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss » Mon Apr 15, 2019 3:23 pm

OricExos plays B&W animation (4 frames).
Every Oric draws 1/4 of the image as horizontal band (240x50 pixels):

The source code is not optimized but playback is smooth and flicker-free!

OricExos plays Gray scale movie (11 frames).
Every Oric draws full image 240x200 pixels:

Source code here.

I'm very happy with the new version of the ROM. In place of 'store' and 'recall' is new parallel port loader which starts after reset (and/or NMI). It works stable and fast:
protocol.png
The yellow trace is master-Oric's STROBE signal - on its falling edge the transmitted byte is ready on VIA port A,
the cyan trace is 3-slaves-Oric's ACKNOWLEDGE signal its rising edge tells master the byte is latched and next byte can be transferred. The speed is near 11 KBYTES (it's 8-bit parallel transfer!) and it can be optimized lot.

User avatar
iss
Squad Leader
Posts: 842
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss » Mon Apr 15, 2019 3:26 pm

... and here is how the gray movie was 'sliced' in levels of gray. The mixer is still 'Direct connection' next on the list is the 'R-2R thing' and the audio mixer (I'll draw some schematics for discussion).
graytime.png

User avatar
ibisum
Wing Commander
Posts: 1089
Joined: Fri Apr 03, 2009 8:56 am

Re: OricExos - making the impossible

Post by ibisum » Mon Apr 15, 2019 4:52 pm

This is amazing. With every bold step you take, I eye my stack of Oric's and wonder what it would be like to follow your path .. ;)

(Perhaps, though, you getting Exos up will lead to an Oric Next type situation...)

Post Reply