VOGONS


FMonster, the monster of sound synth

Topic actions

Reply 60 of 275, by carlostex

User metadata
Rank l33t
Rank
l33t
Scali wrote:
You can't get rid of the MIDI interface, unless you want to move it into software. Namely, the IMFC is basically the same thing […]
Show full quote

You can't get rid of the MIDI interface, unless you want to move it into software.
Namely, the IMFC is basically the same thing as a Roland LAPC-I card: it's a MIDI interface with a MIDI module connected to it.
The YM2164 cannot be accessed directly by the host. It contains a Z80 processor and its own firmware, and is basically a Yamaha FB-01 module.
The only way to access it is via the MIDI interface (the interface is connected both to the onboard FB-01 module and the external MIDI ports).

Ugh, i didn't know that. I thought the card could be accessed directly by the system without need of the MIDI interface. Well that makes a hypothetical clone way more difficult.

Scali wrote:

Cloning a full FB-01 is probably quite difficult, it's a rather complex device. However, they are very cheap secondhand.
And I have already created 'SoftIMFC', which is basically the IMFC equivalent of SoftMPU: it will use EMM386's port virtualization to emulate the IMFC's MIDI interface, and redirect it to an MPU-401 UART compatible or SB MIDI compatible MIDI port. Just connect an FB-01, and you have an IMFC-compatible system: https://github.com/Scalibq/FB-01-Emulator/tre … master/SoftIMFC

That i do know, in fact i helped you test a bit of SoftIMFC with my FB-01. It works well enough that it works with games, but unfortunately software that uses interrupts won't work, like the demo software for the IMFC. That's why i thought the card had some kind of different way of acces, other than the MIDI interface.

Reply 61 of 275, by keropi

User metadata
Rank l33t++
Rank
l33t++

well, I don't know if it will help in this specific application but the PCMIDI interface will be available in daughterboard form so a potential IMFC card could use that instead of cloning the IMFC mpu stuff...?

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 62 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
carlostex wrote:

That i do know, in fact i helped you test a bit of SoftIMFC with my FB-01. It works well enough that it works with games, but unfortunately software that uses interrupts won't work, like the demo software for the IMFC. That's why i thought the card had some kind of different way of acces, other than the MIDI interface.

Nah, that is a part of the interface I have not emulated yet. The card contains a 8254 timer chip, which is clocked at 2 MHz, so easy to use for MIDI timings.
That was rather difficult to emulate, and games don't seem to use it, so I haven't finished that yet.
All it does is generate an interrupt for the host.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 63 of 275, by Fagear

User metadata
Rank Member
Rank
Member
carlostex wrote:

What i'm hoping is that shock__ can have access to moturimi1's card and help Fagear with tracing what's left to be traced. That's not everything that needs to be done though, there is a PAL chip on the Covox Sound Master that needs to be probed and then its function replicated either by a GAL or some 74 series logic.

Yep, I can not proceed with reverse engineering of that card without some information about traces. If the card was in my hands it will be completed in a day, with card staying intact. But no such luck. And I'm not too concerned about PAL IC, because it definitely manages address decoding. Not only for AY chip, but also for DB-9 ports that can be dropped I think. If we'll find, at what addresses AY chip is present on that card (by software tests or by manuals for that card) I now can create a new decoder with 74HC138, no big deal.

carlostex wrote:

One of the things i've been wondering is how difficult it would be to clone an IBM Music Feature Card. There would be absolutely no need to replicate the MIDI interface on the card which would greatly simplify it. I don't know about parts availability but at least the YM2164 FM chip seems to be available in UTSOURCE. Get rid of the MIDI interface, just keeping the sound capabilities and another rare sound option biting the dust.

Scali wrote:
You can't get rid of the MIDI interface, unless you want to move it into software. Namely, the IMFC is basically the same thing […]
Show full quote

You can't get rid of the MIDI interface, unless you want to move it into software.
Namely, the IMFC is basically the same thing as a Roland LAPC-I card: it's a MIDI interface with a MIDI module connected to it.
The YM2164 cannot be accessed directly by the host. It contains a Z80 processor and its own firmware, and is basically a Yamaha FB-01 module.
The only way to access it is via the MIDI interface (the interface is connected both to the onboard FB-01 module and the external MIDI ports).

MIDI interface?...

keropi wrote:

well, I don't know if it will help in this specific application but the PCMIDI interface will be available in daughterboard form so a potential IMFC card could use that instead of cloning the IMFC mpu stuff...?

