VOGONS


AspringNobody's ATMega328 Based MIDI Module

Topic actions

Reply 20 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

To make things clear: I’m good with ulfenknulfen and I think he’s good with me continuing to make a MIDI module. My additional quirk modes will be open source so he can implement his own version if he chooses so everyone can enjoy.

Please don’t read too much into this, I just wanted to lay out my justifications for continuing in the way I am to avoid any legal peril and clear the air.

Reply 21 of 39, by dreamblaster

User metadata
Rank Oldbie
Rank
Oldbie
aspiringnobody wrote on 2023-01-09, 17:41:

I’ve got the display working but it adds some noise to the output. Maybe it needs its own power regulator?

Also, with the audio ground as it is I can get signal if it’s hooked up to my audio interface and it sounds fine, but I don’t have sound from headphones unless I connect the audio ground to the ground pin of the Arduino. I think I need an amplifier?

a separate supply could help to isolate the noise. just adding some caps on the supply lines may help too, how is it powered ?
also take care not to route your display wires parallel with audio lines.

you need to connect analog ground to digital ground, best at single point, it should not be floating
in your circuits

Visit http://www.serdashop.com for retro sound cards, video converters, ...
DreamBlaster X2, S2, S2P, HDD Clicker, ... many projects !
New X2GS SE & X16GS sound card : https://www.serdashop.com/X2GS-SE ,
Thanks for your support !

Reply 22 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member
dreamblaster wrote on 2023-01-09, 17:56:
a separate supply could help to isolate the noise. just adding some caps on the supply lines may help too, how is it powered ? […]
Show full quote
aspiringnobody wrote on 2023-01-09, 17:41:

I’ve got the display working but it adds some noise to the output. Maybe it needs its own power regulator?

Also, with the audio ground as it is I can get signal if it’s hooked up to my audio interface and it sounds fine, but I don’t have sound from headphones unless I connect the audio ground to the ground pin of the Arduino. I think I need an amplifier?

a separate supply could help to isolate the noise. just adding some caps on the supply lines may help too, how is it powered ?
also take care not to route your display wires parallel with audio lines.

you need to connect analog ground to digital ground, best at single point, it should not be floating
in your circuits

On my breadboard it’s just connected to the five volt rail at the same point as my decoupling capacitor. The ground is to pin 13 on the ATMega. It’s an SPI interface.

Reply 23 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

I spent this evening making some audio recordings with my breadboard to show the new software options (Quirk Modes). I've got a tune from FF7 and a tune from Descent this time. This song from FF7 is "Can you Hear the Cry of the Planet?" which is the song that plays in the Forgotten Capital.

First we have "Normal/Stereo"

The attachment FF7_Can_You_Hear_NORMAL.mp3 is no longer available

Next is the single synth voice -- everything but percussion is set to patch 81 -- Synth Saw Wave. This is the default for this quirk mode but you can set it to any patch you like via a midi command.

The attachment FF7_Can_You_Hear_SINGLEVOICE.mp3 is no longer available

Next up we have the "Boken MIDI" quirk mode. This one started by preventing the computer from setting the patches when a file loads -- but I realized you could do the same thing with the single synth voice mode by setting it to 00 -- piano. Now it re-assigns all the patches to be one of four options I've selected instead. Seems to sound good with a variety of tracks, but can be odd depending on the original patches. I could make this configurable but you'd have to send four different midi commands to do it, and it wouldn't persist through powercycles. Seems to be a lot of effort for a limited gain.

The attachment FF7_Can_You_Hear_BROKEN.mp3 is no longer available

Next is the low polyphony option -- configurable to limit the synth to between 1 and 15 voices with a midi command. It's set to 5 in this example. Kind of like what the NES did when it needed to stop playing a note to play a sound effect, but more random.

The attachment FF7_Can_You_Hear_LOWPOLY.mp3 is no longer available

Finally, we have the MIDI RANDOMIZER. Every time the computer sets a midi program/patch, the synth will randomly assign one based on one of 128 user selectable seeds. If you reset the reset to the same seed between plays you should (usually) get the same combinations. Left and Right ATMega328s will choose different voices. Can be subjectively bad, but sometimes has a cool stereo effect. This is seed 18:

The attachment FF7_Can_You_Hear_RANDOMIZER.mp3 is no longer available

Reply 24 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

And here is the song from Descent 1. This is the title screen music, one of my favorite tracks for comparing midi devices! I had to use an online converter to compress these so they would fit on the forum -- so the MP3 quality might not be perfect.

First we have normal mode:

The attachment DESCENT-NORMAL.mp3 is no longer available

Next is the single saw tooth synth mode:

The attachment DESCENT-SINGLEVOICE.mp3 is no longer available

