#ifndef _FController_H
#define _FController_H

int Controller_CheckValue(Controller*);
int PanningCtrl_CheckValue(Controller* pCtrl);

const uint8_t* VolumeCtrl
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* VolumeCtrl2
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* PanningCtrl
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

typedef const uint8_t* (*PitchCtrl)
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* PeriodPitchCtrl
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* LinearPitchCtrl
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* FracPitchCtrl
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* PitchCtrl2
	( Controller* pCtrl
	, Channel* pChannel
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

const uint8_t* TempoCtrl
	( Controller* pCtrl
	, ISong* pSong
	, uint32_t frame_count
	, uint32_t count
	, const uint8_t* peffects
	);

#endif