Well... that. We are working with keropi now to adapt his PCMIDI clone card for my board (and probably not only mine). 😎

2018-07-26 22.05.16.png
Filename
2018-07-26 22.05.16.png
File size
393.68 KiB
Views
1772 views
File license
Fair use/fair dealing exception

In the ideal scenario all synths will fit on the board and also you will be able to, first, plug in a daughterboard that keropi will make and after that you'll get functional MIDI In/Out at the bracket (with UART and Intelligent modes support as well) and a WaveBlaster header on the board itself. So you can attach any Roland/Yamaha/DreamBlaster/whathaveyou midi daughterboard into what will become an evil brick of the sound. 😈 🤣

Also I've started working on 8-bit DAC which probably will end up on the card if there will be space left for it.
It will be Covox Speech Thing - compatible. But I don't want just to put mono R-2R DAC. At least I'll go with proper latched and buffered ADC IC like AD7524 and an opamp at the output. But the aim is to make it stereo... That's where I have problems for now. As I've managed to find, there are at least two variants of how you can get stereo Covox.

Path 1) Put two DACs (whatever they are) to the same port and strobe them with two control pins (1 and 14) of the LPT connector.

Filename
Covox_stereo_strobed.png
File size
4.21 KiB
Downloads
No downloads
File license
Fair use/fair dealing exception

For start, I don't have an LPT port on my board. Making user to connect some bulky cable to existing LPT and plug it somewhere into the board is just nonsense.
So, I have to implement necessary functions of the LPT myself. Decoding address, putting a bus driver - no big deal. But... "True" LPT has not one but three registers: Data, Status, Control and allows writes to Data and Control and reads from all three. Fortunately, Covox doesn't need to read anything, so read function and Status register could be dropped. But I have to implement at least two lines of Control register that go to pins 1 and 14. Address decoder will be pretty complicated, great number of additional logic ICs have to be put on the board where is not much space left. Not a good idea.
And also this approach will probably not work with "simple" Covox output without control line strobe.

full_LPT.png
Filename
full_LPT.png
File size
316.19 KiB
Views
1772 views
File license
Fair use/fair dealing exception

Path 2) Put two DACs to two different ports and treat them as two Covoxes in the system. At least one tracker does support such configuration (LPT1+LPT2) as I know (I do not know much about Covox for the moment). Now I do not need to strobe anything and I can drop Control register as well. So only Data register is left, which is pretty simple. Also any type of output (strobed or not) will work. And if software supports two DACs on two ports - stereo will work as well. 😎
But there is one annoying thing: mono/stereo switch. If software will output only mono into one DAC it will not be dual mono, it will be sound only from left channel. Putting switch somewhere on the edge of the card or the bracket and forcing user to switch it whenever he changes Covox software or played tracks - also nonsense.
So, I have to implement some kind of automatic switch. I've found a schematic (from Dave Boyd) for the variant of Covox stereo DAC with 555 timer and some misc parts to provide automatic mono fallback, but there was a good number of discrete parts that would take space. Also it relies on analog timing circuit with a cap that can go bad. Not the best implementation in my opinion.
There is a problem: I didn't find how various software treat LPT1+LPT2 Covox configuration. I assume that it interleaves addresses like that: 378/278/378/278/378/278... If that is true, I already have a solution. If not... I have to research and engineer more.

BTW, here are some reengineered blocks of the board.
OPL2 before:

OPL2_2018-05-25_01.png
Filename
OPL2_2018-05-25_01.png
File size
60.46 KiB
Views
1772 views
File license
Fair use/fair dealing exception

OPL2 now:

OPL2_2018-05-25_02.png
Filename
OPL2_2018-05-25_02.png
File size
66.16 KiB
Views
1772 views
File license
Fair use/fair dealing exception

Length reduced from 59.4 mm to 48.9 mm while gaining more useful ports, jumpers moved to the top edge and there is "OPL2 active" LED there!

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 64 of 275, by Fagear

User metadata
Rank Member
Rank
Member

Here is some more "shrinking progress". SSI-2001 block and clock generation block (for the whole card).
Before:

ISSI_2018-07-18_01.png
Filename
ISSI_2018-07-18_01.png
File size
81.88 KiB
Views
1740 views
File comment
Innovation SSI-2001 and clock-gen module before shrinking
File license
Fair use/fair dealing exception

After:

