Introducing the DigiMoooZ! After seeing @MMS write about the Digimuz so often, I finally decided to have a look at what it was. As usual, it turned out to be a nice piece of hardware that is impossible to find, so I set to correct this and the DigiMoooZ was born:
It is based on BKP's schematics but with a few changes: - I didn't like the clock circuit: it is based on a sort of a hack (digital inverter IC used as an analog amplifier going into stable oscillation) and there is no reason to do that today (BTW, the NES uses the same circuit somewhere internally, so it was relatively common in the '80s), so I just added an oscillator and a flip-flop working as a frequency halver in order to get the correct frequency the AY chip is supposed to be fed with... but then I noticed that such frequency was incredibly close to that of the MUX signal, which we very well know can be used as clock from experience with Solder's SID card, so I added the option of using it and it just happens to work great. - Inspired again by Solder's SID card design, I implemented the address decoding logic into a single GAL IC: this is guaranteed to generate the AY control signals with the correct timing and has the advantage that can be reprogrammed. - I added an amplifier circuit, the same one I used on the ReVox, so it has the same problem: it has too much gain, I will redesign it.
The thing is working very well and is interesting because AY chips can be bought for about 1€ each, making the total cost of the board veeery low.
NOW, PROGRAMMERS AND HW GURUS, I NEED YOUR HELP! I think this thing is promising but it can be made even better: - The board currently responds to $FD21/2/3 for compatibility with the original Digimuz, but this range is decoded by PLA as I think it was supposed to be used for interfacing with the V364 Speech Synthesis, so we should really switch to something else. - I don't like the way it is programmed: it uses 3 addresses, probably for making do with a somewhat reduced address decoding logic, but the GAL would easily allow to use just 2.
So I'm thinking about adding a switch to select between a "legacy" mode which keeps the current behavior and a "new" mode which will respond at another address and use just two. I'm thinking about $FDEE/F, what do you think? This would of course only make sense if new software used the new method.
Another thing: since the MUX signal works perfectly as a clock, I can remove the oscillator circuit, which frees up quite a bit of space on the board. I've been thinking about a few things that could be make use of this space: 1. A ROM, similar to that used in the original design: I think this was for converting notes to frequencies to be written to the chip. We would need to find the ROM and get the permission to use it, or maybe just remake it from scratch. 2. A resistor-ladder DAC: basically this would merge the ReVox and the DigiMoooZ into a single board. I think it's doable. 3. A real DAC, maybe the TLC7226, the same one used in the C64 SoundMax/Digimax. This has 4 channels but is more expensive than the whole board (~8€). 4. A second AY chip . This could be nice for stereo effects, with one chip doing the left channel and the other one doing the right channel.
Again, I would like to hear from musicians and programmers what they would prefer to have, as any road we take would only make sense if future software actually takes advantage of it.
Three registers in the speech synth address window programming model is stupid, you should avoid it. No "legacy mode", please. There are not too many programmes for the original so no big software library to patch if needed at all.
ROM for note conversion is superfluous. No significant software library that would need it. Native editors and player routines will have to be invented anyway and music compositions often use frequencies differing from notes of a scale (glide/slide/vibrato).
Second AY is cool idea. However, stereo should be supported with a single PSG, too. AY using Z80 machines made stereo sound using two schemes: ABC or ACB. One left channel, one middle channel (most probably mixed on half volume to both sides), one right channel.
Resistor ladders, please. A proper AY-3-8910/YM2149F has two 8-bit parallel ports, so if those are already there they should be put to good use as DAC drivers.
Re: Introducing the DigiMoooZ! First of all: thank you for all the fantastic devices we just dreamed of few years ago, here to mention the C16 User Port and the MIDI control unit. This is Christmas! :-D
Back to the question: do we want an Adlib like(!) card, or a Soundblaster2.0 like card, that has Adlib AND a single digital channel. (update: I know Adlib used a 11 channel, much more complex FM synthesis Yamaha chip, it was almost the same as Commodore Sound Expander card with YM3526 OPL)
I think the market gave the answer, Soundblaser was THE definite sound card, despite it did not sound better than an Adlib and a external Covox togehter. But it was provided two functions in one card. Like this idea!
I think a single AY would be enough. There are very few musics usitiling the second AY. YM is not completeley the same as AY. It can work in the same way, but can use double resolution. Would be nice to know if the board is pin compatible with both?
I give my vote to the Digital output instead of the second AY.
BUT I vote for the SoundMax method. That one IC does the external mixing of the 4 digital channels "automatically", so the CPU should NOT do it. So not only the Soundmax has 4 addressable sound channels (much easier to program, clearer sound), but the CPU would have MUCH less task to play a 4 channel mod, that if the CPU does the mixing the 4 channels (you know Pigmy's 3 channel digi player, the CPU could hardly do anything else). Why DAC? Resistor ladders tend to be a little off, and ppl hearing generally pretty good to notice it.
And my last message: This 4 channel SoundMax/DigiMax is 4 times better than a Covox or SIDBlaster. Pretty close to an Amiga sound, if you do not count the filters . Maybe even better as may have no noise from the circuitry, as the Amiga.
Well, all together (even with DAC) it would cost less, than a single SID chip alone... With more functions. Just my 2c (and yeah, I will surely buy one or two )
About the programming of AY: I have no clue I know the 11 channels Adlib/YM was pretty complex to program, but the AY looks much simplier.
I suppose the card uses the TED mixing possibility of the Expansion port? Just to have a main leading sound from TED LOL
Re: Introducing the DigiMoooZ! Thanks for your comments!
@gerliczer: I agree that there is no big SW library to patch, but the legacy mode would come for free. It requires no effort (it's already done) and shouldn't prevent any other features being added. OK for no ROM, I thought it could be useful since now we have a defined clock frequency and note values can be calculated once for all. Yes, the current design is already stereo to some extent: channel A is fully padded to the left, C to the right and B is split between the two. Having two AYs would mean one to be fully panned to the left (all 3 channels) and one fully panned to the right. We would have 6 addresses: 2 for the left one, 2 for the right one and 2 that would work on both at the same time. Don't know if it makes sense. If we go for the resistor ladder, I'd add a 74x273 to drive it, like I did in the CoVox, I'd rather keep the AY I/O pins as a sort of extra userport (the are currently broken out to that pin header in the top right of the board).
Buy yeah, then we could just use a real DAC as @MMS says. That would make sense, since the ReVox could just stay as a ladder implementation, while here we would have the real thing. Apart from the cost, my only doubt is that running the TLC7226 at 5V doesn't seem to be recommended by the manufacturer, if you look at the datasheet (and no, I'm not going to put a DC-DC converter on the board). It doesn't prohibit it either though, so I guess I can just try (someone has done it already, and if it works in the C64 SoundMax...). The MAX506 seems to be a pin-to-pin compatible part that can run at 5V instead, but it's not easy to find and is superexpensive (~20€).
EDIT: Tested the TLC7226 at 5V and well, I'd say it works well enough for our needs!
And yes, the board mixes its output together with the TED's through the EXT_AUDIO pin. If you plug something into the output jacks, that will be muted.
Re: Introducing the DigiMoooZ! Six addresses are a waste. Address register values 0..15 should address AY1, 16..31 AY2 (and so on ). If the design is already ABC stereo then duplicate that for the second PSG too. Somehow that makes more sense to me. Mirrored writes decrease the number of available channels and could create volume imbalances.
For MMS' AdLib brainstorm you could mount a connector and make bus interface translation for an FM-YAM cartridge and there you go. Don't forget to map the registers to the remainder of the address space (upwards from 32).
Re: Introducing the DigiMoooZ! Unfortunatly it's not easily possible to do that, unless you get one of those AY with a custom mask matching dedicated high register bits. It's much easier to use separate addresses. Well, I guess it's just one more reason for going with the DAC.
This application note is about the AD7226, which is more or less the same as the TLC7226 and has a paragraph about 5V operation so, well it can definitely be done.
I would like inputs from other musicians! @Csabo, @Luca, what do you think would be more useful for you? And some HW considerations from @siz would be precious too .
Re: Introducing the DigiMoooZ! I know that I will come across as too pushy, but why is it so hard to do? Why would you need a special second AY? When you decode the address you also take into account an additional data bit. AFAIK address and data should be present at the same time and you have to provide chip select anyway. That additional data bit should be injected into the logic controlling which IC you select.
Re: Introducing the DigiMoooZ! Naaah, I like challenges , but this one is pretty hard for two reasons: 1. Theoretically, addresses are valid on the PHI2 rising edge while data is valid on the subsequent falling edge, so there is no guarantee that a data bit can be used for address decoding (which I'm doing on the rising edge and can't really be moved). 2. That data bit (D4?) would be set to 1 in register addresses dedicated to the 2nd AY but it would have to be changed to 0 when it is provided to the chip for latching, otherwise the chip would ignore it (this is the feature I was talking about earlier, where you could special-order AYs that would only care for addresses having D4=1, for instance, and ignore the others, yeah it's weird!). It cannot be hardwired to 0 because it must have its correct value when data is written or read.
So well, I'm not saying it can't be done, but it takes more than a simple GAL.
Re: Introducing the DigiMoooZ! This looks great as usual
I agree with gerliczer and SukkoPera's original assessment, the way the "old" card is being programmed is not great. For me, it was pretty simple to add support to my music player for the old Digimuz card, so whatever the new method will be... I'm sure I can make it work.
As for two chips and stereo mode, I have no strong opinion one way or another
Re: Introducing the DigiMoooZ! I was thinking about the size and certainly the 40 pin AY8910 is a big one. To make a bit smaller or have more space on the board, did you consider the significantly smaller AY8193? I suppose noone would use the parallel ports.
Re: Introducing the DigiMoooZ! Yep, but this all makes sense because 8910's are abundant and cheap (and there are a lot of clones of it), at least at this moment. Unfortunately both the 8912 and 8913 are rare and rather expensive.
But I guess it hasn't always been like this, since there's an adapter board around that allows replacing an 8910 with an 8912. I'm sure things might change quickly.
Re: Introducing the DigiMoooZ! @Sukkopera thank you for the quick answer. In my mind I already saw a small IC within the legs of the socket of the other bigger IC
I checked it out, and agree, the price difference is significant. Despite the 8192 has ess functions and uses smaller silicon, housing and legs (metal).
Re: Introducing the DigiMoooZ! I've been working on adding the "real" DAC. It's almost done but we have one last decision to take: we have to map the 4 DAC channels to stereo channels. The C64 Digimax maps channels A/B to left and C/D to right.I chose not to do that, because this thing will also accept Digiblaster data, which will be output on channel C, so it must be centered. This has led me to the following mapping: - Channel A is fully panned left - Channel D is fully panned right - Channels B and C are centered
Does that sound good? Note that for stereo output you need to pick up the audio at the onboard jack, it must be mixed to mono in order to be fed back through EXT_AUDIO. Here is the DAC circuit (note right and left are swapped, sigh):
I have also chosen the "final" addresses for the "new" method: - AY8910 I/O happens at $FDEA (register number) and $FDEB (read/write) - 4 DAC channels are at $FDEC-$FDEF
Does that sound good? Speak now or be silent for eternity!
Re: Introducing the DigiMoooZ! The new version of the board, which includes the 4-channel DAC is finally ready.
I had a hard time fine-tuning the amplifier circuit. There are some things that I really don't understand, which I had to tune "through attempts" and which will probably bite me once I test something that uses all the 4 channels at the same time, but everything is finally playing decently at the moment.
Again, if someone with decent knowledge of analog electronics wants to help, please raise your hand .
Re: Introducing the DigiMoooZ! WOWOWOWOWOW! Amiga quality sound from our originally poorly equipped computer! Those bass sounds! :-D This would be the best gift from myself under my Christmas tree!
Is it possible? Do you think I can order that from you or PCBWay? Sure I have a soldering iron and soldering mat, but with bad skills.
Re: Introducing the DigiMoooZ! @SukkoPera: The TLC7226 in the drawing above is the D/A converter? And one channel register can be written in the digiblaster's D/A address?
(Edit: I asked too early: I see you wrote the plan it in the drawing above.)
Re: Introducing the DigiMoooZ! @MMS: Well, Amiga quality requires 4 channels, until someone writes some software for that (and it's not going to be easy, if at all possible!), we're still a few steps below! I'd happily send you some PCBs for Xmas but I'm afraid you will have to buy components and solder them yourself. It's all through-hole stuff, I'm sure you can make it .
@BSZ: On this board you have an AY-3-8910 and a TLC7226. You can use all the 4 channels of the latter by writing to $FDEC/D/E/F, but channel 3 also responds to the Digiblaster address.
(But as far as audio is concerned, that's not yet all, folks. One more surprise is coming...)
Re: Introducing the DigiMoooZ! @Sukkopera Anyhow it sounds fantastic.
Almost "Amiga quality sound". Well, it has 4 digi HW channels, and the mixing could be done by the HW itself less stress on the CPU.
OFF You know I work at an EMS, so there are plenty of guys, who really knows how to solder. From them I can learn how to solder even small SMD components. I will look after that training. ON