/*
  ==============================================================================

    This file was generated by user!

  ==============================================================================
*/

#ifndef _JAYSYNTHSOUND_H_
#define _JAYSYNTHSOUND_H_

#include <JuceHeader.h>
#include <synth/synth_defs.h>
#include <synth/voice.h>
#include <synth/vco.h>
#include <synth/noise.h>
#include <synth/smooth.h>
#include <synth/vcf.h>
#include <synth/lfo.h>
#include <synth/env.h>
#include <synth/param_scale.h>

#include "JaySynthMidiCC.h"

//==============================================================================
/** A synth sound that's just a bunch of parameters that makes an incredible sound.. */
class JaySynthSound : public SynthesiserSound
{
public:
	synth_float_t parameter[SYNTH_NUM_PARAMS];
	String name;

	JaySynthSound();
	~JaySynthSound();

	JaySynthMidiCC m_midiCC;
	const JaySynthMidiCC* getMidiCC() const;
	void setName(String ProgramName);
	String getName(void) const;
	void setParameter(int index, synth_float_t param);
	synth_float_t getParameter(int index) const;
	void initParameter(int index, synth_float_t param);
    bool appliesToNote (const int /*midiNoteNumber*/)           { return true; }
    bool appliesToChannel (const int /*midiChannel*/)           { return true; }
	
};

#endif  // _JAYSYNTHSOUND_H_
