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