The kxmx_bluemchen - An open source, 4hp, Daisy based Eurorack module

MIDI - yes. MIDI changed music generation, why go back to the 70s ?
OLED - yes.
SD-card - not on the front panel. But would be nice to be able to reprogram the Daisy from the front panel. Problem is you need the reset and boot pins as well as the USB or UART pins, which gets complicated.

MIDI yes, OLED yes, SD-card yes, it makes it more compatible with Patch, so you can have granular synth, sample players, recorders etc.

After trying and testing a few thing, I made some decisions.

  1. MIDI in stays, although I might drop the bridge-rectifier and just stick with one of the two TRS variants like every other module, there are adapters for this.
  2. MicroSD is being added to the front panel. There is just enough space for it, and the position makes for nice short traces and easy routing.
  3. OLED stays. I got it working, and I find it looks pretty cool and will probably be quite useful.

While I can appreciate the wish for bringing the USB port to the panel, this is just too complicated. Anyhow, I see the USB firmware upload mechanism for folks who aren’t developing, but flashing pre-compiled firmware, and probably not too often. Anyone who is actually developing firmware will want access to the debug pins.

Now the features are set, I’ll try and finalize a hardware design and order a final prototype soon.

8 Likes

Heya! First off, woah! What a cool project; looks great!

Looking at the TDM format as shown in the Datasheet, it looks like this would be totally possible. Depending on the Peripheral architecture of the teensy, it may not be trivial to port the driver, but SAI2 can be configured for 8 slots of 32 bits (256 bits total per frame) for each channel. The limitation being that it can be a maximum of 256 bits in a frame.

Setting up that configuration shouldn’t be too hard, and then it looks like either SPI or I2C can be used to control the codec.

1 Like

This project is very exciting, that’s exactly what I was looking for or considering to make. The form factor (and being a kit) are much better than a Patch to me.

My current attempt was to get a Radio Music PCB + Panel kit just to use the front board on top of the Daisy Seed. It works well for the audio out (but only mono) and the knobs, but then things get more complicated about the switch (pulldown design, works but noisy) and the analog vs. digital 3V3 confusion, not even talking about the CV inputs…

About the bluemchen, ideally I’d love to be able to repurpose the audio IN into CV IN when needed (a jumper somewhere for the DC coupling?)

If/when anyone wants to share a PCB/BOM/SMT assembly batch I’m in for a few units :grinning:

I was also hoping to make this possible, but it is not due to a design decision Electrosmith made with the seed. The codec they used has a digital high pass filter on the ADC side which cannot be disabled in software. I made mention of this a while back here:

I’m currently waiting on my second revision PCBs to be delivered. I hope to populate and test this revision in the coming weeks. If all goes well, I plan to offer a few DIY kits with parts and through-hole only soldering soon after. I’ll be updating this thread with my progress, so stay tuned if you’re interested.

1 Like

Great, I’ll wait!

On the DC coupling thing, perhaps the ability to re-route the audio IN signal conditioning to ADC of the Seed via jumpers would make some sense to offer more modulations for synth-ish applications (no need for extreme accuracy). But even without that the project is very appealing for sure.

One potential solution is to buffer the Audio input, and split it to a bipolar->unipolar CV circuit, and to the audio input circuit.

This would allow you to read it as DC-blocked CV or as audio, but would require a few extra op-amp channels.

Not sure I understand your suggestion - maybe a schematic. But anyway if people want to read DC signals with the audio ADC, one possibility is to set up a free running timer on a GPIO and drive a chopper transistor. Google for “chopper stabilised op-amp” from back in the days when a 741 was state of the art and you’ll find all the theory on this.

1 Like

Something along these lines, is what I was suggesting. This is just copy/paste from the Daisy Patch sch, but buffers the input before going to each destination amplifier.

Fascinating about the chopper transistor. A lot of interesting stuff to read on that.

EDIT
It was pointed out to me that the output says 500mV to 500mV – this is a typo, and should read “500mV to -500mV”. Apologies for any confusion.

Is that comment in the schematic correct? Audio signal output is 500mV to 500mV?

The +/-500mV (aka 1Vpp) is from a 10Vpp signal. The AK4556 clips at about 2.1Vpp, so this allows for about 6dB of headroom. That covers pretty much anything within the Eurorack rails, minus diode drop, etc. (about 20Vpp)

The schematic says 500mV to 500mV, which doesn’t make sense. It’s a typo, but should be corrected.

There are some interesting ideas here for getting DC and low frequency signals into the digital realm, but they seem (to me) to make compromises in order to get there.

This seems like a good idea for DC and low frequency signals, but would it not limit the upper bounds of the usable bandwidth to half of the chopper frequency? Additionally the chopper frequency would theoretically be limited to at most, half the codec sample rate, right? If I understand correctly, this means you’d need to disable the chopper in order to use the codec channel for audio purposes.

