FMonster, the monster of sound synth

Discussion about old sound cards, MIDI devices and sound related accessories.

Re: FMonster, the monster of FM synth

Postby carlostex » 2018-7-26 @ 18:48

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 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-Emulat ... r/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.
User avatar
carlostex
l33t
 
Posts: 2030
Joined: 2010-4-03 @ 21:39
Location: Portugal

Re: FMonster, the monster of sound synth

Postby keropi » 2018-7-26 @ 19:02

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...?
User avatar
keropi
l33t++
 
Posts: 6411
Joined: 2003-9-08 @ 06:45
Location: Greece

Re: FMonster, the monster of FM synth

Postby Scali » 2018-7-26 @ 19:36

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.
Scali
l33t
 
Posts: 3453
Joined: 2014-12-13 @ 14:24

Re: FMonster, the monster of FM synth

Postby Fagear » 2018-7-26 @ 19:48

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 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). :cool:
2018-07-26 22.05.16.png


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. :evil: :lol:

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.
Covox_stereo_strobed.png
(4.21 KiB) Not downloaded yet

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


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. :cool:
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


OPL2 now:
OPL2_2018-05-25_02.png


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!
User avatar
Fagear
Member
 
Posts: 170
Joined: 2014-7-10 @ 22:27
Location: Russia, Moscow

Re: FMonster, the monster of sound synth

Postby Fagear » 2018-7-26 @ 22:05

Here is some more "shrinking progress". SSI-2001 block and clock generation block (for the whole card).
Before:
ISSI_2018-07-18_01.png
Innovation SSI-2001 and clock-gen module before shrinking


After:
ISSI_2018-07-18_02.png
Innovation SSI-2001 and clock-gen module after shrinking


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
Schematic for dual-Covox auto mono/stereo switch.
3VPSG_mute_04.png
Time diagram for dual-Covox auto mono/stereo switch.

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.
User avatar
Fagear
Member
 
Posts: 170
Joined: 2014-7-10 @ 22:27
Location: Russia, Moscow

Re: FMonster, the monster of sound synth

Postby matze79 » 2018-7-27 @ 16:17

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

they have A/B In for switching channels ;)
matze79
Oldbie
 
Posts: 1039
Joined: 2014-12-12 @ 14:25
Location: Germany, Frankonia

Re: FMonster, the monster of FM synth

Postby noop » 2018-7-28 @ 00:25

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.
User avatar
noop
Member
 
Posts: 101
Joined: 2015-7-20 @ 15:42
Location: Belarus, Minsk

Re: FMonster, the monster of FM synth

Postby Scali » 2018-7-28 @ 06:23

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.
Scali
l33t
 
Posts: 3453
Joined: 2014-12-13 @ 14:24

Re: FMonster, the monster of FM synth

Postby noop » 2018-7-31 @ 02:47

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
User avatar
noop
Member
 
Posts: 101
Joined: 2015-7-20 @ 15:42
Location: Belarus, Minsk

Re: FMonster, the monster of FM synth

Postby Scali » 2018-7-31 @ 07:04

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.
Scali
l33t
 
Posts: 3453
Joined: 2014-12-13 @ 14:24

Re: FMonster, the monster of sound synth

Postby carlostex » 2018-7-31 @ 16:36

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.
User avatar
carlostex
l33t
 
Posts: 2030
Joined: 2010-4-03 @ 21:39
Location: Portugal

Re: FMonster, the monster of FM synth

Postby noop » 2018-7-31 @ 16:56

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.
User avatar
noop
Member
 
Posts: 101
Joined: 2015-7-20 @ 15:42
Location: Belarus, Minsk

Re: FMonster, the monster of FM synth

Postby Scali » 2018-7-31 @ 17:41

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.
Scali
l33t
 
Posts: 3453
Joined: 2014-12-13 @ 14:24

Re: FMonster, the monster of sound synth

Postby moturimi1 » 2018-8-09 @ 16:35

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...
moturimi1
Member
 
Posts: 138
Joined: 2014-6-01 @ 16:45

Re: FMonster, the monster of sound synth

Postby Scali » 2018-8-09 @ 17:45

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.
Scali
l33t
 
Posts: 3453
Joined: 2014-12-13 @ 14:24

Re: FMonster, the monster of sound synth

Postby Fagear » 2018-8-09 @ 23:24

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
CMS debug board

Dual 8-bit DAC is finished:
DualDAC_2018-08-10.png
Dual 8-bit DAC debug board

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
OPL3, progress @2018-08-10


ISA bus on the main board is been rerouted:
fmonster_2018-08-10.png
FMonster, progress @2018-08-10

Header for keropi's board is added.

Feels like at the end everything MAY fit, but maybe just. :exclamation:
Last edited by Fagear on 2018-8-09 @ 23:44, edited 1 time in total.
User avatar
Fagear
Member
 
Posts: 170
Joined: 2014-7-10 @ 22:27
Location: Russia, Moscow

Re: FMonster, the monster of sound synth

Postby hard1k » 2018-8-09 @ 23:43

This is definitely worth to be named something like Audio Loca Bitchin'cool!FM 2020.
Please have a look at my wishlist (hosted at Amibay)
User avatar
hard1k
Oldbie
 
Posts: 596
Joined: 2014-4-22 @ 11:28
Location: Buenos Aires, Argentina

Re: FMonster, the monster of sound synth

Postby matze79 » 2018-8-10 @ 17:21

AD7528 is just 2 AD7524, they should have exactly same ouput quality.
matze79
Oldbie
 
Posts: 1039
Joined: 2014-12-12 @ 14:25
Location: Germany, Frankonia

Re: FMonster, the monster of sound synth

Postby Fagear » 2018-8-12 @ 11:34

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
2xAD7524 DACs
StereoDAC_2018-08-12.png
AD7528 DAC


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
OPL3 lowpass (var. 1)

It kinda works and has pretty big footprint.

Output stage from new Resound OPL3 board appears to not have any filtering at all (weird :confused: ):
OPL3_filter_02.png
OPL3 Resound output


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


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.
User avatar
Fagear
Member
 
Posts: 170
Joined: 2014-7-10 @ 22:27
Location: Russia, Moscow

Re: FMonster, the monster of sound synth

Postby Fagear » 2018-8-13 @ 20:38

Finally, I've finished OPL3 block:
OPL3_2018-08-13.png
OPL3 debug board

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
FMonster, progress @2018-08-13


Also I'm doing separate "mixer" board a as debug platform for hardware mixer of the card:
Mixer_2018-08-13.png
Mixer debug board


And I'm one step away from ordering all those "debug boards" at manufacturer. :cool:
User avatar
Fagear
Member
 
Posts: 170
Joined: 2014-7-10 @ 22:27
Location: Russia, Moscow

PreviousNext

Return to Sound

Who is online

Users browsing this forum: BLEXBot [Bot] and 2 guests