This program generates sound by using FM tone generator YMF825 via SPI.

Dependencies:   microbit

fmnote.h

Committer:
hasebems
Date:
2018-01-05
Revision:
0:c54d59d6fb78

File content as of revision 0:c54d59d6fb78:

#ifndef FMNOTE_H
#define FMNOTE_H
#include "fmtone.h"
#include "fmvoice.h"

//	Note Class
typedef struct _Note Note;
struct _Note {
	unsigned char	_note;
	unsigned char	_velocity;
	bool			_inUse;
	bool			_keyon;
	bool			_hold;

	Note*			_prevPtr;
	Note*			_nextPtr;
	void*			_parent;
	Fmvoice*		_vc;
};

//	public
extern void Note_init( Note* _this );
extern bool Note_keyon( Note* _this, ToneData* newTone, unsigned char note, unsigned char velocity );
extern void Note_keyoff( Note* _this );
extern void Note_releaseVc( Note* _this, Fmvoice* rlsVc );
extern void Note_release( Note* _this );
extern void Note_damp( Note* _this );
extern void Note_chgVibDpt( Note* _this );
extern void Note_chgPit( Note* _this );

//	setter
extern void Note_setPrevPtr( Note* _this, Note* pn );
extern void Note_setNextPtr( Note* _this, Note* nn );
extern void Note_setPart( Note* _this, void* pt );
extern void Note_setHold( Note* _this, bool hold );
//	getter
extern bool Note_isInUse( Note* _this );
extern bool Note_isKeyOn( Note* _this );
extern bool Note_isHeld( Note* _this );
extern Note* Note_prevPtr( Note* _this );
extern Note* Note_nextPtr( Note* _this );
extern unsigned char Note_note(Note* _this);
extern unsigned char Note_velocity(Note* _this);
#endif