|
From: <re...@us...> - 2006-08-13 15:52:41
|
Revision: 163 Author: rewbs Date: 2006-08-13 08:52:29 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/modplug/?rev=163&view=rev Log Message: ----------- v1.17.02.44 + <rewbs> Added release section to volume envelope (see: http://openmpt.xwiki.com/xwiki/bin/view/Manual/InstrumentReleaseEnvelope). IT only. . <rewbs> Overflow fixes in file loading functions (see: http://aluigi.altervista.org/adv/mptho-adv.txt) . <rewbs> Greyed out irrelevant items in the orderlist context menu. Modified Paths: -------------- trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_ins.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h Modified: trunk/OpenMPT/mptrack/View_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp 2006-08-13 15:51:11 UTC (rev 162) +++ trunk/OpenMPT/mptrack/View_ins.cpp 2006-08-13 15:52:29 UTC (rev 163) @@ -85,6 +85,7 @@ ON_COMMAND(ID_INSTRUMENT_SAMPLEMAP, OnEditSampleMap) ON_MESSAGE(WM_MOD_MIDIMSG, OnMidiMsg) ON_MESSAGE(WM_MOD_KEYCOMMAND, OnCustomKeyMsg) //rewbs.customKeys + ON_COMMAND(ID_ENVELOPE_TOGGLERELEASENODE, OnEnvToggleReleasNode) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -1305,6 +1306,7 @@ { maxpoint--; m_dcMemMain.SelectObject(CMainFrame::penEnvelope); + int releaseNode = EnvGetReleaseNode(); for (UINT i=0; i<=maxpoint; i++) { int x = (EnvGetTick(i) + 1) * ENV_ZOOM - nScrollPos; @@ -1313,11 +1315,18 @@ rect.top = y - 3; rect.right = x + 4; rect.bottom = y + 4; - m_dcMemMain.FrameRect(&rect, CBrush::FromHandle(CMainFrame::brushWhite)); - if (i) + if (i) { m_dcMemMain.LineTo(x, y); - else + } else { m_dcMemMain.MoveTo(x, y); + } + if (i==releaseNode) { + m_dcMemMain.FrameRect(&rect, CBrush::FromHandle(CMainFrame::brushHighLightRed)); + m_dcMemMain.SelectObject(CMainFrame::penEnvelopeHighlight); + } else { + m_dcMemMain.FrameRect(&rect, CBrush::FromHandle(CMainFrame::brushWhite)); + } + } } DrawPositionMarks(m_dcMemMain.m_hDC); @@ -1337,7 +1346,73 @@ // -! NEW_FEATURE#0015 } +BYTE CViewInstrument::EnvGetReleaseNode() +//-------------------------------------- +{ + CModDoc *pModDoc = GetDocument(); + if (pModDoc) { + CSoundFile *pSndFile = pModDoc->GetSoundFile(); + INSTRUMENTHEADER *penv = pSndFile->Headers[m_nInstrument]; + if (penv) { + switch(m_nEnv) { + case ENV_VOLUME: + return penv->nVolEnvReleaseNode; + case ENV_PANNING: + return penv->nPanEnvReleaseNode; + case ENV_PITCH: + return penv->nPitchEnvReleaseNode; + default: + return ENV_RELEASE_NODE_UNSET; + } + } + } +} +WORD CViewInstrument::EnvGetReleaseNodeValue() +//-------------------------------------- +{ + CModDoc *pModDoc = GetDocument(); + if (pModDoc) { + CSoundFile *pSndFile = pModDoc->GetSoundFile(); + INSTRUMENTHEADER *penv = pSndFile->Headers[m_nInstrument]; + if (penv) { + switch(m_nEnv) { + case ENV_VOLUME: + return penv->VolEnv[EnvGetReleaseNode()]; + case ENV_PANNING: + return penv->PanEnv[EnvGetReleaseNode()]; + case ENV_PITCH: + return penv->PitchEnv[EnvGetReleaseNode()]; + default: + return 0; + } + } + } +} + +WORD CViewInstrument::EnvGetReleaseNodeTick() +//-------------------------------------- +{ + CModDoc *pModDoc = GetDocument(); + if (pModDoc) { + CSoundFile *pSndFile = pModDoc->GetSoundFile(); + INSTRUMENTHEADER *penv = pSndFile->Headers[m_nInstrument]; + if (penv) { + switch(m_nEnv) { + case ENV_VOLUME: + return penv->VolPoints[EnvGetReleaseNode()]; + case ENV_PANNING: + return penv->PanPoints[EnvGetReleaseNode()]; + case ENV_PITCH: + return penv->PitchPoints[EnvGetReleaseNode()]; + default: + return 0; + } + } + } +} + + void CViewInstrument::DrawPositionMarks(HDC hdc) //---------------------------------------------- { @@ -1654,7 +1729,14 @@ if (nVal < 0) nVal = 0; if (nVal > 64) nVal = 64; if (nTick < 0) nTick = 0; - wsprintf(s, "Tick %d, [%d]", nTick, (m_nEnv != ENV_VOLUME) ? nVal-32 : nVal); + if (nTick<=EnvGetReleaseNodeTick()+1) { + int displayVal = (m_nEnv != ENV_VOLUME) ? nVal-32 : nVal; + wsprintf(s, "Tick %d, [%d]", nTick, displayVal); + } else { + int displayVal = (nVal-EnvGetReleaseNodeValue())*2; + displayVal = (m_nEnv != ENV_VOLUME) ? displayVal-32 : displayVal; + wsprintf(s, "Tick %d, [Rel%c%d]", nTick, displayVal>0?'+':'-', abs(displayVal)); + } UpdateIndicator(s); if ((m_dwStatus & INSSTATUS_DRAGGING) && (m_nDragItem)) { @@ -1860,9 +1942,11 @@ pSubMenu->EnableMenuItem(ID_ENVELOPE_INSERTPOINT, (lastpoint < maxpoint) ? MF_ENABLED : MF_GRAYED); pSubMenu->EnableMenuItem(ID_ENVELOPE_REMOVEPOINT, ((m_nDragItem) && (lastpoint > 1)) ? MF_ENABLED : MF_GRAYED); pSubMenu->EnableMenuItem(ID_ENVELOPE_CARRY, (pSndFile->m_nType & MOD_TYPE_IT) ? MF_ENABLED : MF_GRAYED); + pSubMenu->EnableMenuItem(ID_ENVELOPE_TOGGLERELEASENODE, (pSndFile->m_nType&MOD_TYPE_IT && m_nEnv==ENV_VOLUME) ? MF_ENABLED : MF_GRAYED); pSubMenu->CheckMenuItem(ID_ENVELOPE_SETLOOP, (EnvGetLoop()) ? MF_CHECKED : MF_UNCHECKED); pSubMenu->CheckMenuItem(ID_ENVELOPE_SUSTAIN, (EnvGetSustain()) ? MF_CHECKED : MF_UNCHECKED); pSubMenu->CheckMenuItem(ID_ENVELOPE_CARRY, (EnvGetCarry()) ? MF_CHECKED : MF_UNCHECKED); + pSubMenu->CheckMenuItem(ID_ENVELOPE_TOGGLERELEASENODE, (EnvGetReleaseNode()==m_nDragItem-1) ? MF_CHECKED : MF_UNCHECKED); m_ptMenu = pt; ClientToScreen(&pt); pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,this); @@ -1950,7 +2034,45 @@ } } +void CViewInstrument::OnEnvToggleReleasNode() +//--------------------------------------------------- +{ + int node = m_nDragItem-1; + CModDoc *pModDoc = GetDocument(); + if ((pModDoc) && (node>0) && (node <= EnvGetLastPoint())) + { + CSoundFile *pSndFile = pModDoc->GetSoundFile(); + INSTRUMENTHEADER *penv = pSndFile->Headers[m_nInstrument]; + switch(m_nEnv) { + case ENV_VOLUME: + if (penv->nVolEnvReleaseNode == node) { + penv->nVolEnvReleaseNode = ENV_RELEASE_NODE_UNSET; + } else { + penv->nVolEnvReleaseNode = node; + } + break; + case ENV_PANNING: + if (penv->nPanEnvReleaseNode == node) { + penv->nPanEnvReleaseNode = ENV_RELEASE_NODE_UNSET; + } else { + penv->nPanEnvReleaseNode = node; + } + break; + case ENV_PITCH: + if (penv->nPitchEnvReleaseNode == node) { + penv->nPitchEnvReleaseNode = ENV_RELEASE_NODE_UNSET; + } else { + penv->nPitchEnvReleaseNode = node; + } + break; + } + pModDoc->SetModified(); + InvalidateRect(NULL, FALSE); + } +} + + void CViewInstrument::OnEnvVolChanged() //------------------------------------- { @@ -2040,6 +2162,7 @@ if (penv->nVolLoopEnd > nPoint) penv->nVolLoopEnd--; if (penv->nVolSustainBegin > nPoint) penv->nVolSustainBegin--; if (penv->nVolSustainEnd > nPoint) penv->nVolSustainEnd--; + if (penv->nVolEnvReleaseNode>nPoint && penv->nVolEnvReleaseNode!=ENV_RELEASE_NODE_UNSET) penv->nVolEnvReleaseNode--; penv->VolPoints[0] = 0; bOk = TRUE; } @@ -2058,6 +2181,7 @@ if (penv->nPanLoopEnd > nPoint) penv->nPanLoopEnd--; if (penv->nPanSustainBegin > nPoint) penv->nPanSustainBegin--; if (penv->nPanSustainEnd > nPoint) penv->nPanSustainEnd--; + if (penv->nPanEnvReleaseNode>nPoint && penv->nPanEnvReleaseNode!=ENV_RELEASE_NODE_UNSET) penv->nPanEnvReleaseNode--; penv->PanPoints[0] = 0; bOk = TRUE; } @@ -2076,6 +2200,7 @@ if (penv->nPitchLoopEnd > nPoint) penv->nPitchLoopEnd--; if (penv->nPitchSustainBegin > nPoint) penv->nPitchSustainBegin--; if (penv->nPitchSustainEnd > nPoint) penv->nPitchSustainEnd--; + if (penv->nPitchEnvReleaseNode>nPoint && penv->nPitchEnvReleaseNode!=ENV_RELEASE_NODE_UNSET) penv->nPitchEnvReleaseNode--; penv->PitchPoints[0] = 0; bOk = TRUE; } @@ -2131,6 +2256,7 @@ if (penv->nVolLoopEnd >= i) penv->nVolLoopEnd++; if (penv->nVolSustainBegin >= i) penv->nVolSustainBegin++; if (penv->nVolSustainEnd >= i) penv->nVolSustainEnd++; + if (penv->nVolEnvReleaseNode>=i && penv->nVolEnvReleaseNode!=ENV_RELEASE_NODE_UNSET) penv->nVolEnvReleaseNode++; bOk = TRUE; } break; @@ -2156,6 +2282,7 @@ if (penv->nPanLoopEnd >= i) penv->nPanLoopEnd++; if (penv->nPanSustainBegin >= i) penv->nPanSustainBegin++; if (penv->nPanSustainEnd >= i) penv->nPanSustainEnd++; + if (penv->nPanEnvReleaseNode>=i && penv->nPanEnvReleaseNode!=ENV_RELEASE_NODE_UNSET) penv->nPanEnvReleaseNode++; bOk = TRUE; } break; @@ -2181,6 +2308,7 @@ if (penv->nPitchLoopEnd >= i) penv->nPitchLoopEnd++; if (penv->nPitchSustainBegin >= i) penv->nPitchSustainBegin++; if (penv->nPitchSustainEnd >= i) penv->nPitchSustainEnd++; + if (penv->nPitchEnvReleaseNode>=i && penv->nPitchEnvReleaseNode!=ENV_RELEASE_NODE_UNSET) penv->nPitchEnvReleaseNode++; bOk = TRUE; } break; Modified: trunk/OpenMPT/mptrack/View_ins.h =================================================================== --- trunk/OpenMPT/mptrack/View_ins.h 2006-08-13 15:51:11 UTC (rev 162) +++ trunk/OpenMPT/mptrack/View_ins.h 2006-08-13 15:52:29 UTC (rev 163) @@ -115,6 +115,7 @@ afx_msg void OnEnvLoopChanged(); afx_msg void OnEnvSustainChanged(); afx_msg void OnEnvCarryChanged(); + afx_msg void OnEnvToggleReleasNode(); afx_msg void OnEnvInsertPoint(); afx_msg void OnEnvRemovePoint(); afx_msg void OnSelectVolumeEnv(); @@ -134,6 +135,11 @@ virtual BOOL PreTranslateMessage(MSG *pMsg); //rewbs.customKeys //}}AFX_MSG DECLARE_MESSAGE_MAP() + +private: + BYTE EnvGetReleaseNode(); + WORD EnvGetReleaseNodeValue(); + WORD EnvGetReleaseNodeTick(); }; Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2006-08-13 15:51:11 UTC (rev 162) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2006-08-13 15:52:29 UTC (rev 163) @@ -437,25 +437,17 @@ || (!pChn->nLength) || ((pChn->dwFlags & CHN_NOTEFADE) && (!pChn->nFadeOutVol))) { pChn->dwFlags |= CHN_FASTVOLRAMP; - if ((m_nType & MOD_TYPE_IT) && (!bInstrumentChanged) && (penv) && (!(pChn->dwFlags & (CHN_KEYOFF|CHN_NOTEFADE)))) - { - if (!(penv->dwFlags & ENV_VOLCARRY)) pChn->nVolEnvPosition = 0; - if (!(penv->dwFlags & ENV_PANCARRY)) pChn->nPanEnvPosition = 0; - if (!(penv->dwFlags & ENV_PITCHCARRY)) pChn->nPitchEnvPosition = 0; - } else - { - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; + if ((m_nType & MOD_TYPE_IT) && (!bInstrumentChanged) && (penv) && (!(pChn->dwFlags & (CHN_KEYOFF|CHN_NOTEFADE)))) { + if (!(penv->dwFlags & ENV_VOLCARRY)) resetEnvelopes(pChn, ENV_RESET_VOL); + if (!(penv->dwFlags & ENV_PANCARRY)) resetEnvelopes(pChn, ENV_RESET_PAN); + if (!(penv->dwFlags & ENV_PITCHCARRY)) resetEnvelopes(pChn, ENV_RESET_PITCH); + } else { + resetEnvelopes(pChn); } pChn->nAutoVibDepth = 0; pChn->nAutoVibPos = 0; - } else - if ((penv) && (!(penv->dwFlags & ENV_VOLUME))) - { - pChn->nVolEnvPosition = 0; - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; + } else if ((penv) && (!(penv->dwFlags & ENV_VOLUME))) { + resetEnvelopes(pChn); } } // Invalid sample ? @@ -593,9 +585,7 @@ { if ((m_nType & MOD_TYPE_IT) && (pChn->dwFlags & CHN_NOTEFADE) && (!pChn->nFadeOutVol)) { - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; + resetEnvelopes(pChn); pChn->nAutoVibDepth = 0; pChn->nAutoVibPos = 0; pChn->dwFlags &= ~CHN_NOTEFADE; @@ -1013,9 +1003,7 @@ if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) { pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; + resetEnvelopes(pChn); pChn->nAutoVibDepth = 0; pChn->nAutoVibPos = 0; pChn->dwFlags &= ~CHN_NOTEFADE; @@ -1069,9 +1057,7 @@ if ((bPorta) && (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) && (instr)) { pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; + resetEnvelopes(pChn); pChn->nAutoVibDepth = 0; pChn->nAutoVibPos = 0; } @@ -1566,7 +1552,33 @@ return TRUE; } +void CSoundFile::resetEnvelopes(MODCHANNEL* pChn, int envToReset) +{ + switch (envToReset) { + case ENV_RESET_ALL: + pChn->nVolEnvPosition = 0; + pChn->nPanEnvPosition = 0; + pChn->nPitchEnvPosition = 0; + pChn->nVolEnvValueAtReleaseJump = NOT_YET_RELEASED; + pChn->nPitchEnvValueAtReleaseJump = NOT_YET_RELEASED; + pChn->nPanEnvValueAtReleaseJump = NOT_YET_RELEASED; + break; + case ENV_RESET_VOL: + pChn->nVolEnvPosition = 0; + pChn->nVolEnvValueAtReleaseJump = NOT_YET_RELEASED; + break; + case ENV_RESET_PAN: + pChn->nPanEnvPosition = 0; + pChn->nPanEnvValueAtReleaseJump = NOT_YET_RELEASED; + break; + case ENV_RESET_PITCH: + pChn->nPitchEnvPosition = 0; + pChn->nPitchEnvValueAtReleaseJump = NOT_YET_RELEASED; + break; + } +} + //////////////////////////////////////////////////////////// // Channels effects @@ -2689,8 +2701,15 @@ if (pChn->pHeader) { INSTRUMENTHEADER *penv = pChn->pHeader; - if (((penv->dwFlags & ENV_VOLLOOP) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) && (penv->nFadeOut)) + if (((penv->dwFlags & ENV_VOLLOOP) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) && (penv->nFadeOut)) { pChn->dwFlags |= CHN_NOTEFADE; + } + + if (penv->nVolEnvReleaseNode != ENV_RELEASE_NODE_UNSET) { + pChn->nVolEnvValueAtReleaseJump=getVolEnvValueFromPosition(pChn->nVolEnvPosition, penv); + pChn->nVolEnvPosition= penv->VolPoints[penv->nVolEnvReleaseNode]; + } + } } Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2006-08-13 15:51:11 UTC (rev 162) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2006-08-13 15:52:29 UTC (rev 163) @@ -189,6 +189,9 @@ VSB. nVolSustainBegin; VSE. nVolSustainEnd; VSTV [EXT] nVSTiVolume; +PERN nPitchEnvReleaseNode +AERN nPanEnvReleaseNode +VERN nVolEnvReleaseNode ----------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------*/ @@ -265,6 +268,9 @@ WRITE_MPTHEADER_sized_member( nCutSwing , BYTE , CS.. ) WRITE_MPTHEADER_sized_member( nResSwing , BYTE , RS.. ) WRITE_MPTHEADER_sized_member( nFilterMode , BYTE , FM.. ) +WRITE_MPTHEADER_sized_member( nPitchEnvReleaseNode, BYTE , PERN ) +WRITE_MPTHEADER_sized_member( nPanEnvReleaseNode , BYTE , AERN ) +WRITE_MPTHEADER_sized_member( nVolEnvReleaseNode , BYTE , VERN ) } // -------------------------------------------------------------------------------------------- @@ -338,6 +344,9 @@ GET_MPTHEADER_sized_member( nCutSwing , BYTE , CS.. ) GET_MPTHEADER_sized_member( nResSwing , BYTE , RS.. ) GET_MPTHEADER_sized_member( nFilterMode , BYTE , FM.. ) +GET_MPTHEADER_sized_member( nPitchEnvReleaseNode, BYTE , PERN ) +GET_MPTHEADER_sized_member( nPanEnvReleaseNode , BYTE , AERN ) +GET_MPTHEADER_sized_member( nVolEnvReleaseNode , BYTE , VERN ) } return pointer; @@ -748,6 +757,8 @@ LPSTR CSoundFile::AllocateSample(UINT nbytes) //------------------------------------------- { + if (nbytes>0xFFFFFFD6) + return NULL; LPSTR p = (LPSTR)GlobalAllocPtr(GHND, (nbytes+39) & ~7); if (p) p += 16; return p; @@ -2650,8 +2661,20 @@ m_defaultInstrument.nResampling = SRCMODE_DEFAULT; m_defaultInstrument.nFilterMode = FLTMODE_UNCHANGED; m_defaultInstrument.nPPC = 5*12; - m_defaultInstrument.nGlobalVol=128; + m_defaultInstrument.nGlobalVol=64; m_defaultInstrument.nPan = 0x20 << 2; m_defaultInstrument.nIFC = 0xFF; + m_defaultInstrument.nPanEnvReleaseNode=ENV_RELEASE_NODE_UNSET; + m_defaultInstrument.nPitchEnvReleaseNode=ENV_RELEASE_NODE_UNSET; + m_defaultInstrument.nVolEnvReleaseNode=ENV_RELEASE_NODE_UNSET; } +void CSoundFile::SetDefaultInstrumentValues(INSTRUMENTHEADER *penv) +//----------------------------------------------------------------- +{ + penv->nResampling = m_defaultInstrument.nResampling; + penv->nFilterMode = m_defaultInstrument.nFilterMode; + penv->nPitchEnvReleaseNode = m_defaultInstrument.nPitchEnvReleaseNode; + penv->nPanEnvReleaseNode = m_defaultInstrument.nPanEnvReleaseNode; + penv->nVolEnvReleaseNode = m_defaultInstrument.nVolEnvReleaseNode; +} \ No newline at end of file Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2006-08-13 15:51:11 UTC (rev 162) +++ trunk/OpenMPT/soundlib/Sndfile.h 2006-08-13 15:52:29 UTC (rev 163) @@ -62,6 +62,7 @@ #define MAX_MIXPLUGINS 100 //50 // -! BEHAVIOUR_CHANGE#0006 #define MAX_PLUGPRESETS 1000 //rewbs.plugPresets +#define MED_MAX_COMMENT_LENGTH 5*1024 //I think 5kB should be enough, though I admit this is a guess. #define MOD_TYPE_NONE 0x00 #define MOD_TYPE_MOD 0x01 @@ -353,6 +354,15 @@ NUM_SRC_MODES }; +enum { + ENV_RESET_ALL, + ENV_RESET_VOL, + ENV_RESET_PAN, + ENV_RESET_PITCH, + ENV_RELEASE_NODE_UNSET=0xFF, + NOT_YET_RELEASED=-1 +}; + // Midi Continuous Controller Codes // http://www.borg.com/~jglatt/tech/midispec/ctllist.htm enum { @@ -537,6 +547,9 @@ BYTE nCutSwing; BYTE nResSwing; BYTE nFilterMode; + BYTE nPitchEnvReleaseNode; + BYTE nPanEnvReleaseNode; + BYTE nVolEnvReleaseNode; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // WHEN adding new members here, ALSO update Sndfile.cpp (instructions near the top of this file)! @@ -588,6 +601,7 @@ INSTRUMENTHEADER *pHeader; MODINSTRUMENT *pInstrument; DWORD nVolEnvPosition, nPanEnvPosition, nPitchEnvPosition; + LONG nVolEnvValueAtReleaseJump, nPanEnvValueAtReleaseJump, nPitchEnvValueAtReleaseJump; DWORD nMasterChn, nVUMeter; LONG nGlobalVol, nInsVol; LONG nFineTune, nTranspose; @@ -1153,6 +1167,10 @@ static UINT Normalize24BitBuffer(LPBYTE pbuffer, UINT cbsizebytes, DWORD lmax24, DWORD dwByteInc); UINT GetBestPlugin(UINT nChn, UINT priority, bool respectMutes); + + int getVolEnvValueFromPosition(int position, INSTRUMENTHEADER* penv); + void resetEnvelopes(MODCHANNEL* pChn, int envToReset = ENV_RESET_ALL); + void SetDefaultInstrumentValues(INSTRUMENTHEADER *penv); private: UINT __cdecl GetChannelPlugin(UINT nChan, bool respectMutes); UINT __cdecl GetActiveInstrumentPlugin(UINT nChan, bool respectMutes); @@ -1160,6 +1178,9 @@ void HandlePatternTransitionEvents(); void BuildDefaultInstrument(); + + + }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |