• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

E1DA Cosmos ADC

OK, seen it.

The music is very pretty...

I understand why it works a little better with rec(i,1) == 1 as a test.

You're using 16 bits, try it in 24 bits and you'll change your mind.

Too bad you didn't send me your file with the "clip".

I reconstructed a simulation file from your file to have practically
all the switching zones in the same place.

I'll run the simulations later.

In any case, using rec(i,1) == 1 + calculated ratio
we're not as good as with rec(i,1) > 0.95 and fixed ratio.

-50dB difference from the original in the first case.
-80dB difference from the original in the second.
 
Last edited:
It seems the code works well with Octave as well, so anyone interested may download free https://octave.org/download and stitch their own Cosmos ADC 1.7/10 record to get extended DR "140db(A)" ;) Also, Octave may compile the code into an executable app, however, for GNU OS only, like Linux, and so on.
 
It seems the code works well with Octave as well, so anyone interested may download free https://octave.org/download and stitch their own Cosmos ADC 1.7/10 record to get extended DR "140db(A)" ;) Also, Octave may compile the code into an executable app, however, for GNU OS only, like Linux, and so on.
Where can I find this "octave" compiler?

I've been looking for it for a long time.
 
Cascaded E1DA ADC.

I ran a measurement with a stimulus that allows me to avoid too much
risk with the Cosmos inputs and see its behavior.

I generated a 1000Hz square-modulated signal
48K 24-bit.
(See attached)

