public class CLayer { final int RYMOD_CONSTANT=0; final int RYMOD_BETWEEN=1; final int RYMOD_PERIODIC=2; final int RYMOD_NONE=3; final int NUM_RYMODS=4; final char MID_C = 60; CScale Scale() { return m_pstzParent.sclGetScale(); } public boolean bSetChordMatch (boolean bMatch/*=1*/) { m_bMatchChord = bMatch; return true; } public boolean bMatchChord () { return m_bMatchChord; } public boolean bSetRhythm (CRhythm pRthm) { m_pRhythm = pRthm; return true; } public CRhythm pRhythm () { return m_pRhythm; } public boolean bSetRthmStatus (int rymod) { m_rymod = rymod; return true; } public int rymodRthmStatus () { return m_rymod; } public boolean bSetRthmStatusArg2 (double fArg) { m_fRymodArg = fArg; return true; } //--------------------------- public boolean bSetRthmStatusArg (char pvArg) { switch (m_rymod) { case RYMOD_CONSTANT: return bSetRthmStatusArg2((double)(1 + (int)(pvArg)/16)); case RYMOD_BETWEEN: return bSetRthmStatusArg2((double)(pvArg)/127.0); case RYMOD_PERIODIC: return bSetRthmStatusArg2((double)(2 + (int)(pvArg)/8)); default: //assert(0); // no break; case RYMOD_NONE: return false; } } //--------------------------- public double fRthmStatusArg () { return m_fRymodArg; } //--------------------------- public char pvRthmStatusArg () { switch (m_rymod) { case RYMOD_CONSTANT: return (char)(int)((fRthmStatusArg()-1.0) * 16.0); case RYMOD_BETWEEN: return (char)(int)(fRthmStatusArg()*127.0); case RYMOD_PERIODIC: return (char)(int)((fRthmStatusArg()-2.0) * 8.0); default: //assert(0); break; case RYMOD_NONE: break; } return 0; } //--------------------------- public boolean bSetActive (boolean bActive/*=1*/) { m_bActive=bActive; return true; } public boolean bActive () { return m_bActive; } public boolean bSetConsonance (char pvCons) { m_pvConsonance = pvCons; return true; } public char pvConsonance () { return m_pvConsonance; } public boolean bSetDirection (char pvDir) { m_pvDirection = pvDir; return true; } public char pvDirection () { return m_pvDirection; } public boolean bSetInstrument (char pvInst) { m_pvInstrument = pvInst; return true; } public char pvInstrument () { return m_pvInstrument; } public boolean bSetPitchMagnet (char pvMag) { m_pvPitchMagnet = pvMag; return true; } public char pvPitchMagnet () { return m_pvPitchMagnet; } // Members CStanza m_pstzParent; boolean m_bMatchChord; char m_pvConsonance; // How important is KeyPriority? char m_pvDirection; // Which way does the pitch go? char m_pvInstrument; // MIDI instrument program number. char m_pvPitchMagnet; // Central MIDI note number. CRhythm m_pRhythm; int m_rymod; double m_fRymodArg; boolean m_bActive; // Construction/Destruction: //--------------------------- CLayer (CStanza pstzParent, CRhythm pRthm/*=0*/) { m_pstzParent=pstzParent; m_bMatchChord=true; m_pvConsonance=64; m_pvDirection=64; m_pvInstrument=0; m_pvPitchMagnet=MID_C; m_pRhythm=pRthm; m_rymod=RYMOD_NONE; m_fRymodArg=0; m_bActive=true; } //--------------------------- public CLayer Set (CLayer lyr) { m_bMatchChord = lyr.m_bMatchChord; m_pvConsonance = lyr.m_pvConsonance; m_pvDirection = lyr.m_pvDirection; m_pvInstrument = lyr.m_pvInstrument; m_pvPitchMagnet = lyr.m_pvPitchMagnet; m_pRhythm = lyr.m_pRhythm; m_rymod = lyr.m_rymod; m_fRymodArg = lyr.m_fRymodArg; m_bActive = lyr.m_bActive; return this; } } // end CLayer