home *** CD-ROM | disk | FTP | other *** search
/ Large Pack of OldSkool DOS MOD Trackers / beaversweeper_v101.zip / src / ModEnvelope.cpp < prev    next >
C/C++ Source or Header  |  2003-01-06  |  4KB  |  171 lines

  1. // ModEnvelope.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "tracker.h"
  6. #include "ModEnvelope.h"
  7. #include "modulatebasedlg.h"
  8. #include "isSynth.h"
  9. #include "isEnvelope.h"
  10.  
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16.  
  17. /////////////////////////////////////////////////////////////////////////////
  18. // CModEnvelope dialog
  19. #define FloatIntMAX 1024
  20. #define uFloatToInt(a) ((a)*1024)
  21. #define sFloatToInt(a) ((a)*1024+1024)
  22.  
  23. #define uIntToFloat(a) ((a)/1024.0f)
  24. #define sIntToFloat(a) (((a)-1024)/1024.0f)
  25.  
  26.  
  27.  
  28. CModEnvelope::CModEnvelope(CWnd* pParent /*=NULL*/)
  29.     : CModulateBaseDlg(CModEnvelope::IDD, pParent)
  30. {
  31.     //{{AFX_DATA_INIT(CModEnvelope)
  32.     //}}AFX_DATA_INIT
  33. }
  34.  
  35.  
  36. void CModEnvelope::DoDataExchange(CDataExchange* pDX)
  37. {
  38.     CModulateBaseDlg::DoDataExchange(pDX);
  39.     //{{AFX_DATA_MAP(CModEnvelope)
  40.     DDX_Control(pDX, IDC_STATIC_SVAL, m_sval);
  41.     DDX_Control(pDX, IDC_STATIC_RVAL, m_rval);
  42.     DDX_Control(pDX, IDC_STATIC_DVAL, m_dval);
  43.     DDX_Control(pDX, IDC_STATIC_AVAL, m_aval);
  44.     DDX_Control(pDX, IDC_CHECK_USESUSTAIN, m_checkSustain);
  45.     DDX_Control(pDX, IDC_SLIDER_ENVDELAY, m_decaySlider);
  46.     DDX_Control(pDX, IDC_SLIDER_ENVVELOSENSE, m_velosenseSlider);
  47.     DDX_Control(pDX, IDC_SLIDER_ENVSUSTAIN, m_sustainSlider);
  48.     DDX_Control(pDX, IDC_SLIDER_ENVRELEASE, m_releaseSlider);
  49.     DDX_Control(pDX, IDC_SLIDER_ENVATTACK, m_attacSlider);
  50.     //}}AFX_DATA_MAP
  51. }
  52.  
  53.  
  54. BEGIN_MESSAGE_MAP(CModEnvelope, CModulateBaseDlg)
  55.     //{{AFX_MSG_MAP(CModEnvelope)
  56.     ON_WM_HSCROLL()
  57.     ON_WM_VSCROLL()
  58.     ON_BN_CLICKED(IDC_CHECK_USESUSTAIN, OnCheckUsesustain)
  59.     //}}AFX_MSG_MAP
  60. END_MESSAGE_MAP()
  61.  
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CModEnvelope message handlers
  64.  
  65.  
  66. void CModEnvelope::SetModData()
  67. {
  68.   isEnvelope *env;
  69.   env = (isEnvelope *)modulator;
  70.   env->a = 255-m_attacSlider.GetPos();
  71.   env->d = 255-m_decaySlider.GetPos();
  72.   env->s = uIntToFloat(1024-m_sustainSlider.GetPos());
  73.   env->r = 255-m_releaseSlider.GetPos();
  74.   env->veloSens = sIntToFloat(m_velosenseSlider.GetPos());
  75.  
  76.  
  77.  
  78.   CString bla;
  79.   bla.Format ("%d",env->a);
  80.   m_aval.SetWindowText (bla);
  81.   bla.Format ("%d",env->d);
  82.   m_dval.SetWindowText (bla);
  83.   bla.Format ("%5.4f",env->s); 
  84.   m_sval.SetWindowText (bla);
  85.  
  86.   bla.Format ("%d",env->r);
  87.   m_rval.SetWindowText (bla);
  88.  
  89.   
  90.  
  91. //  instrument->Update();
  92.   
  93. }
  94. void CModEnvelope::UpdateModulateData()
  95. {
  96.   isEnvelope *env;
  97.   env = (isEnvelope *)modulator;
  98.   m_attacSlider.SetPos(255-env->a);
  99.   m_decaySlider.SetPos(255-env->d);
  100.   m_sustainSlider.SetPos(1024-uFloatToInt(env->s));
  101.   m_releaseSlider.SetPos(255-env->r);
  102.   m_velosenseSlider.SetPos(sFloatToInt(env->veloSens));
  103.  
  104.   if (env->useSustain)
  105.     m_checkSustain.SetCheck(1);
  106.   else
  107.     m_checkSustain.SetCheck(0);
  108.   
  109.   CString bla;
  110.   bla.Format ("%d",env->a);
  111.   m_aval.SetWindowText (bla);
  112.   bla.Format ("%d",env->d);
  113.   m_dval.SetWindowText (bla);
  114.  
  115.   bla.Format ("%5.4f",env->s);
  116.   m_sval.SetWindowText (bla);
  117.   bla.Format ("%d",env->r);
  118.   m_rval.SetWindowText (bla);
  119.   
  120. }
  121. BOOL CModEnvelope::OnInitDialog() 
  122. {
  123.     CModulateBaseDlg::OnInitDialog();
  124.     
  125.  
  126.   m_attacSlider.SetRange (0,255);
  127.   m_decaySlider.SetRange(0,255);
  128.   m_sustainSlider.SetRange(0,1024);
  129.   m_releaseSlider.SetRange(0,255);
  130.   m_velosenseSlider.SetRange (0,2048);
  131.  
  132.     // TODO: Add extra initialization here
  133.     
  134.     return TRUE;  // return TRUE unless you set the focus to a control
  135.                   // EXCEPTION: OCX Property Pages should return FALSE
  136. }
  137.  
  138. void CModEnvelope::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  139. {
  140.   // TODO: Add your message handler code here and/or call default
  141.   SetModData();
  142.   CModulateBaseDlg::OnHScroll(nSBCode, nPos, pScrollBar);
  143. }
  144. void CModEnvelope::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  145. {
  146.     // TODO: Add your message handler code here and/or call default
  147.   SetModData();    
  148.     CModulateBaseDlg::OnVScroll(nSBCode, nPos, pScrollBar);
  149. }
  150.  
  151. void CModEnvelope::OnCheckUsesustain() 
  152. {
  153.     // TODO: Add your control notification handler code here
  154.   isEnvelope *env;
  155.   env = (isEnvelope *)modulator;
  156.   
  157.   if (env->useSustain)
  158.   {
  159.     m_checkSustain.SetCheck(0);
  160.     env->useSustain=FALSE;
  161.   }
  162.   else
  163.   {
  164.     m_checkSustain.SetCheck(1);
  165.     env->useSustain=TRUE;
  166.   }
  167.   
  168.   SetModData();
  169.   
  170. }
  171.