Sebastian Moors wrote:
Well, i think there is at least one issue left beside the manual. The first one is described here:
Another (minor) issue: after loading a drumkit with more instruments than the current one, the instrument list to the left of the pattern area is resized but the pattern area itself is not (it's still dark gray). Clicking anywhere in the pattern fixes the problem.

How to reproduce: load the Boss DR-110 drumkit and then the DeathMetal drumkit.

One more thing (not a true programming error, but still feels defective to me): the max decay/release time is too short (10000 samples of the original sound). It's impossible to use it to slightly shorten the crash or ride cymbals, because they usually need to last longer than <0.25s (the current max). I've attached a patch that increases that time to 100ksamples and uses quadratic scale so that you can still specify very short times if needed.

I know that control law stuff is "subject to taste" - feel free to tweak it as needed. The patch doesn't affect the existing drumkits, because it only affects the way those knobs work, not the actual time values stored in drumkits or used by the sampler.

How to reproduce (without this patch applied): load the GM kit, put a single crash cymbal in the pattern, play it in a loop, set its envelope sustain to zero, set its envelope decay to max. Try to achieve something that doesn't sound like a "splash" or choked cymbal sound ;)

Krzysztof

Index: gui/src/InstrumentEditor/InstrumentEditor.cpp
===================================================================
--- gui/src/InstrumentEditor/InstrumentEditor.cpp	(revision 876)
+++ gui/src/InstrumentEditor/InstrumentEditor.cpp	(working copy)
@@ -302,10 +302,10 @@
 		m_pNameLbl->setText( m_pInstrument->get_name() );
 
 		// ADSR
-		m_pAttackRotary->setValue( m_pInstrument->get_adsr()->__attack / 10000.0 );
-		m_pDecayRotary->setValue( m_pInstrument->get_adsr()->__decay / 10000.0 );
+		m_pAttackRotary->setValue( sqrtf(m_pInstrument->get_adsr()->__attack / 100000.0) );
+		m_pDecayRotary->setValue( sqrtf(m_pInstrument->get_adsr()->__decay / 100000.0) );
 		m_pSustainRotary->setValue( m_pInstrument->get_adsr()->__sustain );
-		m_pReleaseRotary->setValue( m_pInstrument->get_adsr()->__release / 10000.0 );
+		m_pReleaseRotary->setValue( sqrtf(m_pInstrument->get_adsr()->__release / 100000.0) );
 		//~ ADSR
 
 		// filter
@@ -368,16 +368,16 @@
 			m_pInstrument->set_filter_resonance( fVal );
 		}
 		else if ( ref == m_pAttackRotary ) {
-			m_pInstrument->get_adsr()->__attack = fVal * 10000;
+			m_pInstrument->get_adsr()->__attack = fVal * fVal * 100000;
 		}
 		else if ( ref == m_pDecayRotary ) {
-			m_pInstrument->get_adsr()->__decay = fVal * 10000;
+			m_pInstrument->get_adsr()->__decay = fVal * fVal * 100000;
 		}
 		else if ( ref == m_pSustainRotary ) {
 			m_pInstrument->get_adsr()->__sustain = fVal;
 		}
 		else if ( ref == m_pReleaseRotary ) {
-			m_pInstrument->get_adsr()->__release = fVal * 10000;
+			m_pInstrument->get_adsr()->__release = fVal * fVal * 100000;
 		}
 		else if ( ref == m_pLayerGainRotary ) {
 			fVal = fVal * 5.0;
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Hydrogen-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hydrogen-devel

Reply via email to