advertisement


Semi-active Ergo III-Rs using MiniSHARC and UMik-1. How to model?

Getting very close now!

LK271H4.jpg


The picture doesn't do it justice - I'll take some proper shots later once the signal output wires are tidied up. For now, it's about 90% done.

You'll see I've swapped out the Salas BiB regs for a Placid HD and HD BP. This was because I wasn't happy with the heatsink arrangements, and because it was a pain in the arse to reconfigure the CCS to shunt the correct current for this setup. In the end, the Placid HDs allow super easy tuning of CCS via trimpot (voltages are set with fixed resistors), which was exactly what I needed.

The Placid HD BPs are powering a pair of Ivys each. They're set to shunt 100mA per rail. The Placid HDs power a single Buffalo each, with shunt set to 50mA.

I also realised that the WaveIO has a jumper to select between 2 USB inputs: one onboard, and the other via 5-pin header. I hooked the jumper up to a 2-pole relay controlled by the Arduino so that it's easy to have two USB audio inputs, which is perfect because I want 1 for my Raspberry Pi-based Roon player, and the other for my Raspberry Pi-based Kodi movie player. The relay is a 4-way job that I got from Sainsmart.com for less than $10. I could have used a simply transistor switch, but I couldn't be bothered pulling apart the Arduino daughter-board to solder in the required components, and I had free relay... so... no brainer ;)

I've also used a pair of relays to control power to the WaveIO and the TOSLink module. The Arduino can switch them on and off depending on the input source currently selected.

It's so close I can smell it!
 
It lives! It made music today :)

Interestingly, there's an error in Leon van Bommel's Buffalo build manual (v2.1.3) that was driving me crazy for the longest time...

The MiniSHARC is sending 2 stereo channels (4 channels in total) of I2S signal to the Buffalo via the Buffalo's inputs at D2 and D4. I'd applied the appropriate jumpers on the bottom of the Buffalo to tie I2S inputs D2+D3 together, and D4+D5 together. The jumpers are called JPCM1 and JPCM2 according to page 33 of the build manual:

kL90A8Z.png


However, when applying an I2S signal to only D2/D3 I expected the output to come out the Buffalo's outputs 1+2 and 3+4. Instead, signal was present on ALL of the Buffalo's outputs (1+2, 3+4, 5+6, 7+8)!

It turns out that the manual is wrong. The correct mappings are:

JPCM1: join inputs D2 + D3
JPCM2: join inputs D3 + D4
JPCM3: join inputs D4 + D5

Because of this, I'd bridged the wrong inputs and the signal routing was all messed up. After debugging it and applying the jumpers on JPCM1 and JPCM3, everything worked perfectly.

I've submitted a thread to the Twisted Pear support forum but it's awaiting moderator approval. I'm amazed this hasn't been found to date!

Edit: Apparently it has been found, but the change didn't make it to the manual! http://twistedpearaudio.com/forum/posts/m21761-Buffalo-III-PCMDSD-connection#post21761
 
To your first sentence, "WAHEY!!!!!!"

To the rest, "que?"

So, how does the jazzed-up-to-the-wazoo E-IIIR sound compared with passive amplification?
 
So, how does the jazzed-up-to-the-wazoo E-IIIR sound compared with passive amplification?

No idea! I've only used it as a standard preamp so far, and that was with a lash-up of wiring. The gain-setting resistors on the DAC I/V stages weren't the correct value (gain is reduced by 1/2 just now, so that the preamp can only output ~ 1VAC RMS instead of ~ 2VAC RMS).

I also need to finish wiring the remaining DAC -> I/V cables, swap out some heatsinks... lots to do before the amp is fully functional. And then I'm only just beginning! After that I'll need to measure the speakers, generate FIR filters, and tweak.

It's a long slog :)
 
I'm glad you have the patience. Mind you, it took me two years to finish the E-Xs. Your electronic gubbins are even more gobblygooky to me than the active filter I had to build.
 
