/***************************************************************************
 * trackmidiproperties.h: implementation of TrackMidiProperties class
 *
 * This file is part of KTabEdit, a KDE tabulature editor
 *
 * copyright (C) 2003-2007 the KTabEdit development team <mrgwen@gmail.com>
 ***************************************************************************/

/***************************************************************************
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * See the file COPYING for more information.
 ***************************************************************************/

#ifndef TRACKMIDIPROPERTIES_H
#define TRACKMIDIPROPERTIES_H

#include <QtGlobal>
#include <QObject>

class TrackMidiProperties : public QObject
{
	Q_OBJECT
public:
	TrackMidiProperties();
	virtual ~TrackMidiProperties();
	
	virtual void clone(const TrackMidiProperties* midi);
	
	virtual void setPatch(uchar i);
	virtual uchar patch() const;
	
	virtual void setChannel(uchar i);
	virtual uchar channel() const;
	
	virtual void setChannelEffects(uchar i);
	virtual uchar channelEffects() const;
	
	virtual void setMidiPort(int i);
	virtual int midiPort() const;
	
	virtual void setBank(unsigned int i);
	virtual unsigned int bank() const;
	
	virtual void setVolume(uchar i);
	virtual uchar volume() const;
	
	virtual void setBalance(char i);
	virtual char balance() const;
	
	virtual void setChorus(uchar i);
	virtual uchar chorus() const;
	
	virtual void setReverb(uchar i);
	virtual uchar reverb() const;
	
	virtual void setPhaser(uchar i);
	virtual uchar phaser() const;
	
	virtual void setTremolo(uchar i);
	virtual uchar tremolo() const;
	
	virtual bool operator==(const TrackMidiProperties& properties) const;
	virtual bool operator!=(const TrackMidiProperties& properties) const;
	
signals:
	void midiPropertyChanged();
	
private:
	uchar midiPatch;
	uchar midiChannel;
	uchar midiChannelEffects;
	unsigned int midiMidiPort;
	unsigned int midiBank;
	uchar midiVolume;
	char midiBalance;
	uchar midiChorus;
	uchar midiReverb;
	uchar midiPhaser;
	uchar midiTremolo;
};

#endif
