Volume Equilizer

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I have a project that I'm more than lost on where to start.

My end goal is this:

I want to make a circuit that will take different audio inputs (DVD, CD, PS3, etc) and output them all at the same audio level. Basically what I want is to have a audio level of 50db to be my midline audio output and 100db to be my maximum output.


Some things I don't know:

voltage peak to peak from different audio inputs

correlation between voltage level and audio level


Some Ideas I originally had:

initially I was going to make a peak detection circuit that would find the max voltage (and therefore audio) level, read in the voltage with a ADC, then set a DS1802 for the appropriate volume level output. But I'm not sure if this idea is sound.

It was also suggested that I could do the same above in analog only by having a peak detector circuit whose output would then be monitored by two threshold detector circuits, one for above and one for below, that would keep the maximum audio level at roughly 100db.

Another person suggested I use an AGC to take the differing audio inputs and produce an equal audio output.

Lastly it was suggested to use an audio compressor.


Ideally I would like to make everything in analog, or mostly analog so that its fast enough to normalize audio when the device turns on.
 
Last edited:
I guess what I would want is to equalize the levels between all the different inputs so that I wont have to mess with the volume on the tv when I switch devices. I would like the maximum audio output to be roughly 100db in strength from the device, or at least make all the signals have the same strength as they exit the device to go to the tv.

also simple would be nice
 
my volume control will do that, as do others. a few ways to approach it, but often, its as simple as having a 'last used volume value' array element for each of the inputs (or even outputs!). then as the user selects an input, it restores that last-used value.

my software also has a min/max clip window that won't let the user exceed a range (or window), to try to account for 'sensitivity' diffs on inputs.

that seems to be what you want, I think.

mine is not automatic, its 'just' an LCD/IR/analog-pot volume control and it lets you set values for these things but there's no 'auto mode' in there. not sure that's a great idea, to be honest. you 'calibrate' your inputs once and you are done, in theory.

(hoping to get my software finished in the next few weeks; then I will publish a link for people to try/play with. its arduino based with support for relay attens, initially, then pga chips to follow).
 
to a degree yes thats what I want. I would like the to be able to take the different inputs and either amplify or attenuate them so that my output remains at a constant level.

I'm thinking of this as kindof a halfway box that conditions the signal before the final device outputs the actual audio to the speakers. Such as a laptop has a very small audio range that would get amplified while a DVD player might get attenuated. This way the final device that outputs the audio receives the same signal, at least volume wise, no matter the input. Its hard to describe what i'm looking for but I hope that helps.

Also if you have any previous examples that would also be great.

Thanks for your help
 
Administrator
Joined 2007
Paid Member
Unless I'm missing the plot here ;) it seems all you need is a simple amp (opamp say) and each switched source input to have it's own gain preset to a level by you.

If the source of lowest output is sufficient then it gets even easier as all you do is attenuate each input accordingly.
 
Administrator
Joined 2007
Paid Member
yes, it does get simpler.

you switch the gain as you switch inputs. you have ONE gain stage, one attenuator stage and you vary the atten based on which input you have selected.

to create an op-amp gain stage for each input is extreme overkill for this problem.

Hi linuxworks
I don't think you understand the idea in post #9 :)

Just one "gain" stage is used for as many inputs as required. I used this very technique here, post#2
http://www.diyaudio.com/forums/soli...fet-amplifier-designed-music.html#post1452488

The switching here was electronic (FET's) but a single mechanical switch "at the input side" is fine. R1 can be scaled for each input such that any particular input can have either true gain for a low output source, or attenuation for a high output source. In the preamp here the second opamp simply maintains correct phase.
 
Administrator
Joined 2007
Paid Member
So basically we can have a digital circuit (with a PIC controller?) which measures the levels and remembers (in flash memory?) the setting for each input and uses a digital volume control chip to set things, or we have a set of resistors into an op-amp?

I guess so ;)

Or if you really really wanted...
something ancient like the old NE570/571 compander can be used as an AGC circuit. The data sheets give all the applications.
 
Hi linuxworks
I don't think you understand the idea in post #9 :)

Just one "gain" stage is used for as many inputs as required.

I got that part, but it was still using multiple attenuators and switching between them. my suggestion was to have one volume control element and vary *it* based on which input was selected.

if you like resistors, maybe we could split the diff (lol) and use a digital pot and have the cpu vary that on a per-input basis. ;)
 
I guess so ;)

Or if you really really wanted...
something ancient like the old NE570/571 compander can be used as an AGC circuit. The data sheets give all the applications.

agc's have pump/breathe effects to them. there's no one time constant that works for all program material.

if you want a good compressor, get a pro audio one and be done with it ;) years ago, there was a guy making a RNC (really nice compressor) for a semi reasonable price. it was a good performer and its effects were not too bad if you set them right (had a bunch of front panel knobs you can set).

but is an agc really what the OP wanted? if you could get a 'volume fixup' for each input, isn't that kind of the use-case, here?
 
CPU's and digital pots... it's a lot of faffing about

I have to agree, Mooly. I'm a PIC enthusiast, and I have designed a few volume controllers using them with digipots &c. but a source selector and a bunch of presets, be they pots or discrete resistive dividers is a simple hardwired solution with no programming involved.

w

If you want remote though, the circuit is going to get complicated, willy-nilly, and a PIC, some relays and a digipot are probably the way to go.
 
Last edited:
I agree with Mooly... it's called a mixer. You connect a source to an input and if it is too loud, you move the associated slider towards you. If the source is not loud enough, you move the associated slider away from you. If slider goes to either end and the volume is still not within range, you turn a knob labelled gain or trim. Set and forget.

:)ensen.
 
and what I'm suggesting is effectively the same thing; just not replicating the gain changing or attenuating element. you instantiate that *once* and you change its setting based on whatever rules you want, be it input or output or both or phase of moon ;)

having many attenuators (the mixer model) seems overkill and if the attenuator at all matters in the audio path (it does) then having a good one times the number of inputs - that gets large and expensive.

talking to a digital pot is like 10 or 20 lines of code. there are examples online and if you only needed to change that value based on inputs, its still quite a simple program. the controllers today have EEPROM and so you can set values and things there.

having one good quality settable attenuator and a controller is the more flexible solution and will give the best audio quality. having to have several attens just seems too 'old school' (lol) to me.
 
Yeah, but you could build this about as quick as I drew it, on a bit of perfboard.

Put a pot in instead of one of the dividers, turn it till you get a reasonable level, measure the resistances from the wiper to both ends. Solder in those resistor values, in one of the other positions, move the input signal onto that one. Do it again, etc.. You can even forget the opamps if you've got enough signal. I just used 2 because they're in the package, and I arranged them as inverting. If you leave them out, you won't have much to complain about in terms of signal quality.

var_attn_sw.jpg

Any errors? Objections? Miss anything? Anybody?

w
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.