ISSI_2018-07-18_02.png
Filename
ISSI_2018-07-18_02.png
File size
81.95 KiB
Views
1740 views
File comment
Innovation SSI-2001 and clock-gen module after shrinking
File license
Fair use/fair dealing exception

That's 33 mm less length! And jumpers also had been moved to the top edge of the board.

And here is my current variant for automatic mono/stereo Covox switch.
It is not tested on hardware for the moment.

3VPSG_mute_03.png
Filename
3VPSG_mute_03.png
File size
378.16 KiB
Views
1740 views
File comment
Schematic for dual-Covox auto mono/stereo switch.
File license
Fair use/fair dealing exception
3VPSG_mute_04.png
Filename
3VPSG_mute_04.png
File size
444.43 KiB
Views
1740 views
File comment
Time diagram for dual-Covox auto mono/stereo switch.
File license
Fair use/fair dealing exception

Legend:
/WR - /IOW on the ISA bus: writing to selected address.
/A1 - decoded address for Covox #1 (left) at 0x378.
/A2 - decoded address for Covox #2 (right) at 0x278.
E1 - signal "mono enabled".
/F1 - signal "force left channel to the right".
/CS1 - chip select for Covox #1 DAC.
/CS2 - chip select for Covox #2 DAC.

If my predictions about address interleave are wrong - I can replace "1-bit RAM" with a counter to wait for more than two consecutive writes to A1.

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 65 of 275, by matze79

User metadata
Rank l33t
Rank
l33t

i would go for PAM7528, Dual 8Bit DAC on one IC.

they have A/B In for switching channels 😉

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 66 of 275, by noop

User metadata
Rank Member
Rank
Member
Scali wrote:

Namely, the IMFC is basically the same thing as a Roland LAPC-I card: it's a MIDI interface with a MIDI module connected to it.
The YM2164 cannot be accessed directly by the host. It contains a Z80 processor and its own firmware, and is basically a Yamaha FB-01 module.
The only way to access it is via the MIDI interface (the interface is connected both to the onboard FB-01 module and the external MIDI ports).

Great! I was previously told this is not the case by someone, after already buying few FB-01s. Told me that there is register-level access to the FM chip. Apparently he was wrong.

Reply 67 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
noop wrote:

Great! I was previously told this is not the case by someone, after already buying few FB-01s. Told me that there is register-level access to the FM chip. Apparently he was wrong.

There are many SysEx commands to control the FM parameters, and by the looks of it, these SysEx commands are very low-level, and many parameters do more or less map 1:1 to the FM chip's registers.
But it's not direct register-level access as you'd get on eg an AdLib. You send the SysEx message to the MIDI interface, which puts it in the Z80's buffer, and the Z80 is responsible for decoding the SysEx data, and sending the parameters to the YM2164.

The SysEx commands of the IMFC and FB-01 are 99% the same. The IMFC has a newer version of the firmware, and supports a few SysEx commands that the FB-01 does not (my SoftIMFC and DOSBox emulation code translate these commands on-the-fly to be 100% compatible with an FB-01 attached). The main difference is the Parameter List command.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 68 of 275, by noop

User metadata
Rank Member
Rank
Member
Scali wrote:

The SysEx commands of the IMFC and FB-01 are 99% the same. The IMFC has a newer version of the firmware, and supports a few SysEx commands that the FB-01 does not (my SoftIMFC and DOSBox emulation code translate these commands on-the-fly to be 100% compatible with an FB-01 attached). The main difference is the Parameter List command.

I can try to put IMFC firmware into FB-01 if they are really compatible

Reply 69 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
noop wrote:

I can try to put IMFC firmware into FB-01 if they are really compatible

I wouldn't do that. The code for the LCD display was removed from IMFC firmware. Possibly also the code that handles the front panel buttons.
So if you were to put an IMFC ROM into an FB-01, best-case it will only work via SysEx commands, and the front panel is dead. Worst case, it will crash.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 70 of 275, by carlostex

User metadata
Rank l33t
Rank
l33t
keropi wrote:

well, I don't know if it will help in this specific application but the PCMIDI interface will be available in daughterboard form so a potential IMFC card could use that instead of cloning the IMFC mpu stuff...?

No that wouldn't work. SIerra did allow their games to use a FB-01 with a MPU-401, but a IMFC card needs its own MIDI interface. Like Scali has stated, the only way to access the synth is via its MIDI interface. So to clone a IMFC you need to copy absolutely everything. That makes it harder to clone, its a pretty complex card.

