/*
 *  CanOpenerPublic.h
 *  CanOpenerFramework
 *
 *  Created by Devin Kerr on 11/13/11.
 *  Copyright 2011 Good Hertz. All rights reserved.
 *
 */

#include "CanOpener.h"

class CanOpenerPublic : public CanOpener
{
public:
    CanOpenerPublic();
    void Initialize();
    void Reset(); // To be called at audio start/stop, clears filter/delay buffers
    void ProcessStereo(const Float32 * source0,
                       const Float32 * source1,
                       Float32          * dest0,
                       Float32          * dest1,
                       UInt32            nSampleFrames);
    
    Float32 kParam_sampleRate;          // e.g. 44100
    Float32	kParam_SpeakerAngle;        // 0 - 60 degrees
    Float32	kParam_XfeedAmt;            // 0 - 150%
    int	kParam_XfeedType;               // 1 = Most Realistic, 2 = More Realistic, 3 = Standard
    Float32	kParam_TrebleGain;          // +/- 6 dB
    Float32	kParam_BassGain;            // +/- 6 dB
    Float32 kParam_TrebleFreq;          // Hz
    Float32 kParam_BassFreq;            // Hz
    bool kParam_ClipProtectCrossfeed;   // TRUE = Clipping proctection 'On' for crossfeed
    bool kParam_ClipProtectEQ;			// TRUE = Clipping proctection 'On' for EQ
    
    bool kParam_MonPrePost;             // FALSE = post crossfeed, TRUE = pre
    bool kParam_Mono;                   // L+R
    bool kParam_Phase;					// Flip phase of R
    Float32 kParam_LRBalance;           // L/R balance; -1.0 > 1.0; -1.0 = Solo L, 1.0 = Solo R; 0.0 = center;
    bool kParam_FlipLR;                 //Swap Left/Right Ch.
    bool kParam_Bypass;                 //Bypass CanOpnener process, but stay level matched
    bool kParam_BypassEQ;               //Bypass CanOpener EQ
    bool kParam_BypassCrossfeed;        //Bypass CanOpener Crossfeed
};