More progress. The DAC wires are cut to size and soldered:

z6UfUWR.jpg


The DAC you see there is doing duty for subwoofer and woofer signals. It's split into 4 DAC channels for the sub (mono) and 2 stereo channels for the bass drivers. The top Ivy is dedicated to the sub and the bottom Ivy is dedicated to the bass. The sub signal is taken from an Ivy's balanced output because the Rythmik F15HP can take a balanced signal input. The rest of the DAC outputs are all unbalanced to maintain compatibility with the HackerNAP.

The Arduino is mostly installed, with only the display and volume to wire up. It looks organised on top, but the underside of the red shield board is a rat's nest of wires and resistors!

f4SJjeq.jpg


Talking of the Arduino... one of the challenges of this project is that the MiniSHARC doesn't have any documented interface for controlling or querying its state. For example, it's not possible to programmatically get or set the current DSP volume setting, nor can you change the DSP config or select its inputs.

There are hacks that involve connecting to the MiniSHARC's I2C bus to sniff the volume/mute/input commands and then replay them with an Arduino, but that's complicated and requires linking the Arduino's ground to the MiniSHARC's ground. This would break one of the golden rules of the project (anything connected to the Ardunio, its PSU and peripherals must not have an electrical connection to an audio circuit).

What the MiniSHARC does have is a programmable infra-red receiver (so you can adjust volume, mute/unmute, and select from up to 4 different DSP configuration profiles). It also has 4 LEDs to indicate the currently selected DSP configuration profile:

NtsUDmv.jpg


So the only kind state signal I can access on the MiniSHARC is a set of 4 LEDs representing the current config profile.

The only kind of influence I can easily exert on the MiniSHARC is a supported IR command: volume up/down, mute/unmute, select config 1, select config 2, etc.

It turns out that this is enough to fully control the MiniSHARC, switch inputs, mute/unmute, and to monitor all of this with 100% accuracy.

What I've done is to create a "tunnel" out of a repurposed Sharpie lid, an IR receiver at one end (connected to the MiniSHARC in place of its native IR receiver) and an IR transmitter at the other end (connected to the Arduino). It's superglued in place and covered with a piece of large heatshrink. The MiniSHARC has been programmed to accept certain IR commands for each of the functions I need; the Arduino has been programmed to send the IR commands on demand... the thing is, it's not always reliable. I have no idea why.

This is a problem because let's say the Arduino sends the mute command to the MiniSHARC via the IR tunnel. Or did it? Did it actually work? Is the MiniSHARC muted now? Do I need to send the mute command again? Ugh. It's *really* easy to lose track of state this way.

This is where configuration profiles come in. The DSP can be configured to use an I2S input or a S/PDIF input. It can also be configured to mute all inputs and outputs. This functionality effectively emulates a mute feature and an input selector! Handily, the DSP always boots up with LED1 lit, and the only time LED1 will light up is when the DSP is initializing. Once its booted it switches to the last known profile, which causes the appropriate LED to turn on instead. So, I created 4 config profiles...

Profile #1 is a dummy that's never used. LED1 is used only during initialization.

Profile #2 has I2S as an input and all channels are unmuted. LED2.

Profile #3 has S/PDIF as an input and all channels are unmuted. LED3.

Profile #4 has all of its inputs and outputs muted. LED4.

To read the state of the LEDs I fashioned a little house for 4 LDRs. Here it is:

Ytxe4Tr.jpg


BpSG1r2.jpg


It fits perfectly over the 4 LEDs such that each LDR sees only the light of 1 LED:

Yu1P0xa.jpg


The 4 LDRs are connected to 4 voltage dividers attached to 4 analog pins on the Arduino. This lets me monitor the brightness of each LED, and therefore easily determine which LEDs are on and which are off. The code is really straightforward and I can paste it if anyone finds it useful.

