public void SetFloatParameter(Hv_Boidsynth07_AudioLib.Parameter param, float x)
    {
        switch (param)
        {
        case Parameter.Frequency: {
            x         = Mathf.Clamp(x, 0.0f, 100.0f);
            Frequency = x;
            break;
        }

        case Parameter.Harmonics: {
            x         = Mathf.Clamp(x, 0.0f, 13.0f);
            Harmonics = x;
            break;
        }

        case Parameter.Spread: {
            x      = Mathf.Clamp(x, 0.0f, 100.0f);
            Spread = x;
            break;
        }

        case Parameter.Gain: {
            x    = Mathf.Clamp(x, 0.0f, 1.0f);
            gain = x;
            break;
        }

        case Parameter.Gainsmoothtime: {
            x = Mathf.Clamp(x, 1.0f, 1000.0f);
            gainSmoothTime = x;
            break;
        }

        case Parameter.Mstrattackrelease: {
            x = Mathf.Clamp(x, 1.0f, 1000.0f);
            mstrAttackRelease = x;
            break;
        }

        case Parameter.Pan: {
            x   = Mathf.Clamp(x, 0.0f, 100.0f);
            pan = x;
            break;
        }

        default: return;
        }
        if (IsInstantiated())
        {
            _context.SendFloatToReceiver((uint)param, x);
        }
    }
    // see Hv_Boidsynth07_AudioLib.Parameter for definitions
    public float GetFloatParameter(Hv_Boidsynth07_AudioLib.Parameter param)
    {
        switch (param)
        {
        case Parameter.Frequency: return(Frequency);

        case Parameter.Harmonics: return(Harmonics);

        case Parameter.Spread: return(Spread);

        case Parameter.Gain: return(gain);

        case Parameter.Gainsmoothtime: return(gainSmoothTime);

        case Parameter.Mstrattackrelease: return(mstrAttackRelease);

        case Parameter.Pan: return(pan);

        default: return(0.0f);
        }
    }