>>In a nutshell I think that there should be a reference 0dB (LADSPA) level, >>defined as 1.0f.
for whatever reason, its been my assumption all along ... >A/D converter should output values in range (-1,1); that is >what I have always assumed. i don't want to be too pedantic, but "A/D converter" is not a very useful phrase. nothing that we do in software does A/D or D/A conversion. i think what you mean is that the source that moves data to and from an audio interface should clip values to the range -1..+1, and map them to the relevant (probably integral) values for the h/w (e.g. -32768.. +32767 for 16 bit h/w). [ even this is not necessarily where A/D or D/A happens either, since some audio interfaces are 100% digital). however, this clipping+mapping not necessarily a good idea. some h/w might come with an assumption that a 16 bit signal value less than 32767 was 0dB, and that values above this represent +dB values. i don't know of any audio interfaces that do this, but most HDR systems and digital mixers either work this way by default, or can be set to do so. its therefore unwise to try to map the -1..+1 range of a LADSPA audio value to anything except to pin 1.0f as 0dB, and anything that follows directly from this. having said this, all of my code assumes that 0dB represents "full range" for the relevant bit size, and i can't imagine people doing anything else for now. notice, however, that if you were reading sample values from a Mackie D8B or an Alesis M20 ADAT, its meters might tell you the signal level reached 0dB, but the sample values never reached 1.0f (or the full range integral value, whichever you prefer). obviously, LADSPA hosts and clients are free to deliver any values they want to, as long as they understand the consequences of those values falling outside the -1..+1 range. --p
