OricExos - making the impossible
- ibisum
- Wing Commander
- Posts: 1655
- Joined: Fri Apr 03, 2009 8:56 am
- Location: Vienna, Austria
- Contact:
Re: OricExos - making the impossible
I want this so bad it hurts. Lets turn this system into a multi-timbral polyphonic synthesiser!
Re: OricExos - making the impossible
Maybe it should just be put in a transparent case, with some blinking things
Re: OricExos - making the impossible
Yep, just like Blake's Orac .
All 4 sound output are "as is" - standalone without mixing. The 4 speakers will be attached with wires and proper connectors to every board (next to the purple/white wires which connect the master reset button on the picture). If anyone has an idea for something better - now is the right time to share it .
BTW, I need (but can't find so far) a sample sound in MYM player compatible format with 4*3 = 12 channels. The idea is to split them in 4 streams and test how the simultaneous playback will work.
The video mixer has two modes:
- direct connection:
= every Oric draws 1/4 of the screen (hm, quadrant or band - which will be faster for update?) with all known limitations;
= available are 5 levels per color i.e. theoretically 5*5*5 = 125 different colors but not all combination are possible;
- R-2R ladder: 16 levels per color or 16*16*16=4096 total colors but not all combination are possible.
Re: OricExos - making the impossible
The only important thing is to not split the channels of any of the YM to do stereo per chip: That would make it difficult to replay sample sounds.iss wrote: ↑Mon Feb 18, 2019 7:33 pm All 4 sound output are "as is" - standalone without mixing. The 4 speakers will be attached with wires and proper connectors to every board (next to the purple/white wires which connect the master reset button on the picture). If anyone has an idea for something better - now is the right time to share it .
Imo, there are two valid/easy to use setups:
- 4 chips outputs mixed together to get 12 channels mono
- 2 chips mixed together to get 6 channels mono + 1 chip on the left + 1 chip of the right
My idea was to try to extend Fabrice's mini2ym player to use 12 channels, it's gives a large number of music to try, because there are not so many YM musics using more than 2 YM chips.
Do you have some pseudo-code formula to describe the mix?iss wrote: ↑Mon Feb 18, 2019 7:33 pm The video mixer has two modes:
- direct connection:
= every Oric draws 1/4 of the screen (hm, quadrant or band - which will be faster for update?) with all known limitations;
= available are 5 levels per color i.e. theoretically 5*5*5 = 125 different colors but not all combination are possible;
- R-2R ladder: 16 levels per color or 16*16*16=4096 total colors but not all combination are possible.
Something like that:
Direct Connect:
- Ro = RI0 or RI1 or RI2 or RI3
- Go = GI0 or GI1 or GI2 or GI3
- Bo = BI0 or BI1 or BI2 or BI3
Ladder:
- Ro = RI0 + RI1/2 + RI2/3 + RI3/4
- Go = GI0 + GI1/2 + GI2/3 + GI3/4
- Bo = BI0 + BI1/2 + BI2/3 + BI3/4
(With O=Output, I=Input, 0-3 computer number)
Re: OricExos - making the impossible
For the audio - it's OK, both options are easy but what type of connectors do you need, so I can prepare them?
I think the pseudo-code formulas to describe the mix are:
Direct connect:
- Fast mode:
Ro = RI0 or RI1 or RI2 or RI3
Go = GI0 or GI1 or GI2 or GI3
Bo = BI0 or BI1 or BI2 or BI3
- Low color mode:
- Ro = 1/4*RI0 + 1/4*RI1 + 1/4*RI2 + 1/4*RI3
- Go = 1/4*GI0 + 1/4*GI1 + 1/4*GI2 + 1/4*GI3
- Bo = 1/4*BI0 + 1/4*BI1 + 1/4*BI2 + 1/4*BI3
High color mix (ladder):
- Ro = 1/2*RI0 + 1/4*RI1 + 1/8*RI2 + 1/16*RI3
- Go = 1/2*GI0 + 1/4*GI1 + 1/8*GI2 + 1/16*GI3
- Bo = 1/2*BI0 + 1/4*BI1 + 1/8*BI2 + 1/16*BI3
i.e. Xo = 8/16*XI0 + 4/16*XI1 + 2/16*XI2 + 1/16*XI3 or the value varies from 0/16 to 15/16 with step 1/16 .
I think the pseudo-code formulas to describe the mix are:
Direct connect:
- Fast mode:
Ro = RI0 or RI1 or RI2 or RI3
Go = GI0 or GI1 or GI2 or GI3
Bo = BI0 or BI1 or BI2 or BI3
- Low color mode:
- Ro = 1/4*RI0 + 1/4*RI1 + 1/4*RI2 + 1/4*RI3
- Go = 1/4*GI0 + 1/4*GI1 + 1/4*GI2 + 1/4*GI3
- Bo = 1/4*BI0 + 1/4*BI1 + 1/4*BI2 + 1/4*BI3
High color mix (ladder):
- Ro = 1/2*RI0 + 1/4*RI1 + 1/8*RI2 + 1/16*RI3
- Go = 1/2*GI0 + 1/4*GI1 + 1/8*GI2 + 1/16*GI3
- Bo = 1/2*BI0 + 1/4*BI1 + 1/8*BI2 + 1/16*BI3
i.e. Xo = 8/16*XI0 + 4/16*XI1 + 2/16*XI2 + 1/16*XI3 or the value varies from 0/16 to 15/16 with step 1/16 .
Re: OricExos - making the impossible
The ideal would just be a standard stereo female headphone jack, can easily connect that to my videocapture card or audio input on my speakers.
Ok, and how do you switch from one mode to the other, how many cycles does that take, can I change every line, multiple time per scanline, etc... without generating snow or effects like that? Or should that be just on a per-frame thing?iss wrote: ↑Mon Feb 18, 2019 8:58 pm I think the pseudo-code formulas to describe the mix are:
Direct connect:
- Fast mode:
Ro = RI0 or RI1 or RI2 or RI3
Go = GI0 or GI1 or GI2 or GI3
Bo = BI0 or BI1 or BI2 or BI3
- Low color mode:
- Ro = 1/4*RI0 + 1/4*RI1 + 1/4*RI2 + 1/4*RI3
- Go = 1/4*GI0 + 1/4*GI1 + 1/4*GI2 + 1/4*GI3
- Bo = 1/4*BI0 + 1/4*BI1 + 1/4*BI2 + 1/4*BI3
High color mix (ladder):
- Ro = 1/2*RI0 + 1/4*RI1 + 1/8*RI2 + 1/16*RI3
- Go = 1/2*GI0 + 1/4*GI1 + 1/8*GI2 + 1/16*GI3
- Bo = 1/2*BI0 + 1/4*BI1 + 1/8*BI2 + 1/16*BI3
i.e. Xo = 8/16*XI0 + 4/16*XI1 + 2/16*XI2 + 1/16*XI3 or the value varies from 0/16 to 15/16 with step 1/16 .
Re: OricExos - making the impossible
Ha-ha, this starts to be crazy even for me
WIP source here: 'oricexos.s'
In short:
Code: Select all
;--------------------------
extadr = $380
;--------------------------
; hold the extension status
; extadr + bit 0 - ram/rom switch
; extadr + bit 1 - on/off pp buffer
; extadr + bit 2 - in/out pp buffer
; extadr + bit 3 - mixer switch
Code: Select all
ram/rom pp buffer pp buffer direction mixer A/B
STA $380 - rom off out A (direct) <--- default status after RESET
STA $381 - ram off out A (direct)
STA $382 - rom on out A (direct)
STA $383 - ram on out A (direct)
STA $384 - rom off in A (direct)
STA $385 - ram off in A (direct)
STA $386 - rom on in A (direct)
STA $387 - ram on in A (direct)
STA $388 - rom off out B (ladder)
STA $389 - ram off out B (ladder)
STA $38A - rom on out B (ladder)
STA $38B - ram on out B (ladder)
STA $38C - rom off in B (ladder)
STA $38D - ram off in B (ladder)
STA $38E - rom on in B (ladder)
STA $38F - ram on in B (ladder)
The change is immediate and can be done at any time - simply the mixer has nothing in common with ULAs.
About the 'snow effect' - I don't know but I believe it will not happen ...
- NekoNoNiaow
- Flight Lieutenant
- Posts: 272
- Joined: Sun Jan 15, 2006 10:08 pm
- Location: Montreal, Canadia
Re: OricExos - making the impossible
Ahahah, this is fantastic work @ISS!
Keep up the effort, I cannot wait to see what can be produced with such a monster setup.
Keep up the effort, I cannot wait to see what can be produced with such a monster setup.
Re: OricExos - making the impossible
Ok, that's actually cool, it's as fast as it can be, and does not require any register, which means that technically one could generate code that does special effects, inserting the right page 3 access to trigger the various effects.iss wrote: ↑Mon Feb 18, 2019 10:01 pm ; extadr + bit 0 - ram/rom switch
; extadr + bit 1 - on/off pp buffer
; extadr + bit 2 - in/out pp buffer
; extadr + bit 3 - mixer switch
Important is the WRITE operation, the value in register A doesn't matter (can be any).
The change is immediate and can be done at any time - simply the mixer has nothing in common with ULAs.
You may have to explain what the "pp buffer" is and how it works, I guess it's what you spoke about, some way to use some of the screen content of one machine to mask out something, or is it something else?
Re: OricExos - making the impossible
"pp buffer" is the additional Parallel Port buffering on the extension board.
It's a standard 74LS245 chip i.e. 8-bit bidirectional buffer with 3 states output and is connected to VIAs port A.
This allows PSG programming AND high-speed 8-bit bidirectional Parallel Port communication between master and slaves.
It's a standard 74LS245 chip i.e. 8-bit bidirectional buffer with 3 states output and is connected to VIAs port A.
This allows PSG programming AND high-speed 8-bit bidirectional Parallel Port communication between master and slaves.
Re: OricExos - making the impossible
Regarding the music, there are two known midi players, midipsg from Fabrice (but I could not find the sources), and another one from Wasky which replays the Game of Throne music and comes with the sources: https://github.com/DJChloe/got
Spectrum coders have a bunch of converters as well (midi2ay, mid2asm, ...) on this page http://www.worldofspectrum.org/utilities.html just not sure which ones could actually be extended to support 4 chips.
Now of course, the MIDI standard is not that complicated, and I could just bite the bullet and write a converter and player that tries to actually replay things that sound like piano, violin and drums, but it's not a weekend project
Spectrum coders have a bunch of converters as well (midi2ay, mid2asm, ...) on this page http://www.worldofspectrum.org/utilities.html just not sure which ones could actually be extended to support 4 chips.
Now of course, the MIDI standard is not that complicated, and I could just bite the bullet and write a converter and player that tries to actually replay things that sound like piano, violin and drums, but it's not a weekend project
- ibisum
- Wing Commander
- Posts: 1655
- Joined: Fri Apr 03, 2009 8:56 am
- Location: Vienna, Austria
- Contact:
Re: OricExos - making the impossible
Ermmm.. this may be a stupid suggestion, but what about adding a mixer to the setup for the audio channels? I built one of these recently, its quite decent for the task:All 4 sound output are "as is" - standalone without mixing. The 4 speakers will be attached with wires and proper connectors to every board (next to the purple/white wires which connect the master reset button on the picture). If anyone has an idea for something better - now is the right time to share it .
https://syntherjack.net/portable-audio-mixer/
Re: OricExos - making the impossible
There are no stupid questions, so I have one myself: How would you use the mixer?ibisum wrote: ↑Tue Feb 19, 2019 8:25 pmErmmm.. this may be a stupid suggestion, but what about adding a mixer to the setup for the audio channels? I built one of these recently, its quite decent for the task:All 4 sound output are "as is" - standalone without mixing. The 4 speakers will be attached with wires and proper connectors to every board (next to the purple/white wires which connect the master reset button on the picture). If anyone has an idea for something better - now is the right time to share it .
https://syntherjack.net/portable-audio-mixer/
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 bit like on PC back in the day when you had to implement "reverse stereo" in programs because the Left/Right channels were not standardized.
Allowing to alter the level of stereo mixing would also mean it would be very difficult to make sure musics or sound effects are sounding how you want them to sound.
That being said, a hard coded setup, with for example 25% of the right channel going to the left channel, and 25% of the left channel going to the right, could allow for more natural sounding music (not like the horrible full separation audio of the Amiga).
The one important thing is to make sure that the relative voltage of the channels is predictable, because things like sample sound replay is based on volume tables that take in consideration the voltage. If you change these, your nice samples become noisy.