MCPcopy Create free account
hub / github.com/LMMS/lmms / fillLevel

Method fillLevel

src/core/EnvelopeAndLfoParameters.cpp:290–333  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288
289
290void EnvelopeAndLfoParameters::fillLevel( float * _buf, f_cnt_t _frame,
291 const f_cnt_t _release_begin,
292 const fpp_t _frames )
293{
294 QMutexLocker m(&m_paramMutex);
295
296 if( _frame < 0 || _release_begin < 0 )
297 {
298 return;
299 }
300
301 fillLfoLevel( _buf, _frame, _frames );
302
303 for( fpp_t offset = 0; offset < _frames; ++offset, ++_buf, ++_frame )
304 {
305 float env_level;
306 if( _frame < _release_begin )
307 {
308 if( _frame < m_pahdFrames )
309 {
310 env_level = m_pahdEnv[_frame];
311 }
312 else
313 {
314 env_level = m_sustainLevel;
315 }
316 }
317 else if( ( _frame - _release_begin ) < m_rFrames )
318 {
319 env_level = m_rEnv[_frame - _release_begin] *
320 ( ( _release_begin < m_pahdFrames ) ?
321 m_pahdEnv[_release_begin] : m_sustainLevel );
322 }
323 else
324 {
325 env_level = 0.0f;
326 }
327
328 // at this point, *_buf is LFO level
329 *_buf = m_controlEnvAmountModel.value() ?
330 env_level * ( 0.5f + *_buf ) :
331 env_level + *_buf;
332 }
333}
334
335
336

Callers 2

volumeLevelMethod · 0.80
processAudioBufferMethod · 0.80

Calls 1

valueMethod · 0.45

Tested by

no test coverage detected