I set the left channel of the ADC to 2.7V
(I'm going slowly)
and the right channel to 10V

So a possible gain of 11.4 dB.

. Attached you will find
. Stimuli
. ADC measurement
. Processing by the Matlab script
. octave/Matlab script slightly modified.

I confirm and sign regarding the switching test

In 16 bits, "rec(i,1) == 1 + dynamic ratio calculation" remains
completely correct.

In 24 bits, it's hopeless.

I prefer "rec(i,1) > 0.95 and "ratio" measured and fixed.

This is just my opinion, it's up to you to try.

I leave all the measurements with different switching tests.
 

Attachments

  • ADCstimulusTotal.png
    ADCstimulusTotal.png
    61 KB · Views: 55
  • Traitement_1.png
    Traitement_1.png
    39.3 KB · Views: 52
  • Traitement_2.png
    Traitement_2.png
    71.4 KB · Views: 51
  • Test1.png
    Test1.png
    33.1 KB · Views: 52
  • Test2.png
    Test2.png
    31.7 KB · Views: 51
  • Test3.png
    Test3.png
    37.6 KB · Views: 49
  • Test4.png
    Test4.png
    34.2 KB · Views: 55
  • Cascade3.txt
    Cascade3.txt
    2.4 KB · Views: 36
I prepared Stitcher.exe(800kB with all dll) to stitch Lch/Rch according to my MATLAB code. Actually, Gemini helped a lot. AI turned MATLAB to C++ with zero errors in 5 seconds.
If anyone is interested, pls let me know. Google Drive doesn't let me upload .exe, so I can give that in my Discord, I think. Name the wav file as rec.wav, double click on Stitcher.exe, and in the same folder, the result.wav appears.
 
I prepared Stitcher.exe(800kB with all dll) to stitch Lch/Rch according to my MATLAB code. Actually, Gemini helped a lot. AI turned MATLAB to C++ with zero errors in 5 seconds.
If anyone is interested, pls let me know. Google Drive doesn't let me upload .exe, so I can give that in my Discord, I think. Name the wav file as rec.wav, double click on Stitcher.exe, and in the same folder, the result.wav appears.
Well done!

I just tried with "gemini" and "octave".

Gemini told me it was very difficult and
didn't give me a viable solution.

I'll give you a solution for transferring anything to ASR.

Using "uuencode" and "uudecode" allows you
to transform anything into an ASCII (text) file.

It's an old program that allowed you to transfer
data files via email at a time when email was only ASCII.

uuencode/uudecode exists on all operating systems.

Attached , the file "Stitcher.rar_UUENCODE.txt".
 

Attachments

First try with my lavalier microphone.

I'm not going to break the 130dB barrier with it.
Its DNR is approximately 100dB, which doesn't justify using cascading.

But hey, I wanted to know what the actual output signal was.

The manipulation: Microphone -> DIY sound interface -> E1DA Scaler -> E1DA ADC.
Left channel: 2.7Vrms.Right channel 10Vrms, so ~10dB.

Recording at 96KHz, 24-bit.

Attached are the input and output signals.

The MIX signal is the difference between the processed signal
and the 10V channel signal.

Even if this difference can be disputed, there are still some residuals.

In steady state, ~0.05 ~ -47dB, regardless of the switching test chosen
in the script.

Don't look at the signal asymmetry; I must have a lot of distortion
at high levels. I need to refine the DIY interface.

There's always a significant peak at the beginning; I suspect
the coupling capacitors' settling time has something to do with it.
 

Attachments

  • CascadeFirstMicrophoneRecord.png
    CascadeFirstMicrophoneRecord.png
    149 KB · Views: 20
BTW, I tested Cosmos ADCiso again, 1.7V inputs with 20Vrms, no problem. Hence, 10Vrms is 100% safe.
Maybe a dumb question… Since the stitching of the two signals is done offline (as I understand it…): could we gain more, or reduce any potential artifacts (distortion) by combining two Cosmos ADC (4x signals at different gains settings)?
 
First try with my lavalier microphone.

I'm not going to break the 130dB barrier with it.
Its DNR is approximately 100dB, which doesn't justify using cascading.

But hey, I wanted to know what the actual output signal was.

The manipulation: Microphone -> DIY sound interface -> E1DA Scaler -> E1DA ADC.
Left channel: 2.7Vrms.Right channel 10Vrms, so ~10dB.

Recording at 96KHz, 24-bit.

Attached are the input and output signals.

The MIX signal is the difference between the processed signal
and the 10V channel signal.

Even if this difference can be disputed, there are still some residuals.

In steady state, ~0.05 ~ -47dB, regardless of the switching test chosen
in the script.

Don't look at the signal asymmetry; I must have a lot of distortion
at high levels. I need to refine the DIY interface.

There's always a significant peak at the beginning; I suspect
the coupling capacitors' settling time has something to do with it.
Your -47db is a gain error, which is not a distortion that humans may hear. The gain difference doesn't create new harmonics or noise. The only matter is that switching actions create clicks, and we have to consider them as distortions.
 
Your -47db is a gain error, which is not a distortion that humans may hear. The gain difference doesn't create new harmonics or noise. The only matter is that switching actions create clicks, and we have to consider them as distortions.
I agree with you, but only partially.

I readjusted my gain to have only a slight
variation between the two ADC channels.

We can see that the variation in the difference
is on the signal envelope,
therefore at very low frequencies.

This is certainly due to the coupling capacitors
, which try to constantly refocus a signal whose
DC value varies constantly, due to distortion
and also to the number of alternations
of each sound, which can cause this DC value to vary.

Since the two ADC channels are different, the processing must be different.

I also have a coupling capacitor at the output of my DIY circuit.

I haven't tried varying the frequency and amplitude yet.

We can see from the associated PNGs that the difference
in the signals is just the grass around a very low-frequency
envelope, so < 0.001 in amplitude, or < 60dB.
 

Attachments

  • CascadeFirstMicrophoneRecord_2.png
    CascadeFirstMicrophoneRecord_2.png
    95.8 KB · Views: 34
  • CascadeFirstMicrophoneRecord_3.png
    CascadeFirstMicrophoneRecord_3.png
    95.6 KB · Views: 22
The moment the high-gain path gets sufficient signal to drive the opamps of the emulated FDA into positive output clipping (== going open loop) its AC-coupling cap accumulates a voltage, strongly depending on signal waveform symmetry and which part of it gets clipped. Because of the ADC bias voltage positive clipping happens much earlier than negative clipping, per output leg of the FDA. Quasi-steady state low frequency asymmetric signal (bass guitar etc) are the most problematic.

When the clipping is over and levels have fallen below the switching threshold to the high-gain path, remainders of this error voltage are still present and spoil the stitching for some time. The only way to prevent this is never letting the opamps go into clipping (and preferably, never clip the ADC itself) and using a common AC-coupling for both paths. AC-coupling in the chip must also be disabled, for very similar reasons.

At least that's what I found experimenting with stacked ADCs. Different and much lesser ADC chip than 9822, but will try an implementation with the 9842 soon...
 
Back
Top Bottom