Indeed, this allows you to sample the signal at frequencies down to DC using the ADC of the STM32. In a space constrained design, this is interesting as it essentially allows for the re-purposing, or even simultaneous use of an input jack in software. But you’d also have an upper bound on the usable bandwidth unless you sampled the ADC of the STM32 at the same sample rate as the audio codec.

Both of these ideas though, require treating DC/low frequency signals different than higher frequency (lets say >10hz) signals in software. In the analog realm of modular synths, this distinction is not nearly as strict. I’d find it more intuitive to have access to codes at DC, low frequency, and high frequency inside of the AudioCallback at the audio sample rate. I think that would make for some creative modulation possibilities.

All of this is only really relevant when dealing with a “platform” type module like the Patch or the kxmx_bluemchen (or the Disting, o_C, etc.), where the hardware defines the constraints of the software you flash to it. Otherwise, you’d typically design for your goal function anyhow, turning these kinds of compromises into decisions.

Specifically to the kxmx_bluemchen, I’m not considering any of the above mentioned workarounds. If a future revision of the Seed supports reading DC/LF signals with the codec, that’s cool, otherwise it’s just another constraint to consider when writing the software you’d like to flash to it.

1 Like

@recursinging : yes that’s a correct understanding of using a chopper. But as it’s software controlled, just stop the chopper if you want full bandwidth audio to pass through. I can’t think of any signal that is full audio bandwidth and needs a DC component - in fact DC is what you need to get rid of in most audio signals. Modulation frequencies tend to be less than a kHz or two at most, usually far lower.

I’d also not support changing the Daisy Seed as once you enable DC into audio ADCs you often get all sorts of biasing problems, which will cause more hassle than it solves for less experienced users. This is why the defaults on audio ADCs are usually HPF enabled.

2 Likes

@MikeDB In my very limited understanding, a FM Input would require DC and Full Audio Rate or do I misunderstood something?

Surely it requires DC or full audio bandwidth. For CV operation you obviously need DC, but the Daisy does have several ADC inputs which can sample at 16 bits/3.6Msps so no problems there.

For FM synthesis you could use the ADCs with some additional circuitry, but it is probably easier to use the audio input. But if the modulation signal has a DC offset then the carrier oscillator will be offset from the proper frequency and so the results will not be harmonically related. But if this is what you want then the same effect can be simulated by adding a DC input on an ADC (or a software constant) to the audio ADC.

In any case for normal operation we need to ensure the modulation and carrier are harmonically related, so they really should both be generated on the Daisy so they are using the same clock, otherwise the results are going to be a bit unpredictable.

2 Likes

So, I got the rev-2 boards mostly soldered up (those vertical microsd sockets don’t seem to exist outside of Thonk), plugged it in, only to hear this:

To the left and right of the pilot tone you might notice the dozens of noisy little spikes, each one poking a little hole in my ego, and letting my motivation drip out the bottom.

I spent a few hours isolating things to track the problem down. I’ll spare you the gory details and just share my solution; I soldered a 24 gauge wire between the Seed AGND, DGND pins, and the Eurorack Power GND pins. This is what I got:

Notice the scale of the graph… Blissful silence (well almost).

OK, so I kinda sorta suspected this might bite me in the ass. In order to keep the back PCB at two layers, I had to route the GND (AGND & DGND) nets around the board using traces, as the routing is far too dense for any substantial contiguous copper areas. Sadly, it seems that workaround just won’t cut it for the Daisy.

I see two possible solutions to this problem:

  1. Change the back PCB to a four layer design with proper GND planes.
  2. Re-design the front PCB (which is much less dense) to have generous, contiguous GND copper areas, which should effectively do the same job as the jumper wire currently.

#2 is the most economical solution. Four layer boards cost about 5x as much a two layer boards, even if they are now cheap enough to not be considered a barrier of entry. Relying on the front PCB also means the back PCB can’t effectively be used without it, something nobody outside myself probably cares about.

In conclusion, it’s getting there, but I’ll need to do another revision to get this sorted out.

3 Likes

Thanks for sharing the progress, it is progress indeed! You didn’t ask, but just in case I’d believe option #2 is worth exploring.

It is, but it might be a dead end. I’m not sure how to quantitatively determine whether or not the disparities in potential between points in the current GND network of traces (what I assume is the problem) would be relieved by a copper area joining the through hole junctions above it. But, I guess that’s exactly what the jumper I soldered in does.

A network analysis of the analog audio circuitry without the Seed showed a -90dB noise floor, so that part of the design is fine. Quieting the ripple of the Seed’s DC-DC power supply with additional filtering did nothing. Only in conjunction with the effects of the Seed’s STM32 on the ground traces do the noise problems arise. That’s why I suspected the Seed AGND, DGND and Eurorack power GND nets need a lower impedance path to each-other. Copper areas on the top board should be able to provide this, I guess.

It’d just be unfortunate if I go through the process of making another revision only to find that option #2 doesn’t solve the problem.

1 Like