This is the broken midi version. I think this mode sounds pretty cool with this track:

The attachment DESCENT-BROKENMIDI.mp3 is no longer available

Low polyphony -- I only used 3 voices this time. I think around 2:15-2:35 came out pretty cool and shows what this mode is about:

The attachment DESCENT-LOWPOLY.mp3 is no longer available

Finally is the RANDOMIZER -- seed 127 (the default) this time:

The attachment DESCENT-RANDOMIZER.mp3 is no longer available

Reply 25 of 39, by megatron-uk

User metadata
Rank Oldbie
Rank
Oldbie

I'm really liking those randomizer examples!

My collection database and technical wiki:
https://www.target-earth.net

Reply 26 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

I've got my first mockup of the MIDI module made. I'm waiting on some information so I can make it fit into a readily available case (from Serdashop) so some things will change I'm sure, but here's the progress so far:

Reply 27 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

The original Github design connects the GND pin of the screen to an unused digital I/O of the ATMega that I assume is pulled low (he says it reduces noise from the screen -- on my breadboard it's hard to say). I'm unsure if this is necessary now -- I've used an entirely separate voltage regulator that just powers the screens. Should I still ground the screens to the ATMega or should I try it like this first? Also should I separate the ground planes for the digital section and the screen section? It would probably mean I have less overall ground coverage.

EDIT: I went ahead and separated the ground planes. Can't hurt, right?

It forces all the (digital) ground through a narrow strip near the left ATMega but I added some VIAs to attempt to share between both layers. Actually, I added ALL the VIAs. Way too many. 10x too many.

Reply 28 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

Alright here's the first attempt at making the board match the dimensions of the Chillbox enclosure from Serdashop. I'll have to see if I can convince Serge to make a top shell with cutouts for the screens 😀. I'll eventually order some of these PCBs just to confirm it will fit in my Chillbox.

I still need to verify the schematic, add stitching vias, and trim the audio ground plane since there's so much unused space at the top of the board. I think I'll be able to order some PCBs and get these started in the next few days. I'll probably order some of the more compact version from the post above as well for people who either want to make their own case or aren't going to use a case. It's got smaller overall dimensions, so it is probably better for people with a 3d printer.

Although so far only one person has shown any interest in these. I'll probably make a few with any leftover parts I have to use up and then post the Gerber files for people to DIY if they want one. I think the wavetable module is going to be the more popular of the two devices with this setup, esp. since you can pop it in a Chillbox and end up with the same result + the beep-mode that mine doesn't have. It's been a valuable learning experience for me though!

- Evan

Reply 29 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

I will have:

Four wavetable header boards (PCBs ordered before the drama started) and three midi modules available for purchase next week. There will not be wavetable header boards available from me after these four. I may make more MIDI modules if there is enough demand, but highly unlikely. If I ever do make more expect them to cost more.

I had to resort to Amazon to source the ATMega chips and they were EXPENSIVE. $10/board is just for these chips.

Target pricing is $40 for the wavetable boards and $50 for the midi modules. Your choice of the Chillbox version or the more compact board.

I’m not providing screens for the midi modules, but there will be a socket on the motherboard ready for you to add screens of your choice. The 1” ones are about $7/each on Amazon. The ones you need are the “SPI” version with 7 pins. The I^2C models will not work.

You will also need a 9V 2.1mm ID 5.5mm OD AC adapter for the MIDI Module version. 12V also acceptable but will put more stress on the linear regulators.

No soldering required, comes assembled and tested. ATMega chips will be in sockets.

I will charge a reasonable shipping fee, whatever it costs me it costs you. Feel free to send a PM with an address for an exact price.

Cheers,
Evan

PS I’m open to people on YouTube who make the wavetable comparison stuff getting a 50% discount so they can document the device. No requirement to make a review or anything like that.

Reply 30 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

The single clock boards don’t work. The slave ATMega doesn’t do anything. To make it work you probably would need a dedicated flashing setup that outputs a clock signal so the board can finish flashing the boot loader. Once it sets the low byte to E0 it fails for me.

I bricked about $50 worth of ATMegas so I’m done trying. I’m going back to the dual crystal design.

Reply 31 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

I've reworked the board so that it will hopefully fit into the Chillbox while still using the smaller layout.

Here's a first draft of the case. The two holes on the front are for left and right channel's displays:

The attachment ATMIDI CASE.png is no longer available

The holes from left to right on the rear are for MIDI, RCA audio, and power:

The attachment ATMIDI CASE REAR.png is no longer available

The case prints in six pieces and is held together with four screws from top through to the bottom. If I keep with the blue and black colors I will probably use brass screws. There will be rubber feet on the bottom to keep the screwheads from scratching the table:

The attachment ATMIDI CASE FLAT.png is no longer available

Reply 32 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

So, I've got the first working MIDI Module prototype working! I'm amazed, to be honest, how clean the audio output is. On my old breadboard setup the noise floor is -- really bad. I thought it was a limitation of the ATMega, but as it turns out with some help from dreamblaster and a good circuit layout -- it is not! Super low noise floor!

Here's some samples. BTW the randomizer now plays the same voice on both stereo channels.

Warcraft 2 Human 1:

REGULAR:

The attachment WC2_ALLAINCE2.mp3 is no longer available

Bad MIDI:

The attachment WC2_ALLAINCE2_BM_MODE.mp3 is no longer available

RANDO:

The attachment WC2_ALLAINCE2_RANDO.mp3 is no longer available
Last edited by aspiringnobody on 2023-01-19, 06:40. Edited 2 times in total.

Reply 33 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

Warcraft 2 -- Horde 2:

Regular:

The attachment WC2_HORDE1.mp3 is no longer available

Bad Midi:

The attachment WC2_HORDE1_BM_MODE.mp3 is no longer available

RANDO:

The attachment WC2_HORDE1_RANDO.mp3 is no longer available

I've added the old different voices for each stereo channel as a new mode, as well, so we didn't have to choose:

The attachment WC2_HORDE1_OLDRANDO.mp3 is no longer available
Last edited by aspiringnobody on 2023-01-19, 05:35. Edited 1 time in total.

Reply 34 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

And finally, FF7's the Oppressed. For a little BEFORE and AFTER:

BEFORE:

The attachment ff7_stereo.mp3 is no longer available

AFTER:

The attachment FF7_THE_OPPRESSED.mp3 is no longer available

Bad Midi:

The attachment FF7_THE_OPPRESSED_BM_MODE.mp3 is no longer available

Rando:

The attachment FF7_THE_OPPRESSED_RANDO.mp3 is no longer available

Two takes of Dual Rando (bonus points here for the random sea/breeze noise halfway through the second one -- epic):

The attachment FF7_THE_OPPRESSED_OLDRANDO.mp3 is no longer available

Reply 35 of 39, by dreamblaster

User metadata
Rank Oldbie
Rank
Oldbie

Sounds great!

Visit http://www.serdashop.com for retro sound cards, video converters, ...
DreamBlaster X2, S2, S2P, HDD Clicker, ... many projects !
New X2GS SE & X16GS sound card : https://www.serdashop.com/X2GS-SE ,
Thanks for your support !

Reply 36 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

First full case print is almost done! Just a smidge of under-extrusion to fix but other than that making good progress learning to 3d print!

Reply 37 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

First case assembled. I should get the final revision PCB by Monday and as long as the mounting holes line up it’s time for assembly! The second case is printing now in black. I’ve got silk blue, regular black, and regular white as options for cases. I’ve included a picture with the Chillbox M for scale.

So far I’ve only had one person interested so I think I’m just making the current batch of boards. The midi module is much more niche than the Beepblaster since that’s easily used in pretty much any retro computer. Not many people are set up for external midi.

For those wondering my prototype wavetable module ended up in my Korg NS5R and works great. You can even send the midi control messages for the quirk modes to the module inside the Korg and they work perfectly!

I think my next project is going to be a module that has four wavetable headers and uses some clicky relays (like on the early voodoo 1) to switch between them with midi commands. I might make a PCB for doing the same but with a front mounted switch instead.

I’ll be able to put all my serdaco waveblasters in one box then (Q-Wave, E-wave, Mcfly, and S2)

I want to buy a crystal blaster but that’s been out of stock for a hot minute.

Maybe a six way box the same footprint as a half rack midi module?

Reply 38 of 39, by matze79

User metadata
Rank l33t
Rank
l33t

It looks great!

I would not stop efforts on wavetable... its fully ok.
Yeah i personally also don't like a crowd of many external boxes 😀

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

Reply 39 of 39, by aspiringnobody

User metadata
Rank Member
Rank
Member

Well, the project is finished. The final board revision is completed. The headers will be on the board for the screens but I won’t be using them sadly. Independent power supply or not — grounded to the ATMega or to the board — the level of digital noise they put on the audio output is simply unacceptable.

I^2C is a potential solution but that would require refactoring the code and redesigning the board and I’m just not going to do that. The bits and bobs are there for people who care about the screens — but I want a low noise floor so that’s what I’m going to focus on.

I have some screens in stock so I can provide them if anyone wants. I suppose I can even include a blank front panel and one with the screen cutouts as an option.

If I were going to do it again I would have added a third microcontroller to just handle the display. But hindsight being 20/20 I think I’m going to put this one in the books and move on.

Next up is an OPL4 waveblaster board. Open source, of course!