Reply 71 of 275, by noop

User metadata
Rank Member
Rank
Member
Scali wrote:

So if you were to put an IMFC ROM into an FB-01, best-case it will only work via SysEx commands, and the front panel is dead. Worst case, it will crash.

Then I'll just insert the old ROM. FB-01 are cheap anyway. And, if the code is for Z80, not too hard to analyse and compare (but easier to just insert and check 😀 )
So, is it possible to get a dump?

BTW. From quick glance, IMFC just contains components of a basic 8080/Z80 microcomputer. CPU, ROM, RAM, 2x 8255 PIO ICs, 8253 timer, some 74 series glue, OPP with its corresponding DAC(YM3012) and analog stuff. EPROM is socketed the older version and probably will take a few minutes to dump.

Reply 72 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
noop wrote:

And, if the code is for Z80, not too hard to analyse and compare (but easier to just insert and check 😀 )

Yea, it's just Z80 code, the ROMs are 32k. This includes the firmware and also the preset voice banks and configurations.

noop wrote:

BTW. From quick glance, IMFC just contains components of a basic 8080/Z80 microcomputer. CPU, ROM, RAM, 2x 8255 PIO ICs, 8253 timer, some 74 series glue, OPP with its corresponding DAC(YM3012) and analog stuff.

Yea, the far end of the card (furthest away from the bracket) is basically just the FB-01 logic. The rest of the card is the MIDI interface and amplifier.
The MIDI interface is quite basic, it's just a simple UART system, with some status flags and possible interrupt on read/write of data.
The 8253 timer runs at 2 MHz to make MIDI timing easier. It is set up so that one counter acts as the divisor of the other counter. So it should be reasonably straightforward to match it to standard MIDI tempo from a .MID file.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 73 of 275, by moturimi1

User metadata
Rank Member
Rank
Member

I am still willing to contribute (I own the card). I hope it is possible to reverse engineer the card without having to desolder anything. And if we have to, well that would also be ok for me.
If you have any suggestions to keep the project moving forward go ahead...

Reply 74 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
carlostex wrote:

No that wouldn't work. SIerra did allow their games to use a FB-01 with a MPU-401, but a IMFC card needs its own MIDI interface. Like Scali has stated, the only way to access the synth is via its MIDI interface. So to clone a IMFC you need to copy absolutely everything. That makes it harder to clone, its a pretty complex card.

On the other hand, if you were to create a simple card with direct access to the registers of the YM2164 (basically an AdLib-like card), you could use a SoftIMFC approach to implement the MIDI interface in software.
It would be a great tool for developing a full IMFC/FB-01 emulator.
Having the same card but with an YM2151 would be even nicer, because then the differences between the chips could be studied in more detail.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 75 of 275, by Fagear

User metadata
Rank Member
Rank
Member
moturimi1 wrote:

I am still willing to contribute (I own the card). I hope it is possible to reverse engineer the card without having to desolder anything. And if we have to, well that would also be ok for me.
If you have any suggestions to keep the project moving forward go ahead...

Do you mean Covox Sound Master? I think it is better to talk about it in appropriate thread.

In the meantime, CMS block is finished:

CMS_2018-08-10.png
Filename
CMS_2018-08-10.png
File size
64.37 KiB
Views
1398 views
File comment
CMS debug board
File license
Fair use/fair dealing exception

Dual 8-bit DAC is finished:

DualDAC_2018-08-10.png
Filename
DualDAC_2018-08-10.png
File size
56.47 KiB
Views
1398 views
File comment
Dual 8-bit DAC debug board
File license
Fair use/fair dealing exception
matze79 wrote:

i would go for PAM7528, Dual 8Bit DAC on one IC.
they have A/B In for switching channels 😉

I've looked into AD7528/TLC7528, but those have one disadvantage: they can not write to both DACs simultaneously. So "double mono" playback will not be possible. But I'll give that a shot anyway, just for sound quality comparison.

OPL3 block is still in progress...

OPL3_2018-08-10.png
Filename
OPL3_2018-08-10.png
File size
38.21 KiB
Views
1398 views
File comment
OPL3, progress @2018-08-10
File license
Fair use/fair dealing exception

ISA bus on the main board is been rerouted:

fmonster_2018-08-10.png
Filename
fmonster_2018-08-10.png
File size
150.86 KiB
Views
1398 views
File comment
FMonster, progress @2018-08-10
File license
Fair use/fair dealing exception

