Blame src/default.c

Packit 995986
/* default.c
Packit 995986
Packit 995986
   Free software by Richard W.E. Furse. Do with as you will. No
Packit 995986
   warranty. */
Packit 995986
Packit 995986
/*****************************************************************************/
Packit 995986
Packit 995986
#include <math.h>
Packit 995986
Packit 995986
/*****************************************************************************/
Packit 995986
Packit 995986
#include "ladspa.h"
Packit 995986
#include "utils.h"
Packit 995986
Packit 995986
/*****************************************************************************/
Packit 995986
Packit 995986
int 
Packit 995986
getLADSPADefault(const LADSPA_PortRangeHint * psPortRangeHint,
Packit 995986
		 const unsigned long          lSampleRate,
Packit 995986
		 LADSPA_Data                * pfResult) {
Packit 995986
Packit 995986
  int iHintDescriptor;
Packit 995986
Packit 995986
  iHintDescriptor = psPortRangeHint->HintDescriptor & LADSPA_HINT_DEFAULT_MASK;
Packit 995986
Packit 995986
  switch (iHintDescriptor & LADSPA_HINT_DEFAULT_MASK) {
Packit 995986
  case LADSPA_HINT_DEFAULT_NONE:
Packit 995986
    return -1;
Packit 995986
  case LADSPA_HINT_DEFAULT_MINIMUM:
Packit 995986
    *pfResult = psPortRangeHint->LowerBound;
Packit 995986
    if (LADSPA_IS_HINT_SAMPLE_RATE(psPortRangeHint->HintDescriptor))
Packit 995986
      *pfResult *= lSampleRate;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_LOW:
Packit 995986
    if (LADSPA_IS_HINT_LOGARITHMIC(iHintDescriptor)) {
Packit 995986
      *pfResult = exp(log(psPortRangeHint->LowerBound) * 0.75
Packit 995986
		      + log(psPortRangeHint->UpperBound) * 0.25);
Packit 995986
    }
Packit 995986
    else {
Packit 995986
      *pfResult = (psPortRangeHint->LowerBound * 0.75
Packit 995986
		   + psPortRangeHint->UpperBound * 0.25);
Packit 995986
    }
Packit 995986
    if (LADSPA_IS_HINT_SAMPLE_RATE(psPortRangeHint->HintDescriptor))
Packit 995986
      *pfResult *= lSampleRate;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_MIDDLE:
Packit 995986
    if (LADSPA_IS_HINT_LOGARITHMIC(iHintDescriptor)) {
Packit 995986
      *pfResult = sqrt(psPortRangeHint->LowerBound
Packit 995986
		       * psPortRangeHint->UpperBound);
Packit 995986
    }
Packit 995986
    else {
Packit 995986
      *pfResult = 0.5 * (psPortRangeHint->LowerBound
Packit 995986
			 + psPortRangeHint->UpperBound);
Packit 995986
    }
Packit 995986
    if (LADSPA_IS_HINT_SAMPLE_RATE(psPortRangeHint->HintDescriptor))
Packit 995986
      *pfResult *= lSampleRate;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_HIGH:
Packit 995986
    if (LADSPA_IS_HINT_LOGARITHMIC(iHintDescriptor)) {
Packit 995986
      *pfResult = exp(log(psPortRangeHint->LowerBound) * 0.25
Packit 995986
		      + log(psPortRangeHint->UpperBound) * 0.75);
Packit 995986
    }
Packit 995986
    else {
Packit 995986
      *pfResult = (psPortRangeHint->LowerBound * 0.25
Packit 995986
		   + psPortRangeHint->UpperBound * 0.75);
Packit 995986
    }
Packit 995986
    if (LADSPA_IS_HINT_SAMPLE_RATE(psPortRangeHint->HintDescriptor))
Packit 995986
      *pfResult *= lSampleRate;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_MAXIMUM:
Packit 995986
    *pfResult = psPortRangeHint->UpperBound;
Packit 995986
    if (LADSPA_IS_HINT_SAMPLE_RATE(psPortRangeHint->HintDescriptor))
Packit 995986
      *pfResult *= lSampleRate;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_0:
Packit 995986
    *pfResult = 0;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_1:
Packit 995986
    *pfResult = 1;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_100:
Packit 995986
    *pfResult = 100;
Packit 995986
    return 0;
Packit 995986
  case LADSPA_HINT_DEFAULT_440:
Packit 995986
    *pfResult = 440;
Packit 995986
    return 0;
Packit 995986
  }
Packit 995986
Packit 995986
  /* We don't recognise this default flag. It's probably from a more
Packit 995986
     recent version of LADSPA. */
Packit 995986
  return -1;
Packit 995986
}
Packit 995986
Packit 995986
/*****************************************************************************/
Packit 995986
Packit 995986
/* EOF */