ReverbControl

The ReverbControl value reverb level does not map straight from JSR-234 side to S60 Effect API. As the reverb level is just a single value in JSR-234, the Effect API uses three different values (reverb level for late reverberation, reflections level for early reflections and room level for overall reverberation level) to define the same thing. That is, Effect API (which uses MMA's IA-SIG 2.0's definitions) has more fine-grain control over reverb than JSR-234.

JSR-234's definition is closest to the definition of reflections level in the Effect API. Therefore, the mapping of room level is currently done using the following algorithm:


int getReverbLevel()
       {
       return ( reflectionsLevel + roomLevel );
       }

int setReverbLevel( int newLevel )
       {
           if ( newLevel > 0 )
                  {
                  throw new IllegalArgumentException("Too high reverb level."); 
                  }
           int tempChange = newLevel - ( reflectionsLevel + roomLevel );
           reflectionsLevel = newLevel - roomLevel;
           reverbLevel = reverbLevel + tempChange;
           return newLevel;
       }