Header for keropi's board is added.

Feels like at the end everything MAY fit, but maybe just. 😲

Last edited by Fagear on 2018-08-09, 23:44. Edited 1 time in total.

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 76 of 275, by hard1k

User metadata
Rank Oldbie
Rank
Oldbie

This is definitely worth to be named something like Audio Loca Bitchin'cool!FM 2020.

Fortex, the A3D & XG/OPL3 accelerator (Vortex 2 + YMF744 combo sound card)
AWE64 Legacy
Please have a look at my wishlist (hosted on Amibay)

Reply 77 of 275, by matze79

User metadata
Rank l33t
Rank
l33t

AD7528 is just 2 AD7524, they should have exactly same ouput quality.

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 78 of 275, by Fagear

User metadata
Rank Member
Rank
Member
matze79 wrote:

AD7528 is just 2 AD7524, they should have exactly same ouput quality.

Probably. But those have different packages and somewhat different reference schematics (connections of AGND/DGND). And 7528 can not write to both channels at once.
I'll try three variants:
1) 2xAD7524 in reference variant
2) AD7528 in reference variant
3) 2xAD7524 in AD7528 variant

DualDAC_2018-08-12.png
Filename
DualDAC_2018-08-12.png
File size
60.09 KiB
Views
1330 views
File comment
2xAD7524 DACs
File license
Fair use/fair dealing exception
StereoDAC_2018-08-12.png
Filename
StereoDAC_2018-08-12.png
File size
49.92 KiB
Views
1330 views
File comment
AD7528 DAC
File license
Fair use/fair dealing exception

Also I've made some research about output filtering. For the moment OPL2 has its own low pass filter.
For OPL3 I've found at least two different variants.
One is here:

OPL3_filter_01.png
Filename
OPL3_filter_01.png
File size
138.28 KiB
Views
1330 views
File comment
OPL3 lowpass (var. 1)
File license
Fair use/fair dealing exception

It kinda works and has pretty big footprint.

Output stage from new Resound OPL3 board appears to not have any filtering at all (weird 😕 ):

OPL3_filter_02.png
Filename
OPL3_filter_02.png
File size
160.35 KiB
Views
1330 views
File comment
OPL3 Resound output
File license
Fair use/fair dealing exception

So I've decided to make my own.
3rd order Butterworth with optional amplification stage:

OPL3_filter_03.png
Filename
OPL3_filter_03.png
File size
127.33 KiB
Views
1330 views
File comment
OPL3 my lowpass.
File license
Fair use/fair dealing exception

Fine frequency and phase responses, pretty steep rolloff, common values of components (16.8 nF cap is made of 10 nF + 6.8 nF), small footprint.

And then I've turned my attention to others blocks... Tandy PSG, CMS, SSI, 8-bit DAC do not have ANY filtering at the output at all! And all those can produce very high harmonics (with square waveforms). I think that low pass for those is essential to produce proper sound. So I'm thinking about making all those "unfiltered" outputs go to onboard hardware mixer and after that - to common low pass filter and master volume control for output buffer.

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 79 of 275, by Fagear

User metadata
Rank Member
Rank
Member

Finally, I've finished OPL3 block:

OPL3_2018-08-13.png
Filename
OPL3_2018-08-13.png
File size
61.46 KiB
Views
1288 views
File comment
OPL3 debug board
File license
Fair use/fair dealing exception

It took some time, but finally I've figured it out and made a very compact layout.

For the moment width of the "blocks" are:
OPL2: 49 mm
ISSI: 47 mm
DAC: 40 mm
CMS: 40 mm
OPL3: 35 mm
Tandy PSG: 26 mm
ISSI address decoder: 15 mm (for both ISSI blocks)
Clock generator: 15 mm (for the whole card)

Total length is ~315 mm:

fmonster_2018-08-13.png
Filename
fmonster_2018-08-13.png
File size
165.21 KiB
Views
1288 views
File comment
FMonster, progress @2018-08-13
File license
Fair use/fair dealing exception

Also I'm doing separate "mixer" board a as debug platform for hardware mixer of the card:

Mixer_2018-08-13.png
Filename
Mixer_2018-08-13.png
File size
78.61 KiB
Views
1288 views
File comment
Mixer debug board
File license
Fair use/fair dealing exception

And I'm one step away from ordering all those "debug boards" at manufacturer. 😎

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.