Hello there!
Well, new project in progress in PulkoTronics laboratory!
"Willy" is an adapter to use Serdaco's OPL3LPT and S2P soundcards on Amstrad CPC and Amstrad Plus. It connects to the expansion port and allows you to play MIDI music (with S2P) or OPL3 music (with OPL3LPT).
I put some videos on Twitter (test with random notes for MIDI because there is no player yet, and SA2 player adapted from the CPC-ISA version written by Madram a long time ago): https://twitter.com/pulkomandy/status/1326984861442301962 (https://twitter.com/pulkomandy/status/1326984861442301962)
I will be writing documentation on the card and how to use it during the week-end on Shinra website (shinra.cpcscene.net).
For now there are 9 prototype boards available. I would prefer to give these to developers, music composers, or other people who want to support the device by creating something. Let me know if you think you are in this case. Later on I will make a larger batch of final boards (slightly smaller and simplified PCB as I can remove some useless things I put there to experiment with)
[edit]
More details available on Shinra website (https://pulkomandy.github.io/shinra.github.io/willy.html)
Attached a photo of the board in my setup
Great thing! Can you please explain how it works?
How does it compare to the LambdaSpeak III MIDI Interface?
I'm a MIDI novice, so please excuse my beginners questions. :) :) :)
I have seen your videos on twitter, I am a music enthusiast at CPC, I have hardware like lambaspeak 3 and Playcity, but I am not a developer, I would be interested in having a unit when you release this board to the general public.
I didn't know the LambdaSpeak did this many things, but from what I can see, it offers input and output to connect other MIDI devices.
The S2P is a bit different, it is a musinc synthetiser in itself. So, no input/output. But, it happens to accept MIDI commands for programming it.
For example, in the demo program I send "note on" commands, which are made of 3 bytes: the first ranges from 90 to 9F and tells which "channel" the note is played on. The second is the note number (0 to 127, covering a bit more than a standard piano range), and "velocity" (also from 0 to 127, controls the volume and possibly other parameters of the sound). By default all channels have a piano sound, but they can be reconfigured to any instrument from the "general midi" list (https://en.wikipedia.org/wiki/General_MIDI) with a "program change" command. There are also some special effects (reverb, chorus, ...) available.
With Willy, you need an S2P module: https://www.serdashop.com/S2P
To do the same with LambdaSpeak 3, you would need a Dreamblaster S2 with the traditional MIDI connectors: https://www.serdashop.com/Webwinkel-Product-198933047/Dreamblaster-S2-General-MIDI-Module-Bundle.html (same chip, different interfacing)
The DreamBlaster 2 is a really expensive adapter for what it does. Probably better to release your own adapter or include it into your Willy Design as it is around 5€ parts to do it compared to 80€ + extra shipping fees.
Quote from: PulkoMandy on 08:22, 13 November 20I didn't know the LambdaSpeak did this many things, but from what I can see, it offers input and output to connect other MIDI devices.
There was also a simple MC program that plays the AY-3-8912 in the CPC via LambdaSpeak's MIDI IN.
And then there is Speak&SID, which allows you to play the on-board SID chip via MIDI IN (and the AY-3-8912 chip in the CPC). But the software is very primitive (even though it supports polyphonic NOTE ON / OFF messages).
https://youtu.be/4esnHlCg138 (https://youtu.be/4esnHlCg138)
Quote from: TotO on 08:25, 13 November 20
The DreamBlaster 2 is a really expensive adapter for what it does. Probably better to release your own adapter or include it into your Willy Design as it is around 5€ parts to do it compared to 80€ + extra shipping fees.
I am not using the Dreamblaster X2 (which costs 80€) but the S2P. It costs only 35€: https://www.serdashop.com/S2P
And, no, I am not trying to solder QFN chips like this by hand. If you think it's a better option, you can do it. As usual I'll publish the schematics and you can reuse the same IO ports for compatibility. You know it well, the problem is not the price of the components but the time spent assembling and debugging the hardware... I think 35€ is acceptable.
Just to suggest a few other options for MIDI synthesizers to be controlled via CPC:
- any CPC Serial Interface / UART that can do MIDI BAUD RATE @ 8N1 - 31250 bps (USIfAC, ...) can do MIDI OUT (i.e., send MIDI commands to a MIDI instrument from the CPC).
- if you want to connect the CPC to a standard MIDI instrument with DIN MIDI, you only need an additional MIDI breakout board, for example
https://www.tindie.com/products/ubldit/midi-breakout-board-ez/ (https://www.tindie.com/products/ubldit/midi-breakout-board-ez/)
- even without MIDI DIN breakout board, there are a few inexpensive boards that can be controlled directly via UART TTL / TX line, for example, you could connect this one directly to TX of USIfAC (or LambdaSpeak 3 or Speak&SID or ...)
https://www.adafruit.com/product/1381?gclid=Cj0KCQiA-rj9BRCAARIsANB_4ABUSDITsW6lihukWx3lqL6oWVfHyB0aLxGxLRyEnH1ZwfS_K4cJmrUaAo2FEALw_wcB (https://www.adafruit.com/product/1381?gclid=Cj0KCQiA-rj9BRCAARIsANB_4ABUSDITsW6lihukWx3lqL6oWVfHyB0aLxGxLRyEnH1ZwfS_K4cJmrUaAo2FEALw_wcB)
64 polyphonic GM MIDI
- there is also the SAM chip which comes on a breakout board as well, with and without MIDI DIN socket
So, MIDI OUT from the CPC is possible with a number of options. MIDI IN (into the CPC) is much harder.
IMHO, the cheapest option to realize a 64 polyphonic GM MIDI synthesizer for the CPC is hence to use USIfAC (the old one) and the Adafruit board above for 25 $. That's all you need. And Software to be written on the CPC....
This video, I think I have already shared it on more occasions, I recorded it a long time ago, using the Symbiface III Hardware, you can play midi files of type 0:
https://vimeo.com/478823877
Quote from: PulkoMandy on 09:30, 13 November 20You know it well, the problem is not the price of the components but the time spent assembling and debugging the hardware... I think 35€ is acceptable.
I'm mainly speaking about the fact that your board could include the MIDI interface to not use extra hardware, considering that you are using the S2P to prototype your own sound card around the OPL3.
Quote from: PulkoMandy on 09:30, 13 November 20I am not trying to solder QFN chips like this by hand. If you think it's a better option, you can do it.
Yes, there is a better option and I have already done it: Adding a Wave Blaster connector to your OPL3 sound board to allow peoples to add an optional Dream Blaster wavetable on it if they want.
I am using the S2P because it has a parallel interface. The Willy is 3 74HCTxx chips for address decoding and that's it. For a waveblaster interface I would first need to have a serial port, then send its output to the waveblaster device. And on the other side I would need to get the audio out of it and provide some analog stuff to route it to a jack connector. Here, none of this is needed. You just get direct access to the chips (the S2 or the OPL3, depending on what you connect).
The S2P is not used in OPL3 mode. You get an OPL3LPT from Serdaco, connect it to Willy, and that's it. Again, just 3 74HCTxx chips to provide address decoding, and I can reuse all the work of Serdaco to connect the OPL3, the DAC, the analog stage for audio output (which I have no knowledge about and don't want to dig into). So I have a solution that is simple and quick to assemble.
It makes my job very simple here. Maybe you should give me some time to write and publish the documentation before commenting about the design of the card and how to improve it?
OK, I though the "parallel to expansion address decoder" was only for the prototyping purpose and not the final product.
Sure, if you do not have the MIDI signal, you can't do more than using the S2P board for what it is. I understand.
Quote from: PulkoMandy on 10:32, 13 November 20
I am using the S2P because it has a parallel interface.
Why would you do that? All that is required, really, is a TTL Rx-Tx (UART Send/Receive) line. Why not do it with a proper serial interface and standard MIDI? I understand that the device you are using has a parallel port... but is there an advantage to using a parallel port rather than the $ 25 GM MIDI synthesizer via UART from Adafruit above? That one could be hooked up directly to USIfAC.
EDIT: I will post a video of my USIfAC +
https://learn.adafruit.com/adafruit-music-maker-featherwing/midi-synth
CPCGM Midi Synty (~ 30 $ costs).
If you use standard MIDI baudrate of 31520 baud you may be limited in how fast you can push the data to the device (it depends if your serial interface has a buffer to make up for it). With a parallel interface there is no such limitation, you can just send the datas as fast as the z80 is able to. I think it is also a little easier to program this way.
The other thing is my interface can be used with both the S2M (for MIDI) or the OPL3LPT (for OPL3 / Adlib music). For the latter there is no serial port option and that is what I was initially interested in. It just happens that an extra jumper to change a setting made the same interface usable for both OPL3 and S2P, so, I just added it.
It is also a lot more compact, no extra wires and interfaces with separate power supplies on my desk. Everythink seats neatly on the MotherX4 board.
Another thing to point out for folks who like to use the Serial Interface to the SAM2695 (which is the chip used by PulkoMandy) here:
There are SAM2695 boards that have a MIDI DIN on board such as the
https://www.profusionplc.com/parts/sam2695-ek (https://www.profusionplc.com/parts/sam2695-ek)
Or
https://moderndevice.com/product/fluxamasynth-shield/ (https://moderndevice.com/product/fluxamasynth-shield/)
https://www.serdashop.com/waveblaster (https://www.serdashop.com/waveblaster)
These don't require a parallel port and can be directly connected already to any existing CPC serial interface that does MIDI baud rate.
Quote from: PulkoMandy on 17:32, 13 November 20If you use standard MIDI baudrate of 31520 baud you may be limited in how fast you can push the data to the device (it depends if your serial interface has a buffer to make up for it). With a parallel interface there is no such limitation, you can just send the datas as fast as the z80 is able to. I think it is also a little easier to program this way.
Yes, but Standard MIDI should be fast enough for anything MIDI ... I am only commenting on the MIDI aspect. Are you also sending audio / MP3 / OGG samples as well? So I doubt that you need anything faster than standard MIDI. (That's not a mass storage device, is it?)
Wrt 5V power supply, you should be able to power USIfAC + soundboard from the CPC 5V.
Quote
It is also a lot more compact, no extra wires and interfaces with separate power supplies on my desk. Everythink seats neatly on the MotherX4 board.
I doubt that this is the case - parallel interface is kind of bulky... serial only require 1 wire / line ;-)
So if you want the SAM2695, then the
https://www.serdashop.com/waveblaster (https://www.serdashop.com/waveblaster)
would do + USIfAC one TX -> RX wire + 5V... I don't think you can get more minimal than that.
The SAM2695 is the better choice, but for cheap CPC GM MIDI only, the VS1053 + USIfAC is also a good choice, I only wanted to mention it for folks that don't want to wait ;-)
I do think that your project is interesting though (see my like above), don't get me wrong! I only wanted to point out some other options as well. And I would have chosen other "components", but it's your project, not mine :-)
Quote from: VintageAdvantage on 17:40, 13 November 20
Yes, but Standard MIDI should be fast enough for anything MIDI ... I am only commenting on the MIDI aspect. Are you also sending audio / MP3 / OGG samples as well? So I doubt that you need anything faster than standard MIDI. (That's not a mass storage device, is it?)
It depends what you want to do. If the goal is just to play MIDI files and do nothing else, yes, fine. If the goal is, for example, to use this in a game, you want the sound player code to be quite fast and able to send a complete MIDI frame in a time as short as possible when it is called. And in a complex MIDI file there can be a few dozen bytes to send in some frames, at 3 bytes per note without having any program changes or other special effects it goes up quite fast.
So it depends on the buffers available in the usifac, can it store all these bytes so that the Z80 can continue and do something else? Or will the Z80 be desperately waiting for space in the serial port buffer?
Also I'm reading the USIFAC forum thread and I see that it puts the CPC into wait while doing things. So, OUT instructions to send data there will already take more time than usual. This interface doesn't, so your Z80 keeps running at full speed while you use it.
Quote from: PulkoMandy on 18:58, 13 November 20
It depends what you want to do. If the goal is just to play MIDI files and do nothing else, yes, fine. If the goal is, for example, to use this in a game, you want the sound player code to be quite fast and able to send a complete MIDI frame in a time as short as possible when it is called. And in a complex MIDI file there can be a few dozen bytes to send in some frames, at 3 bytes per note without having any program changes or other special effects it goes up quite fast.
So it depends on the buffers available in the usifac, can it store all these bytes so that the Z80 can continue and do something else? Or will the Z80 be desperately waiting for space in the serial port buffer?
Also I'm reading the USIFAC forum thread and I see that it puts the CPC into wait while doing things. So, OUT instructions to send data there will already take more time than usual. This interface doesn't, so your Z80 keeps running at full speed while you use it.
MIDI doesn't require that much bandwith... the MIDI standard and baud rate was established in 1983. It is and was fast enough for MIDI note data, otherwise we would have seen a successor much sooner ;-)
I mean, we had all this before - remember Doom and GM adapters? In 1994, I had a Yamaha TG 33 GM MIDI Module connected to my PC via SoundBlaster MIDI Out. YOu can play whole polyphonic 64 channel symphonies with that standard MIDI bandwidth.
Not my video, but this is how it sounded for MIDI Doom PC in 1993 ;-)
https://youtu.be/tT_dUpSYwZU (https://youtu.be/tT_dUpSYwZU)
I doubt that CPC games will need something better. This is what you can and could do with standard GM MIDI.
I think its great if the CPC adopts GM for MIDI . Like the PCs did in the 90s.
And if you don't like USIfAC for waitstates, then use Speak&SID or LambdaSpeak 3 that doesn't need waitstates for serial... it doesn't really matter which of the dozend CPC serial interface cards you are using as long as they are doing 31250 bps.
Here is an example: MIDI IN via LambdaSpeak 3 from the Microkorg keyboard (no sound from there, only for MIDI input), then sound from the CPC via AY-3-8912, and then also MIDI OUT of the MIDI IN notes (= MIDI THROUGH) via LambdaSpeak 3 to the Yamaha QY100 sound module. So this is MIDI OUT to a GM module via LambdaSpeak 3. Of course MIDI OUT could also be programmed (even from BASIC) to play the Yamaha QY100. In fact, the MIDI IN -> MIDI OUT is performed by the CPC MC program, not by the hardware.
https://youtu.be/6QqvawZSxjA (https://youtu.be/6QqvawZSxjA)
I must say, given the availability of these old "90s GM expanders" (for 50 $ on Ebay), I would probably just get one of these instead of a modern "mini MIDI GM breakout card". But then you need proper MIDI DIN.
And, btw, the BAUD rate of the SAM2695 is 31250 BPS TTL MIDI max anyhow, so you can't go faster than this no matter if you are using a serial or parallel interface to the CPC.
I am not using the serial mode but the parallel mode of the SAM. That's the point, there is no baudrate involved here. I can send bytes as fast as I want with OUT instructions and don't need to wait between each byte to make sure I don't overflow a slow serial link.
It's not a matter of the number of bytes you can send, but of sending them quite fast in a single burst, and then use the remaining CPU time to do other things. Yes, it will not allow me to play better music, in most cases. It will allow me to play the same music, using less CPU time so I can do something else at the same time.
Quote from: PulkoMandy on 19:46, 13 November 20I am not using the serial mode but the parallel mode of the SAM. That's the point, there is no baudrate involved here. I can send bytes as fast as I want with OUT instructions and don't need to wait between each byte to make sure I don't overflow a slow serial link.
So you are saying that you need to send MIDI message with more than 31250 BPS ~ 3.8 KB/second because standard MIDI is not fast enough for your applications... hmm... Curious to see games taking advantage of that. Need a big memory expansion then for that "HighDef" sound.
Sorry, I don't buy that argument. The CPC interface to the serial card is also parallel. Buffer overflow (in the serial card) shouldn't even happen with standard MIDI...
Does WILLY stand for anything?
After all, it doesn't really matter if parallel or serial... I was just curious about the rationale.
Fine.
If you can get software devlopers lined up to support the product, I will buy one for sure! I'd love to have a GM MIDI sound module for the CPC :)
Quote from: Skunkfish on 19:56, 13 November 20
Does WILLY stand for anything?
WILL You like MIDI and OPL3 on Amstrad CPC ? Just a proposal !
By the way, you dont mention the Covox4 also by Serdashop, but it should also be used with WILLY, except using more CPU to send the data ?
Quote from: genesis8 on 20:12, 13 November 20
WILL You like MIDI and OPL3 on Amstrad CPC ? Just a proposal !
By the way, you dont mention the Covox4 also by Serdashop, but it should also be used with WILLY, except using more CPU to send the data ?
Is there anything different in a Covox4 than a DigiBlaster? I thought we had all this "poor mans" parallel-port->DAC conversion stuff for the CPC already...
Quote from: VintageAdvantage on 20:18, 13 November 20
Is there anything different in a Covox4 than a DigiBlaster? I thought we had all this "poor mans" parallel-port->DAC conversion stuff for the CPC already...
Directly quoted from Serdashop page for the Covox 4 (https://www.serdashop.com/CVX4 (https://www.serdashop.com/CVX4)) :
CVX4 uses very high precision 0.1% all same value resistors, and a reverse engineered schematic (based on a real original covox) for excellent 8 bit sound. Other DIY clones use 1% or 5% resistors, different schematic, ...you can compare... CVX4 sounds way better...For an example of the Covox 4 sound card, look the video I did of it on my Amstrad PPC 640 : https://youtu.be/vPtikDYTh5E (https://youtu.be/vPtikDYTh5E) Beware I think I was using old PC speakers in this video and it is taken with my phone, so quality with good speakers and captured directly should be even better.
Thanks, and it does have a reasonable price.
Seems they went to great lengths to hand select the precision resistors... I am wondering if a real DAC chip would have also been an option here, like in the Amdrum.
Quote from: Skunkfish on 19:56, 13 November 20
Does WILLY stand for anything?
Not exactly. There is a very silly naming system for my interfaces and I guess it makes sense only to me.
FlashGordon (https://en.wikipedia.org/wiki/Flash_Gordon) is inspired by Silver Surfer (http://wiki.icomp.de/wiki/Silversurfer)
Albireo (https://en.wikipedia.org/wiki/Albireo) is inspired by Deneb (https://www.vesalia.de/e_deneb.htm)
And now Willy (https://en.wikipedia.org/wiki/Free_Willy) is named after Flipper (http://amiga.resource.cx/exp/delfinaflipper)
Well, now you know, but I guess it isn't particularly helpful.
Quote from: genesis8 on 20:12, 13 November 20
WILL You like MIDI and OPL3 on Amstrad CPC ? Just a proposal !
By the way, you dont mention the Covox4 also by Serdashop, but it should also be used with WILLY, except using more CPU to send the data ?
No, the Covox one won't work with this interface, it would need one more chip. It is indeed similar to the digiblaster, and if you get the SoundPlayer NG from Futurs', it has an integrated resistor network which should give quite good quality (unlike the previous versions using separate resistors). I think there is no need for a more complex interface here?
I think the TND2LPT will work, and the CMS2LPT will partially work (only one of the two SAA1099 chips can be addressed, it would also need an extra chip). But I don't own these to test and check, and I think they are not extremely useful (quite similar to what the CPC can already do)
I have now put an information page on Shinra website (https://pulkomandy.github.io/shinra.github.io/willy.html)with better pictures of the board, programming information, and other details. I will continue updating it as software becomes available.
Hi!
No one wanted to do something with this hardware. So, finally I wrote some code myself.
Here is a player for uncompressed VGM files: https://framagit.org/shinra/vgmplay
It can play files using the OPL2 and OPL3 chips for now (so mostly PC and some Arcade games). It can only play uncompressed files, so the memory is rather quickly filled up with sound data (these are like YM files, register dumps to write to the chip). Timings in VGM files are at 44100Hz resolution but I'm converting them to 50Hz or 300Hz and it seems to sound similar enough to the original music.
Here is a little demo: https://twitter.com/pulkomandy/status/1401634143881121798
I think this means the interface is now ready for buying since it is actually useful. So let me know if you want one :)
I would love a unit.
All CPC/CPC+ compatible ?
Yes (except the GX4000 because there is no expansion port, of course)
Doh, I thought I had already wrote about willy on my web site, and in fact not really.
There are so many things in my queue of things to be written...
Well in a few minutes.
Quote from: PulkoMandy on 21:54, 06 June 21I think this means the interface is now ready for buying since it is actually useful. So let me know if you want one
I would love to buy one :). What would it cost with shipping (Poland)?
The cost is 10€ and it includes shipping.
In that case, one piece, please :).
I would be interested in one as well. Could you count me in?
Yes.
Last one for this first batch.
I will take preorders from now on for a second batch (I will wait a few days to know how many boards I should order).
One for me on the next batch if possible, and dont say to me that you didnt think about Arnold and Willy !
2 for the new batch please. Is it possible to choose between edge or centronics plug ?
The connector is "Mother X4 compatible" HE10. I do not provide any cable or Mother X4 board currently, you have to get one separately.
Quote from: PulkoMandy on 15:24, 08 June 21
The cost is 10€ and it includes shipping.
Awesome price!!! Please two for me too (next batch).
Would be nice if I can support them with some software, even if I'm having much to do at the moment.
Would the M4 (or other Mass Storage Solution) be fast enough to deliver the data fast enough for streaming so bigger files than 64k "could" be played as well??
Probably. I could make some tests with UniDOS which provides an API for loading data from files in a modern and efficient way.
But the files should also compress very well and that's the typical thing to do (for example with YM / AYC files). This works because the data is very repetitive. There is also some CPU usage and size gains possible by optimizing the files before even compressing them. The files I'm testing with were generated from running games in emulators and capturing the register writes, and they tend to have very precise timing matching exactly what the game did. I don't really use this timing so I could remove most of the "wait" instructions (in some files that will be 25 to 50% of the data...). It would also simplify the player if all timings are expressed in 50Hz frames, and that would also probably help with the compression strategy.
About the price: an important reminder that this is only an adapter board. You need to buy the OPL3 or MIDI module separately from Serdaco. This is why this interface is cheap: there is only some address decoding logic and some connectors on it.
Quote from: PulkoMandy on 21:54, 06 June 21
Here is a player for uncompressed VGM files: https://framagit.org/shinra/vgmplay (https://framagit.org/shinra/vgmplay)
Hi PulkoMandy !!!
Do you think that VGMplay would works with AMSDAP ? (msx cartridge adaptor for cpc) and MoonSound (OPL3) ???
It could be adjusted to use different IO ports to work there, I think
(maybe then through MSXVR/moonsound "emulated" and CPC "virtualized" :o 8) )
on real hard world:
TMT LOGIC, Prodatron and crossover MSX-CPC moonsound owners will be very happy...
I know it's crazy. But I will like it a lot.
;)
thanks for your work, hardware, software and time. Mate!!
I'll try and check CPC + vgmplay + AMSDAP + MoonSound and report you...
Every MSX cartridge should work with AMSDAP apart from memory mapped cartridges. The MSX ports are translated into &FFxx whereas xx is the MSX port address.
Quote from: HAL 6128 on 19:36, 15 June 21
The MSX ports are translated into &FFxx whereas xx is the MSX port address.
Exactly.
Quote from: RockRiver on 16:39, 15 June 21
(maybe then through MSXVR/moonsound "emulated" and CPC "virtualized" :o 8) )
on real hard world:
TMT LOGIC, Prodatron and crossover MSX-CPC moonsound owners will be very happy...
I know it's crazy. But I will like it a lot.
;)
thanks for your work, hardware, software and time. Mate!!
I'll try and check CPC + vgmplay + AMSDAP + MoonSound and report you...
I also have an AMSDAP in the CPC, with the Symbiface III, I also have the MSX cartridge Monster Sound FM Blaster ( compatible Moonsound ), what you are saying is could it work on the CPC? playing music files? .... i'm waiting for the willy adapter to arrive, by the way :D
Quote from: PulkoMandy on 16:33, 08 June 21Last one for this first batch.
I will take preorders from now on for a second batch (I will wait a few days to know how many boards I should order).
Hi, PulkoMandy. I would buy two units from the second batch, if possible. Thank you!
Quote from: PulkoMandy on 15:47, 15 June 21
It could be adjusted to use different IO ports to work there, I think
- #FF7E - #FF7Fhttp://map.grauw.nl/resources/msx_io_ports.php (http://map.grauw.nl/resources/msx_io_ports.php)
Then, this is same ports on VGMplay ? :)
I will check PulkoMandy's VGMplay CPC with AMSDAP/MoonSound OPL4 Cartridge; and MSXVR coder would implement MoonSound device emu on CPC "virtual machine"
8)
VGMPlay uses the Willy ports: FEBC, [/size]FEBD, and [/size]FEBE. But it can be recompiled to use different ports.
[/size]
[/size]Note that for OPL3/OPL4, at least 3 ports are needed, this is because there are more than 256 registers, so an address bit is used to extend the register selection port.
Quote from: PulkoMandy on 12:42, 18 June 21
VGMPlay it can be recompiled to use different ports.
thanks!!!
special VGMplay CPC version for AMSDAP/MoonSound and MSXVR users...
please!!
Alberto from Vikalb/MSXVR coders can implement and is interested in Moonsound emu to MSXVR CPC VirtualMachine
great!!!
more users for your software and our loved system
CPC for ever!!!
chiptune for the people!!!
Preorders updates: currently I received preorders for 13 adapters. So I can plan for a batch of 20, unless I receive a lot more orders.
Summary of planned changes since the first version: only small changes, I had put some config jumpers on the first board that were in fact not needed. So I have soldered them in fixed positions. On the new version these are removed and I managed to make the board a little bit smaller again.
@Pulko, nowadays trying to mod your VGMplayer to AMSDAP/MoonSound ports... if i cannot, I'm bad with assembler, I will cry to you ha ha ha
I think you need to change:
Line 7: replace FE with FF (it is the high byte of the port)
Lines 59 and 73: replace BC and BE with the low byte of the register select addresses for OPL3 bank 1 and bank 2
Quote from: PulkoMandy on 13:17, 18 June 21
Preorders updates: currently I received preorders for 13 adapters. So I can plan for a batch of 20, unless I receive a lot more orders.
Summary of planned changes since the first version: only small changes, I had put some config jumpers on the first board that were in fact not needed. So I have soldered them in fixed positions. On the new version these are removed and I managed to make the board a little bit smaller again.
Hi
I would like to have 1 adapter too!
@PulkoMandy (https://www.cpcwiki.eu/forum/index.php?action=profile;u=26), Package arrived safely. Thanks a lot :).
@PulkoMandy (https://www.cpcwiki.eu/forum/profile/?u=26): Mine arrived too! Thanks for the quick dispatch!Now I need to grab an OPL3LPT...
I have also received my unit and now also have to purchase the other necessary hardware, but are you going to share your player to play VGM music? @PulkoMandy (https://www.cpcwiki.eu/forum/index.php?action=profile;u=26)
The player is available here: https://framagit.org/shinra/vgmplay
There is a link from the Willy page on http://shinra.cpcscene.net but no one reads user manuals, right?
Quote from: PulkoMandy on 07:48, 25 June 21
... but no one reads user manuals, right?
Absolutely no one, my experience too. :-\ :-X
Current preorder list:
- Genesis8 (x1)
- Abraxas_Clone (x3)
- kawickboy (x2)
- GUNHED (x2)
- Proteus (x3)
- deepfb (x2)
- Rambler (x1)
- Joseman (x1)
I have ordered the PCBs today, usually it takes about 3 weeks for them to be produced and shipped. Then I will start assembling and shipping the devices.
I have ordered 30 PCBs so I will have some stock left. This means you can continue to place orders if you want to.
Hello,
Everyone who preordered a board should have a message with payment instructions now.
If you want to order a Willy adapter, I have several more left, let me know!
Thanks for the Willys... Looking great!!! Now waiting for modules...
Meanwhile some questions...
- On the PC printer port, which signals are there at which pins?
- Can the port be used for other LPT expansions too?
Following standard parallel port numbering:
- A0
- D0
- D1
- D2
- D3
- D4
- D5
- D6
- D7
- /RESET
- Not connected
- Not connected
- VCC
- See below
- Not connected
- See below
- See below
- Other pins at GND
Pin 14 is active (low) when:
- IORQ is low (the Z80 is executing an IN or OUT instruction)
- The address matches what's selected in the address jumper
- A1 is low (so only the first two addresses of each range are used in this case)
Pin 16 is active when:
- Z80 is executing an OUT instruction (/IORQ and /WR are both low)
- The address matches what's selected in the address jumper
- A1 and A0 are not checked, so this allows to detect writes to a range of 4 different addresses
Pin 17 is configured with a jumper:
- In OPL3 mode it is wired to A1 (allowing to access the second bank of registers in the OPL3)
- In S2P mode it is wired to /RD (allowing to detect IN instructions to read from the S2P midi chip, in combination with pin 14)
This may work for some other parallel port expansions as well, but not all of them (they don't always use the control pins in the same layout, sadly). It will probably not really work for printers (no BUSY signal, and a few other things are missing)
The available addresses on the jumper setting. By moving the jumper you can decide at which address you want to map the Willy device:
- FE84 to FE87
- FE8C to FE8F
- FE94 to FE97
- FE9C to FE9F
- FEA4 to FEA7
- FEAC to FEAF
- FEBC to FEBF
The range FEB4 to FEB7 is not available because it is used by the UART chip in Albireo and that would result in a conflict if both cards are used together.
Maybe I will make other hardware using this port, it is quite generic if you need:
- No more than 4 writable registers
- No more than 2 readable registers
Thank you very much!!!
I added a video on http://amsnet.chez.com which demontrates several things:
- Willy+OPL3LPT capabilities with a few different game musics.
- A VGM player capable to play all (uncompressed) VGM files using OPL (YM3812/YMF262) and/or AY chips (AY-3-8912).
- How easy it is to handle directories and file streaming with UniDOS (thanks to the new cmd_cas_in_seek and cmd_cas_in_read vectors).
- Video was recorded with ACE emulating the Albireo and the Willy+OPL3LPT sound card.
On the video, border color illustrates CPU usage:
- Green is free CPU time (Z80 just waiting doing nothing).
- Blue is VGM decoding and access to OPL3LPT.
- Red is access to mass storage (to read next VGM buffer).
Of course VGM format is not that good (huge and overkill), but we can see how low is the CPU usage to handle the OPL.
Now, that's true that just playing old OPL musics is not that intesresting, but good trackers exist for this chip...
With a proper player and good artists we could have funny things in next CPC games and demos. 8)
Quote from: OffseT on 08:47, 13 September 21OPL3LPT
That VGM player will it work with an OPL2PLT card?
It should, yes (for OPL2 files).
Hello,
With help from LambdaMikel (well, more than help, he wrote all the code and I just had to change the OUT address to adapt it to my hardware), we now have a way to play MIDI music on Willy+S2P!
https://twitter.com/i/status/1487378687242690561
Good news 👏👏👍👍
Yes, he's a very nice and supportive guy. :) :) :)
I am currently porting the SA2 player to SymAmp, and I can already play some songs, which is cool, thanks, PulkoMandy :)
I have one question: the SA2 player by Madram is working nice, but most commands don't seem to be implemented? It doesn't seem to be a problem with most of the SA2 modules, but e.g. the BPM works bad (like "dear rob")Anyway, it's a very cool hardware project! :)
Yes, unfortunately the SA2 player does not implement all commands. The BPM is maybe not so easy (or at least it will not be completely accurate) with only the 300Hz ticker of the CPC. Initially I wanted to use the OPL3 timer, but it turns out this is in fact not accessible on the OPL3LPT card.
https://www.youtube.com/watch?v=r1iELdN3H0I
Here you can see the SA2 plugin for SymAmp in action. I already added the speed command (F), I just use the simple formular
ticks=750/BPM
With the exception of pattern break no other commands are implemented yet, so it's quite interesting, that many modules already sound good. I will probably implement some of the commands as soon as I find out how exactly to manipulate the frequencies and the volumes.
The source code of an x86 DOS player for the Surprise! Adlib Tracker 2 is included here...
https://adplug.github.io/library/files/SurpriseAdlibTracker2.zip
...so it should be quite easy to add the other commands.
SymAmp, the ultimate player for Amstrad CPC !!!
Here is a new video:
https://youtu.be/jOsQIzqdpRs
Most effects are now implemented:
- arpeggios
- slide up
- slide down
- portamento
- portamento + volume slide
- volume slide
- set volume
- pattern break
- speed
"vibrato" and "release" are missing, as well as these special arpeggio instruments, no idea about them currently.
It always seems to be a good idea to take an existing code and port/use it. This is probably what MadRam thought when porting the x86-based "QDPlayer" (yes, "quick and dirty", at least the austrian guy kept the humor :) ) for the SA2 format (Surprise! Adlib Tracker 2) in 2000-something. He was able to play SA2 files (Adlib = OPL2) on the CPC via the CPC-ISA project, which was great!
Anyway I think it would be better to recode everything, as the original x86 code is IMHO shit. I tried to remove most of the original stuff and it's quite ok now.
@PulkoMandy - can I buy 2x adapter