Let's say I'm on the S/PDIF input of the DSP. I want to change to I2S. I hit the input selector on my remote control, the Arduino receieves the IR signal on its own dedicated IR receiver, then sends the "use profile #2" IR command to the DSP over the Sharpie tunnel. If the command works, LED2 will light up, the LDR changes state, and the Arduino detects the change.

Likewise for mute: the Arduino sends "use profile #4" to the DSP and waits for LED4 to light up. If it doesn't, the IR command is retransmitted until successful.

In this way I can control the DSP to the extent I need whilst maintaining completely isolated PSUs and ground arrangements for the audio and control circuits.

Here she is just about ready to rock n roll:

u9jH2Xr.jpg


Inputs are 2x USB audio, 1x TOSLINK optical. Outputs are 3 pairs of CMC RCA connectors (bass, mid, treble) and 1 XLR (sub). Soft start is done with a Rod Elliott P9 controlled by the Arduino, which switches on/off the Canterbury toroid powering all the audio circuits. The WaveIO and TOSLINK modules can be further switched on/off via relays also controlled by the Arduino.

soSVBsQ.jpg
 
you'll need a level converter Carl, it's expecting a professional level. Twisted pear do one. I might even have one somewhere.

Stefan
 
you'll need a level converter Carl, it's expecting a professional level. Twisted pear do one. I might even have one somewhere.

Stefan

I'm not sure I understand! The Buffalo III expects TTL-level S/PDIF (3.3V), as does the MiniSHARC. The TOSLINK module works with the Buffalo but not the MiniSHARC.

Can you elaborate a bit? Thanks!
 
I remembered that I have a Twisted Pear "4-Channel S/PDIF (or AES-EBU) Level Converter Kit", so I just installed it (using only channel A of the converter)... and nope, same problem :(
 
I remember there are two types of spdif, ttl and consumer level, sadly thats about all I can remember as I've been i2s for years.
I think the differences are only with respect to voltage.
 
I remember there are two types of spdif, ttl and consumer level, sadly thats about all I can remember as I've been i2s for years.
I think the differences are only with respect to voltage.

Yup. Consumer is ~ 0.5V whereas TTL is ~ 3.3V.
 
It's *really* bugging me because as far as I can tell I've eliminated all the variables! I've tried:

* 2 different TOSLINK modules, both configured for TTL
* 2 different signal cables from TOSLINK -> MiniSHARC
* 2 different PSUs for the TOSLINK
* 2 different data paths: 1 direct from TOSLINK -> MiniSHARC, the other TOSLINK -> level converter -> MiniSHARC.

In all of those tests, the Buffalo locked onto the S/PDIF signal and made music, which the MiniSHARC did not. Grrrrr!
 
Software setting in the minishark?
Just loosely thinking what you haven't tried here

Thanks, it's exactly what I need. I'm out of ideas at this point. I even tried simplifying the layout to the point where I removed the TOSLINK's 3.3V regulator and powered the TOSLINK directly from the MiniSHARC's 3.3V output. This has the advantage of supplying exactly the correct voltage with very simple grounding, but again - no cigar. The damned MiniSHARC won't show me any input signal.

Sadly, there are no software settings that I can see would affect this (other than mute switches that I have toggled more times than I care to remember).

I'm almost at the point where I'm going to start looking for a S/PDIF -> I2S converter and multiplexing it into the MiniSHARC along with the other I2S signal...
 
hmm, once I was at the right level mine worked just great, it was a long time ago now though. The Mini DSP forum is quite good at helping with these little problems. I can't remember how it all worked now.
 
Another straw, did you try disconnecting all the other sources?

Looks like you tried mostly all things here.
 
orangeart said:
hmm, once I was at the right level mine worked just great, it was a long time ago now though. The Mini DSP forum is quite good at helping with these little problems. I can't remember how it all worked now.

Let's hope someone comes up with some good ideas on the MiniDSP forum!

Bemused said:
Another straw, did you try disconnecting all the other sources?

Looks like you tried mostly all things here.

I did try disconnecting other sources, yup.
 


advertisement


Back
Top