home *** CD-ROM | disk | FTP | other *** search
/ Internet 1996 World Exposition / park.org.s3.amazonaws.com.7z / park.org.s3.amazonaws.com / Cdrom / Pavilions / BrainOpera / online / net-music / net-instrument / CLayer.java < prev    next >
Encoding:
Java Source  |  2017-09-21  |  3.5 KB  |  122 lines

  1. public class CLayer {
  2.  
  3.     final int RYMOD_CONSTANT=0;
  4.     final int RYMOD_BETWEEN=1;
  5.     final int RYMOD_PERIODIC=2;
  6.     final int RYMOD_NONE=3;
  7.     final int NUM_RYMODS=4;
  8.     final char MID_C = 60;
  9.  
  10. CScale Scale()
  11. {    return m_pstzParent.sclGetScale();
  12. }
  13.  
  14.     public boolean bSetChordMatch (boolean bMatch/*=1*/)
  15.     { m_bMatchChord = bMatch; return true; }
  16.     public boolean bMatchChord ()  { return m_bMatchChord; }
  17.     
  18.     public boolean bSetRhythm (CRhythm pRthm)
  19.     { m_pRhythm = pRthm; return true; }
  20.     public CRhythm pRhythm ()  { return m_pRhythm; }
  21.     
  22.     public boolean bSetRthmStatus (int rymod)
  23.     { m_rymod = rymod; return true; }
  24.     public int rymodRthmStatus () { return m_rymod; }
  25.  
  26.     public boolean bSetRthmStatusArg2 (double fArg)
  27.     { m_fRymodArg = fArg; return true; }
  28. //---------------------------
  29. public boolean bSetRthmStatusArg (char pvArg)
  30. {    switch (m_rymod) {
  31.     case RYMOD_CONSTANT:
  32.         return bSetRthmStatusArg2((double)(1 + (int)(pvArg)/16));
  33.     case RYMOD_BETWEEN:
  34.         return bSetRthmStatusArg2((double)(pvArg)/127.0);
  35.     case RYMOD_PERIODIC:
  36.         return bSetRthmStatusArg2((double)(2 + (int)(pvArg)/8));
  37.     default:    //assert(0);    // no break;
  38.     case RYMOD_NONE:    return false;
  39.     }
  40. }
  41. //---------------------------
  42.  
  43.     public double fRthmStatusArg () { return m_fRymodArg; }
  44. //---------------------------
  45. public char pvRthmStatusArg ()
  46. {    switch (m_rymod) {
  47.     case RYMOD_CONSTANT:
  48.         return (char)(int)((fRthmStatusArg()-1.0) * 16.0);
  49.     case RYMOD_BETWEEN:
  50.         return (char)(int)(fRthmStatusArg()*127.0);
  51.     case RYMOD_PERIODIC:
  52.         return (char)(int)((fRthmStatusArg()-2.0) * 8.0);
  53.     default:    //assert(0);    break;
  54.     case RYMOD_NONE:    break;
  55.     }
  56.     return 0;
  57. }
  58. //---------------------------
  59.     
  60.     public boolean bSetActive (boolean bActive/*=1*/)
  61.     { m_bActive=bActive; return true; }
  62.     public boolean bActive () { return m_bActive; }
  63.     
  64.     public boolean bSetConsonance (char pvCons)
  65.     { m_pvConsonance = pvCons; return true; }
  66.     public char pvConsonance () { return m_pvConsonance; }
  67.  
  68.     public boolean bSetDirection (char pvDir)
  69.     { m_pvDirection = pvDir; return true; }
  70.     public char pvDirection () { return m_pvDirection; }
  71.  
  72.     public boolean bSetInstrument (char pvInst)
  73.     { m_pvInstrument = pvInst; return true; }
  74.     public char pvInstrument () { return m_pvInstrument; }
  75.     
  76.     public boolean bSetPitchMagnet (char pvMag)
  77.     { m_pvPitchMagnet = pvMag; return true; }
  78.     public char pvPitchMagnet () { return m_pvPitchMagnet; }
  79.  
  80. // Members
  81.     CStanza m_pstzParent;
  82.     boolean m_bMatchChord;
  83.     char m_pvConsonance;    // How important is KeyPriority?
  84.     char m_pvDirection;        // Which way does the pitch go?
  85.     char m_pvInstrument;    // MIDI instrument program number.
  86.     char m_pvPitchMagnet;    // Central MIDI note number.
  87.     
  88.     CRhythm m_pRhythm;
  89.     int m_rymod;
  90.     double m_fRymodArg;
  91.  
  92.     boolean m_bActive;
  93.  
  94. // Construction/Destruction:
  95. //---------------------------
  96. CLayer (CStanza pstzParent, CRhythm pRthm/*=0*/)
  97. {
  98.     m_pstzParent=pstzParent;
  99.     m_bMatchChord=true; m_pvConsonance=64;
  100.     m_pvDirection=64; m_pvInstrument=0; m_pvPitchMagnet=MID_C;
  101.     m_pRhythm=pRthm; m_rymod=RYMOD_NONE;    m_fRymodArg=0;
  102.     m_bActive=true;
  103. }    
  104. //---------------------------
  105. public CLayer Set (CLayer lyr)
  106. {
  107.     m_bMatchChord = lyr.m_bMatchChord;
  108.     
  109.     m_pvConsonance = lyr.m_pvConsonance;
  110.     m_pvDirection = lyr.m_pvDirection;
  111.     m_pvInstrument = lyr.m_pvInstrument;
  112.     m_pvPitchMagnet = lyr.m_pvPitchMagnet;
  113.     
  114.     m_pRhythm = lyr.m_pRhythm;
  115.     m_rymod = lyr.m_rymod;
  116.     m_fRymodArg = lyr.m_fRymodArg;
  117.     
  118.     m_bActive = lyr.m_bActive;
  119.     return this;
  120. }
  121.  
  122. }    // end CLayer