Revisit the initialization for local variables (#7143)

* clang-tidy: Apply cppcoreguidelines-init-variables everywhere (treating NaNs as zeros)

* Initialize msec and tick outside switch

* Update plugins/Vestige/Vestige.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/Vestige/Vestige.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/Vestige/Vestige.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/VstEffect/VstEffectControls.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/VstEffect/VstEffectControls.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/VstEffect/VstEffectControls.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Use initialization with =

* Use tabs

* Use static_cast

* Update DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Do not use tabs for alignment in src/core/DrumSynth.cpp

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

* Move x variable inside loop

* Use ternary operator for b variable

* Revert "Use tabs"

This reverts commit 07afd8a83f58b539c3673310b2aad4b63c9198a0.

* Remove unnecessary variables in XpressiveView

* Simplify initialization in Plugin

* Combine declaration and initialization in EqCurve

* Combine declaration and initialization in Song

* Combine declaration and initialization in AudioAlsa

* Combine declaration and initialization in EqCurve (again)

* Missed some

* Undo changes made to non-LMMS files

* Undo indentation changes in SidInstrument.cpp

* Combine declaration with assignment in IoHelper

* Combine declaration with assignment using auto in Carla

* Combine declaration with assignment

* Combine declaration with assignment in BasicFilters

* Simplify assignments in AudioFileProcessorWaveView::zoom

* Simplify out sample variable in BitInvader

* Remove sampleLength variable in DelayEffect

* Move gain variable in DynamicsProcessor

* Combine peak variable declaration with assignment in EqSpectrumView

* Move left/right lfo variables in for loop in FlangerEffect

* Use ternary operator for group variable in LadspaControlDialog

* Combine declaration with assignment in Lb302

* Combine declaration with assignment in MidiExport

* Combine declaration with assignment in MidiFile

* Combine declaration with assignment in MidiImport

* Use ternary operator for vel_adjusted variable in OpulenZ

* Move tmpL and dcblkL variables in for loop in ReverbSC

* Combine declaration with initialization in SlicerT

* Combine declaration with assignment in SaSpectrumView

* Combine declaration with assignment in SaWaterfallView

* Combine declaration with assignment in StereoEnhancerEffect

* Combine declaration with assignment in VibratingString

* Combine declaration with assignment in VstEffectControls

* Combine declaration with assignment in Xpressive

* Combine declaration with assignment in AutomatableModel

* Combine declaration with assignment in AutomationClip

* Move sample variable in for loop in BandLimitedWave

* Combine declaration with assignment in DataFile

* Combine declaration with assignment in DrumSynth

* Combine declaration with assignment in Effect

* Remove redundant assignment to nphsLeft in InstrumentPlayHandle

* Combine declaration with assignment in LadspaManager

* Combine declaration with assignment in LinkedModelGroups

* Combine declaration with assignment in MemoryHelper

* Combine declaration with assignment in AudioAlsa

* Combine declaration with assignment in AudioFileOgg

* Combine declaration with assignment in AudioPortAudio

* Combine declaration with assignment in AudioSoundIo

* Combine declaration with assignment in Lv2Evbuf

* Combine declaration with assignment in Lv2Proc

* Combine declaration with assignment in main

* Combine declaration with assignment in MidiAlsaRaw

* Combine declaration with assignment in MidiAlsaSeq

* Combine declaration with assignment in MidiController

* Combine declaration with assignment in MidiJack

* Combine declaration with assignment in MidiSndio

* Combine declaration with assignment in ControlLayout

* Combine declaration with assignment in MainWindow

* Combine declaration with assignment in ProjectNotes

* Use ternary operator for nextValue variable in AutomationClipView

* Combine declaration with assignment in AutomationEditor

* Move length variable in for-loop in PianoRoll

* Combine declaration with assignment in ControllerConnectionDialog

* Combine declaration with assignment in Graph

* Combine declaration with assignment in LcdFloatSpinBox

* Combine declaration with assignment in TimeDisplayWidget

* Remove currentNote variable in InstrumentTrack

* Combine declaration with assignment in DrumSynth (again)

* Use ternary operator for factor variable in BitInvader

* Use ternary operator for highestBandwich variable in EqCurve

Bandwich?

* Move sum variable into for loop in Graph

* Fix format in MidiSndio

* Fixup a few more

* Cleanup error variables

* Use ternary operators and combine declaration with initialization

* Combine declaration with initialization

* Update plugins/LadspaEffect/LadspaControlDialog.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/OpulenZ/OpulenZ.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/SpectrumAnalyzer/SaProcessor.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/midi/MidiAlsaRaw.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/MainWindow.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/clips/AutomationClipView.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/editors/AutomationEditor.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/widgets/Fader.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Move static_cast conversion into separate variable

* Use real index when interpolating

* Remove empty line

* Make helpBtn a private member

* Move controller type into separate variable

* Fix format of DrumSynth::waveform function

* Use tabs and static_cast

* Remove redundant if branch

* Refactor using static_cast/reinterpret_cast

* Add std namespace prefix

* Store repeated conditional into boolean variable

* Cast to int before assigning to m_currentLength

* Rename note_frames to noteFrames

* Update src/core/Controller.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/widgets/Graph.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Revert changes that initialized variables redudantly

For situations where the initialization is
more complex or passed into a function
by a pointer, we dont need to do
initialization ourselves since it is
already done for us, just in a different way.

* Remove redundant err variable

* Remove explicit check of err variable

* Clean up changes and address review

* Do not initialize to 0/nullptr when not needed

* Wrap condition in parentheses for readability

---------

Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
This commit is contained in:
saker
2024-03-28 17:21:31 -04:00
committed by GitHub
parent 6f5f2c2ddd
commit b2f2fc4ad1
72 changed files with 503 additions and 821 deletions

View File

@@ -340,7 +340,7 @@ public:
inline sample_t update( sample_t _in0, ch_cnt_t _chnl )
{
sample_t out;
sample_t out = 0.0f;
switch( m_type )
{
case FilterType::Moog:
@@ -375,7 +375,6 @@ public:
// input signal is linear-interpolated after oversampling, output signal is averaged from oversampled outputs
case FilterType::Tripole:
{
out = 0.0f;
float ip = 0.0f;
for( int i = 0; i < 4; ++i )
{
@@ -431,7 +430,6 @@ public:
case FilterType::Highpass_SV:
{
float hp;
for( int i = 0; i < 2; ++i ) // 2x oversample
{
m_delay2[_chnl] = m_delay2[_chnl] + m_svf1 * m_delay1[_chnl];
@@ -444,8 +442,7 @@ public:
case FilterType::Notch_SV:
{
float hp1, hp2;
float hp1;
for( int i = 0; i < 2; ++i ) // 2x oversample
{
m_delay2[_chnl] = m_delay2[_chnl] + m_svf1 * m_delay1[_chnl]; /* delay2/4 = lowpass output */
@@ -453,7 +450,7 @@ public:
m_delay1[_chnl] = m_svf1 * hp1 + m_delay1[_chnl]; /* delay1/3 = bandpass output */
m_delay4[_chnl] = m_delay4[_chnl] + m_svf2 * m_delay3[_chnl];
hp2 = m_delay2[_chnl] - m_delay4[_chnl] - m_svq * m_delay3[_chnl];
float hp2 = m_delay2[_chnl] - m_delay4[_chnl] - m_svq * m_delay3[_chnl];
m_delay3[_chnl] = m_svf2 * hp2 + m_delay3[_chnl];
}
@@ -469,19 +466,19 @@ public:
case FilterType::Lowpass_RC12:
{
sample_t lp, bp, hp, in;
sample_t lp = 0.0f;
for( int n = 4; n != 0; --n )
{
in = _in0 + m_rcbp0[_chnl] * m_rcq;
sample_t in = _in0 + m_rcbp0[_chnl] * m_rcq;
in = std::clamp(in, -1.0f, 1.0f);
lp = in * m_rcb + m_rclp0[_chnl] * m_rca;
lp = std::clamp(lp, -1.0f, 1.0f);
hp = m_rcc * ( m_rchp0[_chnl] + in - m_rclast0[_chnl] );
sample_t hp = m_rcc * (m_rchp0[_chnl] + in - m_rclast0[_chnl]);
hp = std::clamp(hp, -1.0f, 1.0f);
bp = hp * m_rcb + m_rcbp0[_chnl] * m_rca;
sample_t bp = hp * m_rcb + m_rcbp0[_chnl] * m_rca;
bp = std::clamp(bp, -1.0f, 1.0f);
m_rclast0[_chnl] = in;
@@ -494,10 +491,10 @@ public:
case FilterType::Highpass_RC12:
case FilterType::Bandpass_RC12:
{
sample_t hp, bp, in;
sample_t hp, bp;
for( int n = 4; n != 0; --n )
{
in = _in0 + m_rcbp0[_chnl] * m_rcq;
sample_t in = _in0 + m_rcbp0[_chnl] * m_rcq;
in = std::clamp(in, -1.0f, 1.0f);
hp = m_rcc * ( m_rchp0[_chnl] + in - m_rclast0[_chnl] );
@@ -515,20 +512,20 @@ public:
case FilterType::Lowpass_RC24:
{
sample_t lp, bp, hp, in;
sample_t lp;
for( int n = 4; n != 0; --n )
{
// first stage is as for the 12dB case...
in = _in0 + m_rcbp0[_chnl] * m_rcq;
sample_t in = _in0 + m_rcbp0[_chnl] * m_rcq;
in = std::clamp(in, -1.0f, 1.0f);
lp = in * m_rcb + m_rclp0[_chnl] * m_rca;
lp = std::clamp(lp, -1.0f, 1.0f);
hp = m_rcc * ( m_rchp0[_chnl] + in - m_rclast0[_chnl] );
sample_t hp = m_rcc * ( m_rchp0[_chnl] + in - m_rclast0[_chnl] );
hp = std::clamp(hp, -1.0f, 1.0f);
bp = hp * m_rcb + m_rcbp0[_chnl] * m_rca;
sample_t bp = hp * m_rcb + m_rcbp0[_chnl] * m_rca;
bp = std::clamp(bp, -1.0f, 1.0f);
m_rclast0[_chnl] = in;
@@ -559,11 +556,11 @@ public:
case FilterType::Highpass_RC24:
case FilterType::Bandpass_RC24:
{
sample_t hp, bp, in;
sample_t hp, bp;
for( int n = 4; n != 0; --n )
{
// first stage is as for the 12dB case...
in = _in0 + m_rcbp0[_chnl] * m_rcq;
sample_t in = _in0 + m_rcbp0[_chnl] * m_rcq;
in = std::clamp(in, -1.0f, 1.0f);
hp = m_rcc * ( m_rchp0[_chnl] + in - m_rclast0[_chnl] );
@@ -600,20 +597,18 @@ public:
case FilterType::FastFormant:
{
if (std::abs(_in0) < 1.0e-10f && std::abs(m_vflast[0][_chnl]) < 1.0e-10f) { return 0.0f; } // performance hack - skip processing when the numbers get too small
sample_t hp, bp, in;
out = 0;
const int os = m_type == FilterType::FastFormant ? 1 : 4; // no oversampling for fast formant
for( int o = 0; o < os; ++o )
{
// first formant
in = _in0 + m_vfbp[0][_chnl] * m_vfq;
sample_t in = _in0 + m_vfbp[0][_chnl] * m_vfq;
in = std::clamp(in, -1.0f, 1.0f);
hp = m_vfc[0] * ( m_vfhp[0][_chnl] + in - m_vflast[0][_chnl] );
sample_t hp = m_vfc[0] * ( m_vfhp[0][_chnl] + in - m_vflast[0][_chnl] );
hp = std::clamp(hp, -1.0f, 1.0f);
bp = hp * m_vfb[0] + m_vfbp[0][_chnl] * m_vfa[0];
sample_t bp = hp * m_vfb[0] + m_vfbp[0][_chnl] * m_vfa[0];
bp = std::clamp(bp, -1.0f, 1.0f);
m_vflast[0][_chnl] = in;

View File

@@ -75,13 +75,12 @@ inline FILE* F_OPEN_UTF8(std::string const& fname, const char* mode){
inline int fileToDescriptor(FILE* f, bool closeFile = true)
{
int fh;
if (f == nullptr) {return -1;}
#ifdef LMMS_BUILD_WIN32
fh = _dup(_fileno(f));
int fh = _dup(_fileno(f));
#else
fh = dup(fileno(f));
int fh = dup(fileno(f));
#endif
if (closeFile) {fclose(f);}

View File

@@ -39,10 +39,9 @@ namespace lmms::LocaleHelper
inline double toDouble(QString str, bool* ok = nullptr)
{
bool isOkay;
double value;
QLocale c(QLocale::C);
c.setNumberOptions(QLocale::RejectGroupSeparator);
value = c.toDouble(str, &isOkay);
double value = c.toDouble(str, &isOkay);
if (!isOkay)
{
QLocale german(QLocale::German);

View File

@@ -354,32 +354,21 @@ void AudioFileProcessorWaveView::zoom(const bool out)
const double comp_ratio = double(qMin(d_from, d_to))
/ qMax(1, qMax(d_from, d_to));
f_cnt_t new_from;
f_cnt_t new_to;
const auto boundedFrom = std::clamp(m_from + step_from, 0, start);
const auto boundedTo = std::clamp(m_to + step_to, end, frames);
if ((out && d_from < d_to) || (! out && d_to < d_from))
{
new_from = qBound(0, m_from + step_from, start);
new_to = qBound(
end,
m_to + f_cnt_t(step_to * (new_from == m_from ? 1 : comp_ratio)),
frames
);
}
else
{
new_to = qBound(end, m_to + step_to, frames);
new_from = qBound(
0,
m_from + f_cnt_t(step_from * (new_to == m_to ? 1 : comp_ratio)),
start
);
}
const auto toStep = static_cast<f_cnt_t>(step_from * (boundedTo == m_to ? 1 : comp_ratio));
const auto newFrom
= (out && d_from < d_to) || (!out && d_to < d_from) ? boundedFrom : std::clamp(m_from + toStep, 0, start);
if (static_cast<double>(new_to - new_from) / m_sample->sampleRate() > 0.05)
const auto fromStep = static_cast<f_cnt_t>(step_to * (boundedFrom == m_from ? 1 : comp_ratio));
const auto newTo
= (out && d_from < d_to) || (!out && d_to < d_from) ? std::clamp(m_to + fromStep, end, frames) : boundedTo;
if (static_cast<double>(newTo - newFrom) / m_sample->sampleRate() > 0.05)
{
setFrom(new_from);
setTo(new_to);
setFrom(newFrom);
setTo(newTo);
}
}

View File

@@ -110,34 +110,18 @@ sample_t BSynth::nextStringSample( float sample_length )
sample_realindex -= sample_length;
}
sample_t sample;
if (interpolation) {
// find position in shape
int a = static_cast<int>(sample_realindex);
int b;
if (a < (sample_length-1)) {
b = static_cast<int>(sample_realindex+1);
} else {
b = 0;
}
// Nachkommaanteil
const float frac = fraction( sample_realindex );
sample = linearInterpolate( sample_shape[a], sample_shape[b], frac );
} else {
// No interpolation
sample_index = static_cast<int>(sample_realindex);
sample = sample_shape[sample_index];
}
// progress in shape
const auto currentRealIndex = sample_realindex;
const auto currentIndex = static_cast<int>(sample_realindex);
sample_realindex += sample_step;
return sample;
if (!interpolation)
{
sample_index = currentIndex;
return sample_shape[sample_index];
}
const auto nextIndex = currentIndex < sample_length - 1 ? currentIndex + 1 : 0;
return linearInterpolate(sample_shape[currentIndex], sample_shape[nextIndex], fraction(currentRealIndex));
}
/***********************************************************************
@@ -276,16 +260,7 @@ void BitInvader::playNote( NotePlayHandle * _n,
{
if (!_n->m_pluginData)
{
float factor;
if( !m_normalize.value() )
{
factor = defaultNormalizationFactor;
}
else
{
factor = m_normalizeFactor;
}
float factor = !m_normalize.value() ? defaultNormalizationFactor : m_normalizeFactor;
_n->m_pluginData = new BSynth(
const_cast<float*>( m_graph.samples() ),
_n,

View File

@@ -1116,16 +1116,15 @@ void CarlaParamsView::clearKnobs()
}
// Remove spacers
QLayoutItem* item;
for (int16_t i=m_inputScrollAreaLayout->count() - 1; i > 0; i--)
{
item = m_inputScrollAreaLayout->takeAt(i);
auto item = m_inputScrollAreaLayout->takeAt(i);
if (item->widget()) {continue;}
delete item;
}
for (int16_t i=m_outputScrollAreaLayout->count() - 1; i > 0; i--)
{
item = m_outputScrollAreaLayout->takeAt(i);
auto item = m_outputScrollAreaLayout->takeAt(i);
if (item->widget()) {continue;}
delete item;
}

View File

@@ -115,7 +115,7 @@ bool DelayEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames )
{
m_outGain = dbfsToAmp( m_delayControls.m_outGainModel.value() );
}
int sampleLength;
for( fpp_t f = 0; f < frames; ++f )
{
dryS[0] = buf[f][0];
@@ -123,8 +123,7 @@ bool DelayEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames )
m_delay->setFeedback( *feedbackPtr );
m_lfo->setFrequency( *lfoTimePtr );
sampleLength = *lengthPtr * Engine::audioEngine()->processingSampleRate();
m_currentLength = sampleLength;
m_currentLength = static_cast<int>(*lengthPtr * Engine::audioEngine()->processingSampleRate());
m_delay->setLength( m_currentLength + ( *amplitudePtr * ( float )m_lfo->tick() ) );
m_delay->tick( buf[f] );

View File

@@ -106,7 +106,6 @@ bool DynProcEffect::processAudioBuffer( sampleFrame * _buf,
int i = 0;
auto sm_peak = std::array{0.0f, 0.0f};
float gain;
double out_sum = 0.0;
const float d = dryLevel();
@@ -196,20 +195,10 @@ bool DynProcEffect::processAudioBuffer( sampleFrame * _buf,
if( sm_peak[i] > DYN_NOISE_FLOOR )
{
if ( lookup < 1 )
{
gain = frac * samples[0];
}
else
if ( lookup < 200 )
{
gain = linearInterpolate( samples[ lookup - 1 ],
samples[ lookup ], frac );
}
else
{
gain = samples[199];
};
float gain;
if (lookup < 1) { gain = frac * samples[0]; }
else if (lookup < 200) { gain = linearInterpolate(samples[lookup - 1], samples[lookup], frac); }
else { gain = samples[199]; }
s[i] *= gain;
s[i] /= sm_peak[i];

View File

@@ -208,15 +208,14 @@ float EqHandle::getPeakCurve( float x )
double Q = getResonance();
double A = pow( 10, yPixelToGain( EqHandle::y(), m_heigth, m_pixelsPerUnitHeight ) / 40 );
double alpha = s * sinh( log( 2 ) / 2 * Q * w0 / sinf( w0 ) );
double a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = 1 + alpha * A;
b1 = -2 * c;
b2 = 1 - alpha * A;
a0 = 1 + alpha / A;
a1 = -2 * c;
a2 = 1 - alpha / A;
double b0 = 1 + alpha * A;
double b1 = -2 * c;
double b2 = 1 - alpha * A;
double a0 = 1 + alpha / A;
double a1 = -2 * c;
double a2 = 1 - alpha / A;
//normalise
b0 /= a0;
@@ -245,15 +244,15 @@ float EqHandle::getHighShelfCurve( float x )
double s = sinf( w0 );
double A = pow( 10, yPixelToGain( EqHandle::y(), m_heigth, m_pixelsPerUnitHeight ) * 0.025 );
double beta = sqrt( A ) / m_resonance;
double a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = A * ( ( A + 1 ) + ( A - 1 ) * c + beta * s);
b1 = -2 * A * ( ( A - 1 ) + ( A + 1 ) * c );
b2 = A * ( ( A + 1 ) + ( A - 1 ) * c - beta * s);
a0 = ( A + 1 ) - ( A - 1 ) * c + beta * s;
a1 = 2 * ( ( A - 1 ) - ( A + 1 ) * c );
a2 = ( A + 1 ) - ( A - 1 ) * c - beta * s;
double b0 = A * ((A + 1) + (A - 1) * c + beta * s);
double b1 = -2 * A * ((A - 1) + (A + 1) * c);
double b2 = A * ((A + 1) + (A - 1) * c - beta * s);
double a0 = (A + 1) - (A - 1) * c + beta * s;
double a1 = 2 * ((A - 1) - (A + 1) * c);
double a2 = (A + 1) - (A - 1) * c - beta * s;
//normalise
b0 /= a0;
b1 /= a0;
@@ -281,15 +280,14 @@ float EqHandle::getLowShelfCurve( float x )
double s = sinf( w0 );
double A = pow( 10, yPixelToGain( EqHandle::y(), m_heigth, m_pixelsPerUnitHeight ) / 40 );
double beta = sqrt( A ) / m_resonance;
double a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = A * ( ( A + 1 ) - ( A - 1 ) * c + beta * s );
b1 = 2 * A * ( ( A - 1 ) - ( A + 1 ) * c ) ;
b2 = A * ( ( A + 1 ) - ( A - 1 ) * c - beta * s);
a0 = ( A + 1 ) + ( A - 1 ) * c + beta * s;
a1 = -2 * ( ( A - 1 ) + ( A + 1 ) * c );
a2 = ( A + 1 ) + ( A - 1) * c - beta * s;
double b0 = A * ((A + 1) - (A - 1) * c + beta * s);
double b1 = 2 * A * ((A - 1) - (A + 1) * c);
double b2 = A * ((A + 1) - (A - 1) * c - beta * s);
double a0 = (A + 1) + (A - 1) * c + beta * s;
double a1 = -2 * ((A - 1) + (A + 1) * c);
double a2 = (A + 1) + (A - 1) * c - beta * s;
//normalise
b0 /= a0;
@@ -318,14 +316,14 @@ float EqHandle::getLowCutCurve( float x )
double s = sinf( w0 );
double resonance = getResonance();
double alpha = s / (2 * resonance);
double a0, a1, a2, b0, b1, b2; // coeffs to calculate
b0 = ( 1 + c ) * 0.5;
b1 = ( -( 1 + c ) );
b2 = ( 1 + c ) * 0.5;
a0 = 1 + alpha;
a1 = ( -2 * c );
a2 = 1 - alpha;
double b0 = (1 + c) * 0.5;
double b1 = (-(1 + c));
double b2 = (1 + c) * 0.5;
double a0 = 1 + alpha;
double a1 = (-2 * c);
double a2 = 1 - alpha;
//normalise
b0 /= a0;
b1 /= a0;
@@ -361,14 +359,14 @@ float EqHandle::getHighCutCurve( float x )
double s = sinf( w0 );
double resonance = getResonance();
double alpha = s / (2 * resonance);
double a0, a1, a2, b0, b1, b2; // coeffs to calculate
b0 = ( 1 - c ) * 0.5;
b1 = 1 - c;
b2 = ( 1 - c ) * 0.5;
a0 = 1 + alpha;
a1 = -2 * c;
a2 = 1 - alpha;
double b0 = (1 - c) * 0.5;
double b1 = 1 - c;
double b2 = (1 - c) * 0.5;
double a0 = 1 + alpha;
double a1 = -2 * c;
double a2 = 1 - alpha;
//normalise
b0 /= a0;
b1 /= a0;
@@ -569,16 +567,7 @@ void EqHandle::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
void EqHandle::wheelEvent( QGraphicsSceneWheelEvent *wevent )
{
float highestBandwich;
if( m_type != EqHandleType::Para )
{
highestBandwich = 10;
}
else
{
highestBandwich = 4;
}
float highestBandwich = m_type != EqHandleType::Para ? 10 : 4;
int numDegrees = wevent->delta() / 120;
float numSteps = 0;
if( wevent->modifiers() == Qt::ControlModifier )

View File

@@ -190,15 +190,13 @@ public :
float s = sinf( w0 );
float alpha = s / ( 2 * m_res );
float a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = ( 1 + c ) * 0.5;
b1 = ( -( 1 + c ) );
b2 = ( 1 + c ) * 0.5;
a0 = 1 + alpha;
a1 = ( -2 * c );
a2 = 1 - alpha;
float b0 = (1 + c) * 0.5;
float b1 = (-(1 + c));
float b2 = (1 + c) * 0.5;
float a0 = 1 + alpha;
float a1 = (-2 * c);
float a2 = 1 - alpha;
//normalise
b0 /= a0;
@@ -235,15 +233,13 @@ public :
float s = sinf( w0 );
float alpha = s / ( 2 * m_res );
float a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = ( 1 - c ) * 0.5;
b1 = 1 - c;
b2 = ( 1 - c ) * 0.5;
a0 = 1 + alpha;
a1 = -2 * c;
a2 = 1 - alpha;
float b0 = (1 - c) * 0.5;
float b1 = 1 - c;
float b2 = (1 - c) * 0.5;
float a0 = 1 + alpha;
float a1 = -2 * c;
float a2 = 1 - alpha;
//normalise
b0 /= a0;
@@ -279,15 +275,13 @@ public:
float A = pow( 10, m_gain * 0.025);
float alpha = s * sinh( log( 2 ) / 2 * m_bw * w0 / sinf(w0) );
float a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = 1 + alpha*A;
b1 = -2*c;
b2 = 1 - alpha*A;
a0 = 1 + alpha/A;
a1 = -2*c;
a2 = 1 - alpha/A;
float b0 = 1 + alpha * A;
float b1 = -2 * c;
float b2 = 1 - alpha * A;
float a0 = 1 + alpha / A;
float a1 = -2 * c;
float a2 = 1 - alpha / A;
//normalise
b0 /= a0;
@@ -345,15 +339,13 @@ public :
// float alpha = s / ( 2 * m_res );
float beta = sqrt( A ) / m_res;
float a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = A * ( ( A+1 ) - ( A-1 ) * c + beta * s );
b1 = 2 * A * ( ( A - 1 ) - ( A + 1 ) * c) ;
b2 = A * ( ( A + 1 ) - ( A - 1 ) * c - beta * s);
a0 = ( A + 1 ) + ( A - 1 ) * c + beta * s;
a1 = -2 * ( ( A - 1 ) + ( A + 1 ) * c );
a2 = ( A + 1 ) + ( A - 1) * c - beta * s;
float b0 = A * ((A + 1) - (A - 1) * c + beta * s);
float b1 = 2 * A * ((A - 1) - (A + 1) * c);
float b2 = A * ((A + 1) - (A - 1) * c - beta * s);
float a0 = (A + 1) + (A - 1) * c + beta * s;
float a1 = -2 * ((A - 1) + (A + 1) * c);
float a2 = (A + 1) + (A - 1) * c - beta * s;
//normalise
b0 /= a0;
@@ -383,15 +375,14 @@ public :
float A = pow( 10, m_gain * 0.025 );
float beta = sqrt( A ) / m_res;
float a0, a1, a2, b0, b1, b2; // coeffs to calculate
//calc coefficents
b0 = A *( ( A +1 ) + ( A - 1 ) * c + beta * s);
b1 = -2 * A * ( ( A - 1 ) + ( A + 1 ) * c );
b2 = A * ( ( A + 1 ) + ( A - 1 ) * c - beta * s);
a0 = ( A + 1 ) - ( A - 1 ) * c + beta * s;
a1 = 2 * ( ( A - 1 ) - ( A + 1 ) * c );
a2 = ( A + 1) - ( A - 1 ) * c - beta * s;
float b0 = A * ((A + 1) + (A - 1) * c + beta * s);
float b1 = -2 * A * ((A - 1) + (A + 1) * c);
float b2 = A * ((A + 1) + (A - 1) * c - beta * s);
float a0 = (A + 1) - (A - 1) * c + beta * s;
float a1 = 2 * ((A - 1) - (A + 1) * c);
float a2 = (A + 1) - (A - 1) * c - beta * s;
//normalise
b0 /= a0;
b1 /= a0;

View File

@@ -228,13 +228,12 @@ void EqSpectrumView::paintEvent(QPaintEvent *event)
//Now we calculate the path
m_path = QPainterPath();
float *bands = m_analyser->m_bands;
float peak;
m_path.moveTo( 0, height() );
m_peakSum = 0;
const float fallOff = 1.07;
for( int x = 0; x < MAX_BANDS; ++x, ++bands )
{
peak = *bands != 0. ? (fh * 2.0 / 3.0 * (20. * log10(*bands / energy) - LOWER_Y) / (-LOWER_Y)) : 0.;
float peak = *bands != 0. ? (fh * 2.0 / 3.0 * (20. * log10(*bands / energy) - LOWER_Y) / (-LOWER_Y)) : 0.;
if( peak < 0 )
{

View File

@@ -108,10 +108,11 @@ bool FlangerEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames )
m_lDelay->setFeedback( m_flangerControls.m_feedbackModel.value() );
m_rDelay->setFeedback( m_flangerControls.m_feedbackModel.value() );
auto dryS = std::array<sample_t, 2>{};
float leftLfo;
float rightLfo;
for( fpp_t f = 0; f < frames; ++f )
{
float leftLfo;
float rightLfo;
buf[f][0] += m_noise->tick() * noise;
buf[f][1] += m_noise->tick() * noise;
dryS[0] = buf[f][0];

View File

@@ -88,17 +88,9 @@ void LadspaControlDialog::updateEffectView( LadspaControls * _ctl )
int col = 0;
BufferDataType last_port = BufferDataType::None;
QGroupBox * grouper;
if( _ctl->m_processors > 1 )
{
grouper = new QGroupBox( tr( "Channel " ) +
QString::number( proc + 1 ),
this );
}
else
{
grouper = new QGroupBox( this );
}
auto grouper = _ctl->m_processors > 1
? new QGroupBox(tr("Channel ") + QString::number(proc + 1), this)
: new QGroupBox(this);
auto gl = new QGridLayout(grouper);
grouper->setLayout( gl );

View File

@@ -166,12 +166,10 @@ void Lb302FilterIIR2::recalc()
void Lb302FilterIIR2::envRecalc()
{
float k, w;
Lb302Filter::envRecalc();
w = vcf_e0 + vcf_c0; // e0 is adjusted for Hz and doesn't need ENVINC
k = exp(-w/vcf_rescoeff); // Does this mean c0 is inheritantly?
float w = vcf_e0 + vcf_c0; // e0 is adjusted for Hz and doesn't need ENVINC
float k = exp(-w/vcf_rescoeff); // Does this mean c0 is inheritantly?
vcf_a = 2.0*cos(2.0*w) * k;
vcf_b = -k*k;
@@ -219,18 +217,15 @@ void Lb302Filter3Pole::recalc()
// TODO: Try using k instead of vcf_reso
void Lb302Filter3Pole::envRecalc()
{
float w,k;
float kfco;
Lb302Filter::envRecalc();
// e0 is adjusted for Hz and doesn't need ENVINC
w = vcf_e0 + vcf_c0;
k = (fs->cutoff > 0.975)?0.975:fs->cutoff;
float w = vcf_e0 + vcf_c0;
float k = (fs->cutoff > 0.975)?0.975:fs->cutoff;
// sampleRateCutoff should not be changed to anything dynamic that is outside the
// scope of LB302 (like e.g. the audio engine's sample rate) as this changes the filter's cutoff
// behavior without any modification to its controls.
kfco = 50.f + (k)*((2300.f-1600.f*(fs->envmod))+(w) *
float kfco = 50.f + (k)*((2300.f-1600.f*(fs->envmod))+(w) *
(700.f+1500.f*(k)+(1500.f+(k)*(sampleRateCutoff/2.f-6000.f)) *
(fs->envmod)) );
//+iacc*(.3+.7*kfco*kenvmod)*kaccent*kaccurve*2000
@@ -461,8 +456,6 @@ inline float GET_INC(float freq) {
int Lb302Synth::process(sampleFrame *outbuf, const int size)
{
const float sampleRatio = 44100.f / Engine::audioEngine()->processingSampleRate();
float w;
float samp;
// Hold on to the current VCF, and use it throughout this period
Lb302Filter *filter = vcf.loadAcquire();
@@ -566,7 +559,7 @@ int Lb302Synth::process(sampleFrame *outbuf, const int size)
vco_k = -0.5 ;
}
else if (vco_k>0.5) {
w = 2.0*(vco_k-0.5)-1.0;
float w = 2.0 * (vco_k - 0.5) - 1.0;
vco_k = 0.5 - sqrtf(1.0-(w*w));
}
vco_k *= 2.0; // MOOG wave gets filtered away
@@ -610,7 +603,7 @@ int Lb302Synth::process(sampleFrame *outbuf, const int size)
#ifdef LB_FILTERED
//samp = vcf->process(vco_k)*2.0*vca_a;
//samp = vcf->process(vco_k)*2.0;
samp = filter->process(vco_k) * vca_a;
float samp = filter->process(vco_k) * vca_a;
//printf("%f %d\n", vco_c, sample_cnt);

View File

@@ -76,21 +76,18 @@ bool MidiExport::tryExport(const TrackContainer::TrackList &tracks,
f.open(QIODevice::WriteOnly);
QDataStream midiout(&f);
InstrumentTrack* instTrack;
PatternTrack* patternTrack;
QDomElement element;
int nTracks = 0;
auto buffer = std::array<uint8_t, BUFFER_SIZE>{};
uint32_t size;
for (const Track* track : tracks) if (track->type() == Track::Type::Instrument) nTracks++;
for (const Track* track : patternStoreTracks) if (track->type() == Track::Type::Instrument) nTracks++;
// midi header
MidiFile::MIDIHeader header(nTracks);
size = header.writeToBuffer(buffer.data());
uint32_t size = header.writeToBuffer(buffer.data());
midiout.writeRawData((char *)buffer.data(), size);
std::vector<std::vector<std::pair<int,int>>> plists;
@@ -108,7 +105,7 @@ bool MidiExport::tryExport(const TrackContainer::TrackList &tracks,
//mtrack.addProgramChange(0, 0);
mtrack.addTempo(tempo, 0);
instTrack = dynamic_cast<InstrumentTrack *>(track);
auto instTrack = dynamic_cast<InstrumentTrack *>(track);
element = instTrack->saveState(dataFile, dataFile.content());
int base_pitch = 0;
@@ -146,7 +143,7 @@ bool MidiExport::tryExport(const TrackContainer::TrackList &tracks,
if (track->type() == Track::Type::Pattern)
{
patternTrack = dynamic_cast<PatternTrack*>(track);
auto patternTrack = dynamic_cast<PatternTrack*>(track);
element = patternTrack->saveState(dataFile, dataFile.content());
std::vector<std::pair<int,int>> plist;
@@ -184,7 +181,7 @@ bool MidiExport::tryExport(const TrackContainer::TrackList &tracks,
//mtrack.addProgramChange(0, 0);
mtrack.addTempo(tempo, 0);
instTrack = dynamic_cast<InstrumentTrack *>(track);
auto instTrack = dynamic_cast<InstrumentTrack *>(track);
element = instTrack->saveState(dataFile, dataFile.content());
int base_pitch = 0;

View File

@@ -25,6 +25,7 @@
#include <set>
#include <algorithm>
#include <assert.h>
#include <array>
using std::string;
using std::vector;
@@ -47,8 +48,8 @@ int writeVarLength(uint32_t val, uint8_t *buffer)
byte in question is the last in the stream
*/
int size = 0;
uint8_t result, little_endian[4];
result = val & 0x7F;
uint8_t little_endian[4];
uint8_t result = val & 0x7F;
little_endian[size++] = result;
val = val >> 7;
while (val > 0)
@@ -129,31 +130,37 @@ struct Event
inline int writeToBuffer(uint8_t *buffer) const
{
uint8_t code, fourbytes[4];
int size=0;
switch (type)
int size = 0;
switch (type)
{
case NOTE_ON:
code = 0x9 << 4 | channel;
{
uint8_t code = 0x9 << 4 | channel;
size += writeVarLength(time, buffer+size);
buffer[size++] = code;
buffer[size++] = pitch;
buffer[size++] = volume;
break;
}
case NOTE_OFF:
code = 0x8 << 4 | channel;
{
uint8_t code = 0x8 << 4 | channel;
size += writeVarLength(time, buffer+size);
buffer[size++] = code;
buffer[size++] = pitch;
buffer[size++] = volume;
break;
}
case TEMPO:
code = 0xFF;
{
uint8_t code = 0xFF;
size += writeVarLength(time, buffer+size);
buffer[size++] = code;
buffer[size++] = 0x51;
buffer[size++] = 0x03;
writeBigEndian4(int(60000000.0 / tempo), fourbytes);
std::array<uint8_t, 4> fourbytes;
writeBigEndian4(int(60000000.0 / tempo), fourbytes.data());
//printf("tempo of %x translates to ", tempo);
/*
@@ -164,23 +171,27 @@ struct Event
buffer[size++] = fourbytes[2];
buffer[size++] = fourbytes[3];
break;
}
case PROG_CHANGE:
code = 0xC << 4 | channel;
{
uint8_t code = 0xC << 4 | channel;
size += writeVarLength(time, buffer+size);
buffer[size++] = code;
buffer[size++] = programNumber;
break;
}
case TRACK_NAME:
{
size += writeVarLength(time, buffer+size);
buffer[size++] = 0xFF;
buffer[size++] = 0x03;
size += writeVarLength(trackName.size(), buffer+size);
trackName.copy((char *)(&buffer[size]), trackName.size());
size += trackName.size();
// buffer[size++] = '\0';
// buffer[size++] = '\0';
break;
// buffer[size++] = '\0';
// buffer[size++] = '\0';
}
}
return size;
} // writeEventsToBuffer
@@ -275,7 +286,7 @@ class MIDITrack
vector<Event> _events = events;
std::sort(_events.begin(), _events.end());
vector<Event>::const_iterator it;
uint32_t time_last = 0, tmp;
uint32_t time_last = 0;
for (it = _events.begin(); it!=_events.end(); ++it)
{
Event e = *it;
@@ -283,7 +294,7 @@ class MIDITrack
printf("error: e.time=%d time_last=%d\n", e.time, time_last);
assert(false);
}
tmp = e.time;
uint32_t tmp = e.time;
e.time -= time_last;
time_last = tmp;
start += e.writeToBuffer(buffer+start);

View File

@@ -61,10 +61,10 @@ private:
inline int readInt( int _bytes )
{
int c, value = 0;
int value = 0;
do
{
c = readByte();
int c = readByte();
if( c == -1 )
{
return( -1 );

View File

@@ -244,14 +244,12 @@ void OpulenzInstrument::reloadEmulator() {
// This shall only be called from code protected by the holy Mutex!
void OpulenzInstrument::setVoiceVelocity(int voice, int vel) {
int vel_adjusted;
int vel_adjusted = !fm_mdl.value()
? 63 - (op1_lvl_mdl.value() * vel / 127.0)
: 63 - op1_lvl_mdl.value();
// Velocity calculation, some kind of approximation
// Only calculate for operator 1 if in adding mode, don't want to change timbre
if( fm_mdl.value() == false ) {
vel_adjusted = 63 - ( op1_lvl_mdl.value() * vel/127.0) ;
} else {
vel_adjusted = 63 - op1_lvl_mdl.value();
}
theEmulator->write(0x40+adlib_opadd[voice],
( (int)op1_scale_mdl.value() & 0x03 << 6) +
( vel_adjusted & 0x3f ) );
@@ -297,66 +295,60 @@ int OpulenzInstrument::pushVoice(int v) {
bool OpulenzInstrument::handleMidiEvent( const MidiEvent& event, const TimePos& time, f_cnt_t offset )
{
emulatorMutex.lock();
int key, vel, voice, tmp_pb;
switch(event.type()) {
case MidiNoteOn:
key = event.key();
vel = event.velocity();
voice = popVoice();
if( voice != OPL2_NO_VOICE ) {
int key = event.key();
int vel = event.velocity();
switch (event.type())
{
case MidiNoteOn:
if (int voice = popVoice(); voice != OPL2_NO_VOICE)
{
// Turn voice on, NB! the frequencies are straight by voice number,
// not by the adlib_opadd table!
theEmulator->write(0xA0+voice, fnums[key] & 0xff);
theEmulator->write(0xB0+voice, 32 + ((fnums[key] & 0x1f00) >> 8) );
theEmulator->write(0xA0 + voice, fnums[key] & 0xff);
theEmulator->write(0xB0 + voice, 32 + ((fnums[key] & 0x1f00) >> 8));
setVoiceVelocity(voice, vel);
voiceNote[voice] = key;
velocities[key] = vel;
}
break;
case MidiNoteOff:
key = event.key();
for(voice=0; voice<OPL2_VOICES; ++voice) {
if( voiceNote[voice] == key ) {
theEmulator->write(0xA0+voice, fnums[key] & 0xff);
theEmulator->write(0xB0+voice, (fnums[key] & 0x1f00) >> 8 );
voiceNote[voice] |= OPL2_VOICE_FREE;
break;
case MidiNoteOff:
for (int voice = 0; voice < OPL2_VOICES; ++voice)
{
if (voiceNote[voice] == key)
{
theEmulator->write(0xA0 + voice, fnums[key] & 0xff);
theEmulator->write(0xB0 + voice, (fnums[key] & 0x1f00) >> 8);
voiceNote[voice] |= OPL2_VOICE_FREE;
pushVoice(voice);
}
}
velocities[key] = 0;
break;
case MidiKeyPressure:
key = event.key();
vel = event.velocity();
if( velocities[key] != 0) {
velocities[key] = vel;
}
for(voice=0; voice<OPL2_VOICES; ++voice) {
if(voiceNote[voice] == key) {
setVoiceVelocity(voice, vel);
}
}
break;
case MidiPitchBend:
velocities[key] = 0;
break;
case MidiKeyPressure:
if (velocities[key] != 0) { velocities[key] = vel; }
for (int voice = 0; voice < OPL2_VOICES; ++voice)
{
if (voiceNote[voice] == key) { setVoiceVelocity(voice, vel); }
}
break;
case MidiPitchBend:
// Update fnumber table
// Neutral = 8192, full downbend = 0, full upbend = 16383
tmp_pb = ( event.pitchBend()-8192 ) * pitchBendRange / 8192;
if( tmp_pb != pitchbend ) {
if (int tmp_pb = (event.pitchBend() - 8192) * pitchBendRange / 8192; tmp_pb != pitchbend)
{
pitchbend = tmp_pb;
tuneEqual(69, 440.0);
}
// Update pitch of all voices (also released ones)
for( int v=0; v<OPL2_VOICES; ++v ) {
int vn = (voiceNote[v] & ~OPL2_VOICE_FREE); // remove the flag bit
for (int v = 0; v < OPL2_VOICES; ++v)
{
int vn = (voiceNote[v] & ~OPL2_VOICE_FREE); // remove the flag bit
int playing = (voiceNote[v] & OPL2_VOICE_FREE) == 0; // just the flag bit
theEmulator->write(0xA0+v, fnums[vn] & 0xff);
theEmulator->write(0xB0+v, (playing ? 32 : 0) + ((fnums[vn] & 0x1f00) >> 8) );
}
break;
theEmulator->write(0xA0 + v, fnums[vn] & 0xff);
theEmulator->write(0xB0 + v, (playing ? 32 : 0) + ((fnums[vn] & 0x1f00) >> 8));
}
break;
case MidiControlChange:
switch (event.controllerNumber()) {
case MidiControllerRegisteredParameterNumberLSB:
@@ -382,7 +374,7 @@ bool OpulenzInstrument::handleMidiEvent( const MidiEvent& event, const TimePos&
printf("Midi event type %d\n",event.type());
#endif
break;
}
}
emulatorMutex.unlock();
return true;
}
@@ -504,9 +496,8 @@ void OpulenzInstrument::loadPatch(const unsigned char inst[14]) {
}
void OpulenzInstrument::tuneEqual(int center, float Hz) {
float tmp;
for(int n=0; n<128; ++n) {
tmp = Hz*pow( 2.0, ( n - center ) * ( 1.0 / 12.0 ) + pitchbend * ( 1.0 / 1200.0 ) );
float tmp = Hz * pow(2.0, (n - center) * (1.0 / 12.0) + pitchbend * (1.0 / 1200.0));
fnums[n] = Hz2fnum( tmp );
}
}

View File

@@ -298,17 +298,16 @@ PatmanInstrument::LoadError PatmanInstrument::loadPatch(
SKIP_BYTES( 2 + 2 + 36 );
f_cnt_t frames;
sample_t * wave_samples;
std::unique_ptr<sample_t[]> wave_samples;
if( modes & MODES_16BIT )
{
frames = data_length >> 1;
wave_samples = new sample_t[frames];
wave_samples = std::make_unique<sample_t[]>(frames);
for( f_cnt_t frame = 0; frame < frames; ++frame )
{
short sample;
if ( fread( &sample, 2, 1, fd ) != 1 )
{
delete[] wave_samples;
fclose( fd );
return( LoadError::IO );
}
@@ -326,13 +325,12 @@ PatmanInstrument::LoadError PatmanInstrument::loadPatch(
else
{
frames = data_length;
wave_samples = new sample_t[frames];
wave_samples = std::make_unique<sample_t[]>(frames);
for( f_cnt_t frame = 0; frame < frames; ++frame )
{
char sample;
if ( fread( &sample, 1, 1, fd ) != 1 )
{
delete[] wave_samples;
fclose( fd );
return( LoadError::IO );
}
@@ -366,7 +364,6 @@ PatmanInstrument::LoadError PatmanInstrument::loadPatch(
m_patchSamples.push_back(psample);
delete[] wave_samples;
delete[] data;
}
fclose( fd );

View File

@@ -241,24 +241,21 @@ f_cnt_t SidInstrument::desiredReleaseFrames() const
static int sid_fillbuffer(unsigned char* sidreg, reSID::SID *sid, int tdelta, short *ptr, int samples)
{
int tdelta2;
int result;
int total = 0;
int c;
// customly added
int residdelay = 0;
int badline = rand() % NUMSIDREGS;
for (c = 0; c < NUMSIDREGS; c++)
for (int c = 0; c < NUMSIDREGS; c++)
{
unsigned char o = sidorder[c];
// Extra delay for loading the waveform (and mt_chngate,x)
if ((o == 4) || (o == 11) || (o == 18))
{
tdelta2 = SIDWAVEDELAY;
result = sid->clock(tdelta2, ptr, samples);
int tdelta2 = SIDWAVEDELAY;
int result = sid->clock(tdelta2, ptr, samples);
total += result;
ptr += result;
samples -= result;
@@ -268,8 +265,8 @@ static int sid_fillbuffer(unsigned char* sidreg, reSID::SID *sid, int tdelta, sh
// Possible random badline delay once per writing
if ((badline == c) && (residdelay))
{
tdelta2 = residdelay;
result = sid->clock(tdelta2, ptr, samples);
int tdelta2 = residdelay;
int result = sid->clock(tdelta2, ptr, samples);
total += result;
ptr += result;
samples -= result;
@@ -278,14 +275,14 @@ static int sid_fillbuffer(unsigned char* sidreg, reSID::SID *sid, int tdelta, sh
sid->write(o, sidreg[o]);
tdelta2 = SIDWRITEDELAY;
result = sid->clock(tdelta2, ptr, samples);
int tdelta2 = SIDWRITEDELAY;
int result = sid->clock(tdelta2, ptr, samples);
total += result;
ptr += result;
samples -= result;
tdelta -= SIDWRITEDELAY;
}
result = sid->clock(tdelta, ptr, samples);
int result = sid->clock(tdelta, ptr, samples);
total += result;
return total;

View File

@@ -198,7 +198,6 @@ void SlicerT::findSlices()
int lastPoint = -minDist - 1; // to always store 0 first
float spectralFlux = 0;
float prevFlux = 1E-10; // small value, no divison by zero
float real, imag, magnitude, diff;
for (int i = 0; i < singleChannel.size() - windowSize; i += windowSize)
{
@@ -209,12 +208,12 @@ void SlicerT::findSlices()
// calculate spectral flux in regard to last window
for (int j = 0; j < windowSize / 2; j++) // only use niquistic frequencies
{
real = fftOut[j][0];
imag = fftOut[j][1];
magnitude = std::sqrt(real * real + imag * imag);
float real = fftOut[j][0];
float imag = fftOut[j][1];
float magnitude = std::sqrt(real * real + imag * imag);
// using L2-norm (euclidean distance)
diff = std::sqrt(std::pow(magnitude - prevMags[j], 2));
float diff = std::sqrt(std::pow(magnitude - prevMags[j], 2));
spectralFlux += diff;
prevMags[j] = magnitude;

View File

@@ -209,7 +209,6 @@ void SaProcessor::analyze(LocklessRingBuffer<sampleFrame> &ring_buffer)
memset(pixel, 0, waterfallWidth() * sizeof (QRgb));
// add newest result on top
int target; // pixel being constructed
float accL = 0; // accumulators for merging multiple bins
float accR = 0;
for (unsigned int i = 0; i < binCount(); i++)
@@ -233,7 +232,8 @@ void SaProcessor::analyze(LocklessRingBuffer<sampleFrame> &ring_buffer)
if (band_end - band_start > 1.0)
{
// band spans multiple pixels: draw all pixels it covers
for (target = std::max((int)band_start, 0); target < band_end && target < waterfallWidth(); target++)
for (int target = std::max(static_cast<int>(band_start), 0);
target < band_end && target < waterfallWidth(); target++)
{
pixel[target] = makePixel(m_normSpectrumL[i], m_normSpectrumR[i]);
}
@@ -245,7 +245,7 @@ void SaProcessor::analyze(LocklessRingBuffer<sampleFrame> &ring_buffer)
else
{
// sub-pixel drawing; add contribution of current band
target = (int)band_start;
int target = static_cast<int>(band_start);
if ((int)band_start == (int)band_end)
{
// band ends within current target pixel, accumulate
@@ -270,7 +270,8 @@ void SaProcessor::analyze(LocklessRingBuffer<sampleFrame> &ring_buffer)
else
{
// Linear: always draws one or more pixels per band
for (target = std::max((int)band_start, 0); target < band_end && target < waterfallWidth(); target++)
for (int target = std::max(static_cast<int>(band_start), 0);
target < band_end && target < waterfallWidth(); target++)
{
pixel[target] = makePixel(m_normSpectrumL[i], m_normSpectrumR[i]);
}
@@ -361,30 +362,20 @@ void SaProcessor::setWaterfallActive(bool active)
// Reallocate data buffers according to newly set block size.
void SaProcessor::reallocateBuffers()
{
unsigned int new_size_index = m_controls->m_blockSizeModel.value();
unsigned int new_in_size, new_fft_size;
unsigned int new_bins;
m_zeroPadFactor = m_controls->m_zeroPaddingModel.value();
// get new block sizes and bin count based on selected index
if (new_size_index < FFT_BLOCK_SIZES.size())
{
new_in_size = FFT_BLOCK_SIZES[new_size_index];
}
else
{
new_in_size = FFT_BLOCK_SIZES.back();
}
m_zeroPadFactor = m_controls->m_zeroPaddingModel.value();
if (new_size_index + m_zeroPadFactor < FFT_BLOCK_SIZES.size())
{
new_fft_size = FFT_BLOCK_SIZES[new_size_index + m_zeroPadFactor];
}
else
{
new_fft_size = FFT_BLOCK_SIZES.back();
}
const unsigned int new_size_index = m_controls->m_blockSizeModel.value();
new_bins = new_fft_size / 2 +1;
const unsigned int new_in_size = new_size_index < FFT_BLOCK_SIZES.size()
? FFT_BLOCK_SIZES[new_size_index]
: FFT_BLOCK_SIZES.back();
const unsigned int new_fft_size = (new_size_index + m_zeroPadFactor < FFT_BLOCK_SIZES.size())
? FFT_BLOCK_SIZES[new_size_index + m_zeroPadFactor]
: FFT_BLOCK_SIZES.back();
const unsigned int new_bins = new_fft_size / 2 + 1;
// Use m_reallocating to tell analyze() to avoid asking for the lock. This
// is needed because under heavy load the FFT thread requests data lock so

View File

@@ -647,14 +647,13 @@ float SaSpectrumView::ampToYPixel(float amplitude, unsigned int height)
std::vector<std::pair<int, std::string>> SaSpectrumView::makeLogFreqTics(int low, int high)
{
std::vector<std::pair<int, std::string>> result;
int i, j;
auto a = std::array{10, 20, 50}; // sparse series multipliers
auto b = std::array{14, 30, 70}; // additional (denser) series
// generate main steps (powers of 10); use the series to specify smaller steps
for (i = 1; i <= high; i *= 10)
for (int i = 1; i <= high; i *= 10)
{
for (j = 0; j < 3; j++)
for (int j = 0; j < 3; j++)
{
// insert a label from sparse series if it falls within bounds
if (i * a[j] >= low && i * a[j] <= high)
@@ -691,7 +690,7 @@ std::vector<std::pair<int, std::string>> SaSpectrumView::makeLogFreqTics(int low
std::vector<std::pair<int, std::string>> SaSpectrumView::makeLinearFreqTics(int low, int high)
{
std::vector<std::pair<int, std::string>> result;
int i, increment;
int increment;
// select a suitable increment based on zoom level
if (high - low < 500) {increment = 50;}
@@ -700,7 +699,7 @@ std::vector<std::pair<int, std::string>> SaSpectrumView::makeLinearFreqTics(int
else {increment = 2000;}
// generate steps based on increment, starting at 0
for (i = 0; i <= high; i += increment)
for (int i = 0; i <= high; i += increment)
{
if (i >= low)
{
@@ -724,7 +723,6 @@ std::vector<std::pair<int, std::string>> SaSpectrumView::makeLinearFreqTics(int
std::vector<std::pair<float, std::string>> SaSpectrumView::makeLogAmpTics(int low, int high)
{
std::vector<std::pair<float, std::string>> result;
float i;
double increment;
// Base zoom level on selected range and how close is the current height
@@ -744,7 +742,7 @@ std::vector<std::pair<float, std::string>> SaSpectrumView::makeLogAmpTics(int lo
// Generate n dB increments, start checking at -90 dB. Limits are tweaked
// just a little bit to make sure float comparisons do not miss edges.
for (i = 0.000000001; 10 * log10(i) <= (high + 0.001); i *= increment)
for (float i = 0.000000001; 10 * log10(i) <= (high + 0.001); i *= increment)
{
if (10 * log10(i) >= (low - 0.001))
{
@@ -764,8 +762,6 @@ std::vector<std::pair<float, std::string>> SaSpectrumView::makeLogAmpTics(int lo
std::vector<std::pair<float, std::string>> SaSpectrumView::makeLinearAmpTics(int low, int high)
{
std::vector<std::pair<float, std::string>> result;
double i, nearest;
// make about 5 labels when window is small, 10 if it is big
float split = (float)height() / sizeHint().height() >= 1.5 ? 10.0 : 5.0;
@@ -777,28 +773,28 @@ std::vector<std::pair<float, std::string>> SaSpectrumView::makeLinearAmpTics(int
// multiples, just generate a few evenly spaced increments across the range,
// paying attention only to the decimal places to keep labels short.
// Limits are shifted a bit so that float comparisons do not miss edges.
for (i = 0; i <= (lin_high + 0.0001); i += (lin_high - lin_low) / split)
for (double i = 0; i <= (lin_high + 0.0001); i += (lin_high - lin_low) / split)
{
if (i >= (lin_low - 0.0001))
{
if (i >= 9.99 && i < 99.9)
{
nearest = std::round(i);
double nearest = std::round(i);
result.emplace_back(nearest, std::to_string(nearest).substr(0, 2));
}
else if (i >= 0.099)
{ // also covers numbers above 100
nearest = std::round(i * 10) / 10;
double nearest = std::round(i * 10) / 10;
result.emplace_back(nearest, std::to_string(nearest).substr(0, 3));
}
else if (i >= 0.0099)
{
nearest = std::round(i * 1000) / 1000;
double nearest = std::round(i * 1000) / 1000;
result.emplace_back(nearest, std::to_string(nearest).substr(0, 4));
}
else if (i >= 0.00099)
{
nearest = std::round(i * 10000) / 10000;
double nearest = std::round(i * 10000) / 10000;
result.emplace_back(nearest, std::to_string(nearest).substr(1, 4));
}
else if (i > -0.01 && i < 0.01)

View File

@@ -213,7 +213,6 @@ float SaWaterfallView::yPixelToTime(float position, int height)
std::vector<std::pair<float, std::string>> SaWaterfallView::makeTimeTics()
{
std::vector<std::pair<float, std::string>> result;
float i;
// get time value of the last line
float limit = yPixelToTime(m_displayBottom, m_displayHeight);
@@ -223,7 +222,7 @@ std::vector<std::pair<float, std::string>> SaWaterfallView::makeTimeTics()
if (increment < 0.1) {increment = 0.1;}
// NOTE: labels positions are rounded to match the (rounded) label value
for (i = 0; i <= limit; i += increment)
for (float i = 0; i <= limit; i += increment)
{
if (i > 99)
{

View File

@@ -90,10 +90,6 @@ bool StereoEnhancerEffect::processAudioBuffer( sampleFrame * _buf,
// audio with this effect
double out_sum = 0.0;
float width;
int frameIndex = 0;
if( !isEnabled() || !isRunning() )
{
return( false );
@@ -110,10 +106,10 @@ bool StereoEnhancerEffect::processAudioBuffer( sampleFrame * _buf,
m_delayBuffer[m_currFrame][1] = _buf[f][1];
// Get the width knob value from the Stereo Enhancer effect
width = m_seFX.wideCoeff();
float width = m_seFX.wideCoeff();
// Calculate the correct sample frame for processing
frameIndex = m_currFrame - width;
int frameIndex = m_currFrame - width;
if( frameIndex < 0 )
{
@@ -149,8 +145,7 @@ bool StereoEnhancerEffect::processAudioBuffer( sampleFrame * _buf,
void StereoEnhancerEffect::clearMyBuffer()
{
int i;
for (i = 0; i < DEFAULT_BUFFER_SIZE; i++)
for (int i = 0; i < DEFAULT_BUFFER_SIZE; i++)
{
m_delayBuffer[i][0] = 0.0f;
m_delayBuffer[i][1] = 0.0f;

View File

@@ -138,8 +138,6 @@ void VectorView::paintEvent(QPaintEvent *event)
std::size_t frameCount = inBuffer.size();
// Draw new points on top
float left, right;
int x, y;
const bool logScale = m_controls->m_logarithmicModel.value();
const unsigned short activeSize = hq ? m_displaySize : m_displaySize / 2;
@@ -164,6 +162,8 @@ void VectorView::paintEvent(QPaintEvent *event)
// The longer the line is, the dimmer, simulating real electron trace on luminescent screen.
for (std::size_t frame = 0; frame < frameCount; frame++)
{
float left = 0.0f;
float right = 0.0f;
float inLeft = inBuffer[frame][0] * m_zoom;
float inRight = inBuffer[frame][1] * m_zoom;
// Scale left and right channel from (-1.0, 1.0) to display range
@@ -185,8 +185,8 @@ void VectorView::paintEvent(QPaintEvent *event)
}
// Rotate display coordinates 45 degrees, flip Y axis and make sure the result stays within bounds
x = saturate(right - left + activeSize / 2.f);
y = saturate(activeSize - (right + left + activeSize / 2.f));
int x = saturate(right - left + activeSize / 2.f);
int y = saturate(activeSize - (right + left + activeSize / 2.f));
// Estimate number of points needed to fill space between the old and new pixel. Cap at 100.
unsigned char points = std::min((int)sqrt((m_oldX - x) * (m_oldX - x) + (m_oldY - y) * (m_oldY - y)), 100);
@@ -222,6 +222,8 @@ void VectorView::paintEvent(QPaintEvent *event)
// one full-color pixel per sample.
for (std::size_t frame = 0; frame < frameCount; frame++)
{
float left = 0.0f;
float right = 0.0f;
float inLeft = inBuffer[frame][0] * m_zoom;
float inRight = inBuffer[frame][1] * m_zoom;
if (logScale) {
@@ -235,8 +237,8 @@ void VectorView::paintEvent(QPaintEvent *event)
left = inLeft * (activeSize - 1) / 4;
right = inRight * (activeSize - 1) / 4;
}
x = saturate(right - left + activeSize / 2.f);
y = saturate(activeSize - (right + left + activeSize / 2.f));
int x = saturate(right - left + activeSize / 2.f);
int y = saturate(activeSize - (right + left + activeSize / 2.f));
((QRgb*)m_displayBuffer.data())[x + y * activeSize] = m_controls->m_colorFG.rgb();
}
}

View File

@@ -1053,7 +1053,6 @@ void ManageVestigeInstrumentView::syncPlugin( void )
auto paramStr = std::array<char, 35>{};
QStringList s_dumpValues;
const QMap<QString, QString> & dump = m_vi->m_plugin->parameterDump();
float f_value;
for( int i = 0; i < m_vi->paramCount; i++ )
{
@@ -1063,7 +1062,7 @@ void ManageVestigeInstrumentView::syncPlugin( void )
{
sprintf(paramStr.data(), "param%d", i);
s_dumpValues = dump[paramStr.data()].split(":");
f_value = LocaleHelper::toFloat(s_dumpValues.at(2));
float f_value = LocaleHelper::toFloat(s_dumpValues.at(2));
m_vi->knobFModel[ i ]->setAutomatedValue( f_value );
m_vi->knobFModel[ i ]->setInitValue( f_value );
}

View File

@@ -75,12 +75,10 @@ std::unique_ptr<VibratingString::DelayLine> VibratingString::initDelayLine(int l
if (len > 0)
{
dl->data = std::make_unique<sample_t[]>(len);
float r;
float offset = 0.0f;
for (int i = 0; i < dl->length; ++i)
{
r = static_cast<float>(std::rand()) / RAND_MAX;
offset = (m_randomize / 2.0f - m_randomize) * r;
float r = static_cast<float>(std::rand()) / RAND_MAX;
float offset = (m_randomize / 2.0f - m_randomize) * r;
dl->data[i] = offset;
}
}

View File

@@ -49,8 +49,6 @@ public:
sample_t nextSample()
{
sample_t ym0;
sample_t ypM;
for (int i = 0; i < m_oversample; ++i)
{
// Output at pickup position
@@ -58,9 +56,9 @@ public:
m_outsamp[i] += toBridgeAccess(m_toBridge.get(), m_pickupLoc);
// Sample traveling into "bridge"
ym0 = toBridgeAccess(m_toBridge.get(), 1);
sample_t ym0 = toBridgeAccess(m_toBridge.get(), 1);
// Sample to "nut"
ypM = fromBridgeAccess(m_fromBridge.get(), m_fromBridge->length - 2);
sample_t ypM = fromBridgeAccess(m_fromBridge.get(), m_fromBridge->length - 2);
// String state update
@@ -105,21 +103,18 @@ private:
*/
void setDelayLine(DelayLine* dl, int pick, const float* values, int len, float scale, bool state)
{
float r;
float offset;
if (!state)
{
for (int i = 0; i < pick; ++i)
{
r = static_cast<float>(std::rand()) / RAND_MAX;
offset = (m_randomize / 2.0f - m_randomize) * r;
float r = static_cast<float>(std::rand()) / RAND_MAX;
float offset = (m_randomize / 2.0f - m_randomize) * r;
dl->data[i] = scale * values[dl->length - i - 1] + offset;
}
for (int i = pick; i < dl->length; ++i)
{
r = static_cast<float>(std::rand()) / RAND_MAX;
offset = (m_randomize / 2.0f - m_randomize) * r;
float r = static_cast<float>(std::rand()) / RAND_MAX;
float offset = (m_randomize / 2.0f - m_randomize) * r;
dl->data[i] = scale * values[i - pick] + offset;
}
}
@@ -129,8 +124,8 @@ private:
{
for (int i = pick; i < dl->length; ++i)
{
r = static_cast<float>(std::rand()) / RAND_MAX;
offset = (m_randomize / 2.0f - m_randomize) * r;
float r = static_cast<float>(std::rand()) / RAND_MAX;
float offset = (m_randomize / 2.0f - m_randomize) * r;
dl->data[i] = scale * values[i - pick] + offset;
}
}
@@ -138,8 +133,8 @@ private:
{
for (int i = 0; i < len; ++i)
{
r = static_cast<float>(std::rand()) / RAND_MAX;
offset = (m_randomize / 2.0f - m_randomize) * r;
float r = static_cast<float>(std::rand()) / RAND_MAX;
float offset = (m_randomize / 2.0f - m_randomize) * r;
dl->data[i+pick] = scale * values[i] + offset;
}
}

View File

@@ -452,7 +452,6 @@ void ManageVSTEffectView::syncPlugin()
auto paramStr = std::array<char, 35>{};
QStringList s_dumpValues;
const QMap<QString, QString> & dump = m_effect->m_plugin->parameterDump();
float f_value;
for( int i = 0; i < m_vi2->paramCount; i++ )
{
@@ -463,7 +462,7 @@ void ManageVSTEffectView::syncPlugin()
{
sprintf(paramStr.data(), "param%d", i);
s_dumpValues = dump[paramStr.data()].split(":");
f_value = LocaleHelper::toFloat(s_dumpValues.at(2));
float f_value = LocaleHelper::toFloat(s_dumpValues.at(2));
m_vi2->knobFModel[ i ]->setAutomatedValue( f_value );
m_vi2->knobFModel[ i ]->setInitValue( f_value );
}

View File

@@ -322,14 +322,8 @@ struct RandomVectorSeedFunction : public exprtk::ifunction<float>
inline float operator()(const float& index,const float& seed) override
{
int irseed;
if (seed < 0 || std::isnan(seed) || std::isinf(seed))
{
irseed=0;
}
else
irseed=(int)seed;
return randv(index,irseed);
const int irseed = seed < 0 || std::isnan(seed) || std::isinf(seed) ? 0 : static_cast<int>(seed);
return randv(index, irseed);
}
static const int data_size=sizeof(random_data)/sizeof(int);

View File

@@ -256,13 +256,12 @@ void Xpressive::smooth(float smoothness,const graphModel * in,graphModel * out)
auto const guassian = new float[guass_size];
float sum = 0.0f;
float temp = 0.0f;
int i;
for (i = 0; i < guass_size; i++ )
for (int i = 0; i < guass_size; i++)
{
temp = (i - guass_center) / delta;
sum += guassian[i] = a * powf(F_E, -0.5f * temp * temp);
}
for (i = 0; i < guass_size; i++ )
for (int i = 0; i < guass_size; i++)
{
guassian[i] = guassian[i] / sum;
}
@@ -336,13 +335,6 @@ XpressiveView::XpressiveView(Instrument * _instrument, QWidget * _parent) :
pal.setBrush(backgroundRole(), PLUGIN_NAME::getIconPixmap("wavegraph"));
m_graph->setPalette(pal);
PixmapButton * m_w1Btn;
PixmapButton * m_w2Btn;
PixmapButton * m_w3Btn;
PixmapButton * m_o1Btn;
PixmapButton * m_o2Btn;
PixmapButton * m_helpBtn;
m_w1Btn = new PixmapButton(this, nullptr);
m_w1Btn->move(3, ROW_BTN);
m_w1Btn->setActiveGraphic(PLUGIN_NAME::getIconPixmap("w1_active"));

View File

@@ -190,6 +190,7 @@ private:
PixmapButton *m_w3Btn;
PixmapButton *m_o1Btn;
PixmapButton *m_o2Btn;
PixmapButton *m_helpBtn;
PixmapButton *m_sinWaveBtn;
PixmapButton *m_triangleWaveBtn;
PixmapButton *m_sqrWaveBtn;

View File

@@ -613,10 +613,9 @@ ValueBuffer * AutomatableModel::valueBuffer()
float val = m_value; // make sure our m_value doesn't change midway
ValueBuffer * vb;
if (m_controllerConnection && m_useControllerValue && m_controllerConnection->getController()->isSampleExact())
{
vb = m_controllerConnection->valueBuffer();
auto vb = m_controllerConnection->valueBuffer();
if( vb )
{
float * values = vb->values();
@@ -656,7 +655,7 @@ ValueBuffer * AutomatableModel::valueBuffer()
if (lm && lm->controllerConnection() && lm->useControllerValue() &&
lm->controllerConnection()->getController()->isSampleExact())
{
vb = lm->valueBuffer();
auto vb = lm->valueBuffer();
float * values = vb->values();
float * nvalues = m_valueBuffer.values();
for (int i = 0; i < vb->length(); i++)

View File

@@ -1222,11 +1222,9 @@ void AutomationClip::generateTangents(timeMap::iterator it, int numToGenerate)
// TODO: This behavior means that a very small difference between the inValue and outValue can
// result in a big change in the curve. In the future, allowing the user to manually adjust
// the tangents would be better.
float inTangent;
float outTangent;
if (OFFSET(it) == 0)
{
inTangent = (INVAL(it + 1) - OUTVAL(it - 1)) / (POS(it + 1) - POS(it - 1));
float inTangent = (INVAL(it + 1) - OUTVAL(it - 1)) / (POS(it + 1) - POS(it - 1));
it.value().setInTangent(inTangent);
// inTangent == outTangent in this case
it.value().setOutTangent(inTangent);
@@ -1234,9 +1232,9 @@ void AutomationClip::generateTangents(timeMap::iterator it, int numToGenerate)
else
{
// Calculate the left side of the curve
inTangent = (INVAL(it) - OUTVAL(it - 1)) / (POS(it) - POS(it - 1));
float inTangent = (INVAL(it) - OUTVAL(it - 1)) / (POS(it) - POS(it - 1));
// Calculate the right side of the curve
outTangent = (INVAL(it + 1) - OUTVAL(it)) / (POS(it + 1) - POS(it));
float outTangent = (INVAL(it + 1) - OUTVAL(it)) / (POS(it + 1) - POS(it));
it.value().setInTangent(inTangent);
it.value().setOutTangent(outTangent);
}

View File

@@ -49,11 +49,11 @@ QDataStream& operator<< ( QDataStream &out, WaveMipMap &waveMipMap )
QDataStream& operator>> ( QDataStream &in, WaveMipMap &waveMipMap )
{
sample_t sample;
for( int tbl = 0; tbl <= MAXTBL; tbl++ )
{
for( int i = 0; i < TLENS[tbl]; i++ )
{
sample_t sample;
in >> sample;
waveMipMap.setSampleAt( tbl, i, sample );
}
@@ -67,9 +67,8 @@ void BandLimitedWave::generateWaves()
// don't generate if they already exist
if( s_wavesGenerated ) return;
int i;
// set wavetable directory
// set wavetable directory
s_wavetableDir = "data:wavetables/";
// set wavetable files
@@ -89,7 +88,7 @@ void BandLimitedWave::generateWaves()
}
else
{
for( i = 0; i <= MAXTBL; i++ )
for (int i = 0; i <= MAXTBL; i++)
{
const int len = TLENS[i];
//const double om = 1.0 / len;
@@ -131,7 +130,7 @@ void BandLimitedWave::generateWaves()
}
else
{
for( i = 0; i <= MAXTBL; i++ )
for (int i = 0; i <= MAXTBL; i++)
{
const int len = TLENS[i];
//const double om = 1.0 / len;
@@ -172,7 +171,7 @@ void BandLimitedWave::generateWaves()
}
else
{
for( i = 0; i <= MAXTBL; i++ )
for (int i = 0; i <= MAXTBL; i++)
{
const int len = TLENS[i];
//const double om = 1.0 / len;
@@ -215,7 +214,7 @@ void BandLimitedWave::generateWaves()
}
else
{
for( i = 0; i <= MAXTBL; i++ )
for (int i = 0; i <= MAXTBL; i++)
{
const int len = TLENS[i];

View File

@@ -220,24 +220,12 @@ Controller * Controller::create( ControllerType _ct, Model * _parent )
Controller * Controller::create( const QDomElement & _this, Model * _parent )
{
Controller * c;
if( static_cast<ControllerType>(_this.attribute( "type" ).toInt()) == ControllerType::Peak )
{
c = PeakController::getControllerBySetting( _this );
}
else
{
c = create(
static_cast<ControllerType>( _this.attribute( "type" ).toInt() ),
_parent );
}
if( c != nullptr )
{
c->restoreState( _this );
}
return( c );
const auto controllerType = static_cast<ControllerType>(_this.attribute("type").toInt());
auto controller = controllerType == ControllerType::Peak
? PeakController::getControllerBySetting(_this)
: create(controllerType, _parent);
if (controller) { controller->restoreState(_this); }
return controller;
}

View File

@@ -1194,12 +1194,11 @@ void DataFile::upgrade_1_2_0_rc3()
"pattern" );
for( int j = 0; !patterns.item( j ).isNull(); ++j )
{
int patternLength, steps;
QDomElement el = patterns.item( j ).toElement();
if( el.attribute( "len" ) != "" )
{
patternLength = el.attribute( "len" ).toInt();
steps = patternLength / 12;
int patternLength = el.attribute( "len" ).toInt();
int steps = patternLength / 12;
el.setAttribute( "steps", steps );
}
}
@@ -1456,7 +1455,7 @@ void DataFile::upgrade_1_3_0()
if(num == 4)
{
// don't modify port 4, but some other ones:
int zoom_port;
int zoom_port = 0;
if (plugin == "Equalizer5Band")
zoom_port = 36;
else if (plugin == "Equalizer8Band")

View File

@@ -69,16 +69,16 @@ float mem_t=1.0f, mem_o=1.0f, mem_n=1.0f, mem_b=1.0f, mem_tune=1.0f, mem_time=1.
int DrumSynth::LongestEnv()
{
long e, eon, p;
float l=0.f;
float l = 0.f;
for(e=1; e<7; e++) //3
{
eon = e - 1; if(eon>2) eon=eon-1;
p = 0;
while (envpts[e][0][p + 1] >= 0.f) p++;
envData[e][MAX] = envpts[e][0][p] * timestretch;
if(chkOn[eon]==1) if(envData[e][MAX]>l) l=envData[e][MAX];
for (long e = 1; e < 7; e++) // 3
{
long eon = e - 1;
if (eon > 2) { eon = eon - 1; }
long p = 0;
while (envpts[e][0][p + 1] >= 0.f) { p++; }
envData[e][MAX] = envpts[e][0][p] * timestretch;
if (chkOn[eon] == 1 && envData[e][MAX] > l) { l = envData[e][MAX]; }
}
//l *= timestretch;
@@ -102,16 +102,15 @@ float DrumSynth::LoudestEnv()
void DrumSynth::UpdateEnv(int e, long t)
{
float endEnv, dT;
//0.2's added
envData[e][NEXTT] = envpts[e][0][(long)(envData[e][PNT] + 1.f)] * timestretch; //get next point
if(envData[e][NEXTT] < 0) envData[e][NEXTT] = 442000 * timestretch; //if end point, hold
envData[e][ENV] = envpts[e][1][(long)(envData[e][PNT] + 0.f)] * 0.01f; //this level
endEnv = envpts[e][1][(long)(envData[e][PNT] + 1.f)] * 0.01f; //next level
dT = envData[e][NEXTT] - (float)t;
if(dT < 1.0) dT = 1.0;
envData[e][dENV] = (endEnv - envData[e][ENV]) / dT;
envData[e][PNT] = envData[e][PNT] + 1.0f;
// 0.2's added
envData[e][NEXTT] = envpts[e][0][static_cast<long>(envData[e][PNT] + 1.f)] * timestretch; // get next point
if (envData[e][NEXTT] < 0) { envData[e][NEXTT] = 442000 * timestretch; } // if end point, hold
envData[e][ENV] = envpts[e][1][static_cast<long>(envData[e][PNT] + 0.f)] * 0.01f; // this level
float endEnv = envpts[e][1][static_cast<long>(envData[e][PNT] + 1.f)] * 0.01f; // next level
float dT = envData[e][NEXTT] - static_cast<float>(t);
if (dT < 1.0) { dT = 1.0; }
envData[e][dENV] = (endEnv - envData[e][ENV]) / dT;
envData[e][PNT] = envData[e][PNT] + 1.0f;
}
@@ -149,34 +148,41 @@ void DrumSynth::GetEnv(int env, const char *sec, const char *key, QString ini)
float DrumSynth::waveform(float ph, int form)
{
float w;
float w;
switch (form)
{
case 0: w = (float)sin(fmod(ph,TwoPi)); break; //sine
case 1: w = (float)fabs(2.0f*(float)sin(fmod(0.5f*ph,TwoPi)))-1.f; break; //sine^2
case 2: while(ph<TwoPi) ph+=TwoPi;
w = 0.6366197f * (float)fmod(ph,TwoPi) - 1.f; //tri
if(w>1.f) w=2.f-w;
break;
case 3: w = ph - TwoPi * (float)(int)(ph / TwoPi); //saw
w = (0.3183098f * w) - 1.f; break;
default: w = (sin(fmod(ph,TwoPi))>0.0)? 1.f: -1.f; break; //square
}
switch (form)
{
case 0:
w = static_cast<float>(sin(fmod(ph, TwoPi)));
break; // sine
case 1:
w = static_cast<float>(fabs(2.0f * static_cast<float>(sin(fmod(0.5f * ph, TwoPi))) - 1.f));
break; // sine^2
case 2:
while (ph < TwoPi) { ph += TwoPi; }
w = 0.6366197f * static_cast<float>(fmod(ph, TwoPi) - 1.f); // tri
if (w > 1.f) { w = 2.f - w; }
break;
case 3:
w = ph - TwoPi * static_cast<float>(static_cast<int>(ph / TwoPi)); // saw
w = (0.3183098f * w) - 1.f;
break;
default:
w = (sin(fmod(ph, TwoPi)) > 0.0) ? 1.f : -1.f;
break; // square
}
return w;
return w;
}
int DrumSynth::GetPrivateProfileString(const char *sec, const char *key, const char *def, char *buffer, int size, QString file)
{
stringstream is;
bool inSection = false;
char *line;
char *k, *b;
int len = 0;
stringstream is;
bool inSection = false;
int len = 0;
line = (char*)malloc(200);
char* line = static_cast<char*>(malloc(200));
// Use QFile to handle unicode file name on Windows
// Previously we used ifstream directly
@@ -201,8 +207,8 @@ int DrumSynth::GetPrivateProfileString(const char *sec, const char *key, const c
if (line[0] == '[')
break;
k = strtok(line, " \t=");
b = strtok(nullptr, "\n\r\0");
char* k = strtok(line, " \t=");
char* b = strtok(nullptr, "\n\r\0");
if (k != 0 && strcasecmp(k, key)==0) {
if (b==0) {

View File

@@ -210,8 +210,8 @@ void Effect::resample( int _i, const sampleFrame * _src_buf,
m_srcData[_i].data_out = _dst_buf[0].data ();
m_srcData[_i].src_ratio = (double) _dst_sr / _src_sr;
m_srcData[_i].end_of_input = 0;
int error;
if( ( error = src_process( m_srcState[_i], &m_srcData[_i] ) ) )
if (int error = src_process(m_srcState[_i], &m_srcData[_i]))
{
qFatal( "Effect::resample(): error while resampling: %s\n",
src_strerror( error ) );

View File

@@ -46,11 +46,10 @@ void InstrumentPlayHandle::play(sampleFrame * working_buffer)
// ensure that all our nph's have been processed first
auto nphv = NotePlayHandle::nphsOfInstrumentTrack(instrumentTrack, true);
bool nphsLeft;
bool nphsLeft = false;
do
{
nphsLeft = false;
for (const NotePlayHandle * constNotePlayHandle : nphv)
{
if (constNotePlayHandle->state() != ThreadableJob::ProcessingState::Done &&

View File

@@ -139,11 +139,7 @@ void LadspaManager::addPlugins(
LADSPA_Descriptor_Function _descriptor_func,
const QString & _file )
{
const LADSPA_Descriptor * descriptor;
for( long pluginIndex = 0;
( descriptor = _descriptor_func( pluginIndex ) ) != nullptr;
++pluginIndex )
for (long pluginIndex = 0; const auto descriptor = _descriptor_func(pluginIndex); ++pluginIndex)
{
ladspa_key_t key( _file, QString( descriptor->Label ) );
if( m_ladspaManagerMap.contains( key ) )

View File

@@ -143,9 +143,7 @@ bool LinkedModelGroup::containsModel(const QString &name) const
void LinkedModelGroups::linkAllModels()
{
LinkedModelGroup* first = getGroup(0);
LinkedModelGroup* cur;
for (std::size_t i = 1; (cur = getGroup(i)); ++i)
for (size_t i = 1; auto cur = getGroup(i); ++i)
{
first->linkControls(cur);
}
@@ -172,8 +170,7 @@ void LinkedModelGroups::saveSettings(QDomDocument& doc, QDomElement& that)
void LinkedModelGroups::loadSettings(const QDomElement& that)
{
QDomElement models = that.firstChildElement("models");
LinkedModelGroup* grp0;
if (!models.isNull() && (grp0 = getGroup(0)))
if (auto grp0 = getGroup(0); !models.isNull() && grp0)
{
// only load the first group, the others are linked to the first
grp0->loadValues(models);

View File

@@ -36,15 +36,14 @@ namespace lmms
*/
void* MemoryHelper::alignedMalloc( size_t byteNum )
{
char *ptr, *ptr2, *aligned_ptr;
int align_mask = LMMS_ALIGN_SIZE - 1;
ptr = static_cast<char*>( malloc( byteNum + LMMS_ALIGN_SIZE + sizeof( int ) ) );
char* ptr = static_cast<char*>(malloc(byteNum + LMMS_ALIGN_SIZE + sizeof(int)));
if( ptr == nullptr ) return nullptr;
ptr2 = ptr + sizeof( int );
aligned_ptr = ptr2 + ( LMMS_ALIGN_SIZE - ( ( size_t ) ptr2 & align_mask ) );
char* ptr2 = ptr + sizeof(int);
char* aligned_ptr = ptr2 + (LMMS_ALIGN_SIZE - ((size_t)ptr2 & align_mask));
ptr2 = aligned_ptr - sizeof( int );
*( ( int* ) ptr2 ) = ( int )( aligned_ptr - ptr );

View File

@@ -226,8 +226,8 @@ Plugin * Plugin::instantiate(const QString& pluginName, Model * parent,
}
else
{
InstantiationHook instantiationHook;
if ((instantiationHook = ( InstantiationHook ) pi.library->resolve( "lmms_plugin_main" )))
auto instantiationHook = reinterpret_cast<InstantiationHook>(pi.library->resolve("lmms_plugin_main"));
if (instantiationHook)
{
inst = instantiationHook(parent, data);
if(!inst) {

View File

@@ -945,13 +945,12 @@ void Song::createNewProject()
m_oldFileName = "";
setProjectFileName("");
Track * t;
t = Track::create( Track::Type::Instrument, this );
dynamic_cast<InstrumentTrack * >( t )->loadInstrument(
"tripleoscillator" );
t = Track::create(Track::Type::Instrument, Engine::patternStore());
dynamic_cast<InstrumentTrack * >( t )->loadInstrument(
"kicker" );
auto tripleOscTrack = Track::create(Track::Type::Instrument, this);
dynamic_cast<InstrumentTrack*>(tripleOscTrack)->loadInstrument("tripleoscillator");
auto kickerTrack = Track::create(Track::Type::Instrument, Engine::patternStore());
dynamic_cast<InstrumentTrack*>(kickerTrack)->loadInstrument("kicker");
Track::create( Track::Type::Sample, this );
Track::create( Track::Type::Pattern, this );
Track::create( Track::Type::Automation, this );

View File

@@ -53,12 +53,7 @@ AudioAlsa::AudioAlsa( bool & _success_ful, AudioEngine* _audioEngine ) :
"Could not avoid possible interception by PulseAudio\n" );
}
int err;
if( ( err = snd_pcm_open( &m_handle,
probeDevice().toLatin1().constData(),
SND_PCM_STREAM_PLAYBACK,
0 ) ) < 0 )
if (int err = snd_pcm_open(&m_handle, probeDevice().toLatin1().constData(), SND_PCM_STREAM_PLAYBACK, 0); err < 0)
{
printf( "Playback open error: %s\n", snd_strerror( err ) );
return;
@@ -67,14 +62,13 @@ AudioAlsa::AudioAlsa( bool & _success_ful, AudioEngine* _audioEngine ) :
snd_pcm_hw_params_malloc( &m_hwParams );
snd_pcm_sw_params_malloc( &m_swParams );
if( ( err = setHWParams( channels(),
SND_PCM_ACCESS_RW_INTERLEAVED ) ) < 0 )
if (int err = setHWParams(channels(), SND_PCM_ACCESS_RW_INTERLEAVED); err < 0)
{
printf( "Setting of hwparams failed: %s\n",
snd_strerror( err ) );
return;
}
if( ( err = setSWParams() ) < 0 )
if (int err = setSWParams(); err < 0)
{
printf( "Setting of swparams failed: %s\n",
snd_strerror( err ) );
@@ -83,9 +77,8 @@ AudioAlsa::AudioAlsa( bool & _success_ful, AudioEngine* _audioEngine ) :
// set FD_CLOEXEC flag for all file descriptors so forked processes
// do not inherit them
struct pollfd * ufds;
int count = snd_pcm_poll_descriptors_count( m_handle );
ufds = new pollfd[count];
auto ufds = new pollfd[count];
snd_pcm_poll_descriptors( m_handle, ufds, count );
for (int i = 0; i < std::max(3, count); ++i)
{
@@ -160,7 +153,7 @@ AudioAlsa::DeviceInfoCollection AudioAlsa::getAvailableDevices()
{
DeviceInfoCollection deviceInfos;
char **hints;
char** hints = nullptr;
/* Enumerate sound devices */
int err = snd_device_name_hint(-1, "pcm", (void***)&hints);
@@ -261,25 +254,21 @@ void AudioAlsa::applyQualitySettings()
snd_pcm_close( m_handle );
}
int err;
if( ( err = snd_pcm_open( &m_handle,
probeDevice().toLatin1().constData(),
SND_PCM_STREAM_PLAYBACK,
0 ) ) < 0 )
if (int err = snd_pcm_open(&m_handle, probeDevice().toLatin1().constData(), SND_PCM_STREAM_PLAYBACK, 0);
err < 0)
{
printf( "Playback open error: %s\n",
snd_strerror( err ) );
return;
}
if( ( err = setHWParams( channels(),
SND_PCM_ACCESS_RW_INTERLEAVED ) ) < 0 )
if (int err = setHWParams(channels(), SND_PCM_ACCESS_RW_INTERLEAVED); err < 0)
{
printf( "Setting of hwparams failed: %s\n",
snd_strerror( err ) );
return;
}
if( ( err = setSWParams() ) < 0 )
if (int err = setSWParams(); err < 0)
{
printf( "Setting of swparams failed: %s\n",
snd_strerror( err ) );
@@ -370,10 +359,8 @@ void AudioAlsa::run()
int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
{
int err, dir;
// choose all parameters
if( ( err = snd_pcm_hw_params_any( m_handle, m_hwParams ) ) < 0 )
if (int err = snd_pcm_hw_params_any(m_handle, m_hwParams); err < 0)
{
printf( "Broken configuration for playback: no configurations "
"available: %s\n", snd_strerror( err ) );
@@ -381,8 +368,7 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
}
// set the interleaved read/write format
if( ( err = snd_pcm_hw_params_set_access( m_handle, m_hwParams,
_access ) ) < 0 )
if (int err = snd_pcm_hw_params_set_access(m_handle, m_hwParams, _access); err < 0)
{
printf( "Access type not available for playback: %s\n",
snd_strerror( err ) );
@@ -390,11 +376,9 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
}
// set the sample format
if( ( snd_pcm_hw_params_set_format( m_handle, m_hwParams,
SND_PCM_FORMAT_S16_LE ) ) < 0 )
if (int err = snd_pcm_hw_params_set_format(m_handle, m_hwParams, SND_PCM_FORMAT_S16_LE); err < 0)
{
if( ( snd_pcm_hw_params_set_format( m_handle, m_hwParams,
SND_PCM_FORMAT_S16_BE ) ) < 0 )
if (int err = snd_pcm_hw_params_set_format(m_handle, m_hwParams, SND_PCM_FORMAT_S16_BE); err < 0)
{
printf( "Neither little- nor big-endian available for "
"playback: %s\n", snd_strerror( err ) );
@@ -408,8 +392,7 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
}
// set the count of channels
if( ( err = snd_pcm_hw_params_set_channels( m_handle, m_hwParams,
_channels ) ) < 0 )
if (int err = snd_pcm_hw_params_set_channels(m_handle, m_hwParams, _channels); err < 0)
{
printf( "Channel count (%i) not available for playbacks: %s\n"
"(Does your soundcard not support surround?)\n",
@@ -418,11 +401,9 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
}
// set the sample rate
if( ( err = snd_pcm_hw_params_set_rate( m_handle, m_hwParams,
sampleRate(), 0 ) ) < 0 )
if (int err = snd_pcm_hw_params_set_rate(m_handle, m_hwParams, sampleRate(), 0); err < 0)
{
if( ( err = snd_pcm_hw_params_set_rate( m_handle, m_hwParams,
audioEngine()->baseSampleRate(), 0 ) ) < 0 )
if (int err = snd_pcm_hw_params_set_rate(m_handle, m_hwParams, audioEngine()->baseSampleRate(), 0); err < 0)
{
printf( "Could not set sample rate: %s\n",
snd_strerror( err ) );
@@ -432,36 +413,29 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
m_periodSize = audioEngine()->framesPerPeriod();
m_bufferSize = m_periodSize * 8;
dir = 0;
err = snd_pcm_hw_params_set_period_size_near( m_handle, m_hwParams,
&m_periodSize, &dir );
if( err < 0 )
int dir;
if (int err = snd_pcm_hw_params_set_period_size_near(m_handle, m_hwParams, &m_periodSize, &dir); err < 0)
{
printf( "Unable to set period size %lu for playback: %s\n",
m_periodSize, snd_strerror( err ) );
return err;
}
dir = 0;
err = snd_pcm_hw_params_get_period_size( m_hwParams, &m_periodSize,
&dir );
if( err < 0 )
if (int err = snd_pcm_hw_params_get_period_size(m_hwParams, &m_periodSize, &dir); err < 0)
{
printf( "Unable to get period size for playback: %s\n",
snd_strerror( err ) );
}
dir = 0;
err = snd_pcm_hw_params_set_buffer_size_near( m_handle, m_hwParams,
&m_bufferSize );
if( err < 0 )
if (int err = snd_pcm_hw_params_set_buffer_size_near(m_handle, m_hwParams, &m_bufferSize); err < 0)
{
printf( "Unable to set buffer size %lu for playback: %s\n",
m_bufferSize, snd_strerror( err ) );
return ( err );
}
err = snd_pcm_hw_params_get_buffer_size( m_hwParams, &m_bufferSize );
if( 2 * m_periodSize > m_bufferSize )
if (int err = snd_pcm_hw_params_get_buffer_size(m_hwParams, &m_bufferSize); 2 * m_periodSize > m_bufferSize)
{
printf( "buffer to small, could not use\n" );
return ( err );
@@ -469,8 +443,7 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
// write the parameters to device
err = snd_pcm_hw_params( m_handle, m_hwParams );
if( err < 0 )
if (int err = snd_pcm_hw_params(m_handle, m_hwParams); err < 0)
{
printf( "Unable to set hw params for playback: %s\n",
snd_strerror( err ) );
@@ -485,10 +458,8 @@ int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
int AudioAlsa::setSWParams()
{
int err;
// get the current swparams
if( ( err = snd_pcm_sw_params_current( m_handle, m_swParams ) ) < 0 )
if (int err = snd_pcm_sw_params_current(m_handle, m_swParams); err < 0)
{
printf( "Unable to determine current swparams for playback: %s"
"\n", snd_strerror( err ) );
@@ -496,8 +467,7 @@ int AudioAlsa::setSWParams()
}
// start the transfer when a period is full
if( ( err = snd_pcm_sw_params_set_start_threshold( m_handle,
m_swParams, m_periodSize ) ) < 0 )
if (int err = snd_pcm_sw_params_set_start_threshold(m_handle, m_swParams, m_periodSize); err < 0)
{
printf( "Unable to set start threshold mode for playback: %s\n",
snd_strerror( err ) );
@@ -506,8 +476,7 @@ int AudioAlsa::setSWParams()
// allow the transfer when at least m_periodSize samples can be
// processed
if( ( err = snd_pcm_sw_params_set_avail_min( m_handle, m_swParams,
m_periodSize ) ) < 0 )
if (int err = snd_pcm_sw_params_set_avail_min(m_handle, m_swParams, m_periodSize); err < 0)
{
printf( "Unable to set avail min for playback: %s\n",
snd_strerror( err ) );
@@ -527,7 +496,7 @@ int AudioAlsa::setSWParams()
#endif
// write the parameters to the playback device
if( ( err = snd_pcm_sw_params( m_handle, m_swParams ) ) < 0 )
if (int err = snd_pcm_sw_params(m_handle, m_swParams); err < 0)
{
printf( "Unable to set sw params for playback: %s\n",
snd_strerror( err ) );

View File

@@ -195,8 +195,7 @@ fpp_t AudioDevice::resample( const surroundSampleFrame * _src,
m_srcData.data_out = _dst[0].data ();
m_srcData.src_ratio = (double) _dst_sr / _src_sr;
m_srcData.end_of_input = 0;
int error;
if( ( error = src_process( m_srcState, &m_srcData ) ) )
if (int error = src_process(m_srcState, &m_srcData))
{
printf( "AudioDevice::resample(): error while resampling: %s\n",
src_strerror( error ) );
@@ -213,12 +212,11 @@ int AudioDevice::convertToS16( const surroundSampleFrame * _ab,
{
if( _convert_endian )
{
int_sample_t temp;
for( fpp_t frame = 0; frame < _frames; ++frame )
{
for( ch_cnt_t chnl = 0; chnl < channels(); ++chnl )
{
temp = static_cast<int_sample_t>(AudioEngine::clip(_ab[frame][chnl]) * OUTPUT_SAMPLE_MULTIPLIER);
auto temp = static_cast<int_sample_t>(AudioEngine::clip(_ab[frame][chnl]) * OUTPUT_SAMPLE_MULTIPLIER);
( _output_buffer + frame * channels() )[chnl] =
( temp & 0x00ff ) << 8 |

View File

@@ -156,7 +156,6 @@ bool AudioFileOgg::startEncoding()
ogg_packet header_main;
ogg_packet header_comments;
ogg_packet header_codebooks;
int result;
// Build the packets
vorbis_analysis_headerout( &m_vd, m_comments, &header_main,
@@ -167,14 +166,9 @@ bool AudioFileOgg::startEncoding()
ogg_stream_packetin( &m_os, &header_comments );
ogg_stream_packetin( &m_os, &header_codebooks );
while( ( result = ogg_stream_flush( &m_os, &m_og ) ) )
while (ogg_stream_flush(&m_os, &m_og))
{
if( !result )
{
break;
}
int ret = writePage();
if( ret != m_og.header_len + m_og.body_len )
if (int ret = writePage(); ret != m_og.header_len + m_og.body_len)
{
// clean up
finishEncoding();

View File

@@ -92,10 +92,9 @@ AudioPortAudio::AudioPortAudio( bool & _success_ful, AudioEngine * _audioEngine
PaDeviceIndex inDevIdx = -1;
PaDeviceIndex outDevIdx = -1;
const PaDeviceInfo * di;
for( int i = 0; i < Pa_GetDeviceCount(); ++i )
{
di = Pa_GetDeviceInfo( i );
const auto di = Pa_GetDeviceInfo(i);
if( di->name == device &&
Pa_GetHostApiInfo( di->hostApi )->name == backend )
{
@@ -343,10 +342,9 @@ void AudioPortAudioSetupUtil::updateBackends()
return;
}
const PaHostApiInfo * hi;
for( int i = 0; i < Pa_GetHostApiCount(); ++i )
{
hi = Pa_GetHostApiInfo( i );
const auto hi = Pa_GetHostApiInfo(i);
m_backendModel.addItem( hi->name );
}
@@ -367,10 +365,9 @@ void AudioPortAudioSetupUtil::updateDevices()
// get active backend
const QString& backend = m_backendModel.currentText();
int hostApi = 0;
const PaHostApiInfo * hi;
for( int i = 0; i < Pa_GetHostApiCount(); ++i )
{
hi = Pa_GetHostApiInfo( i );
const auto hi = Pa_GetHostApiInfo(i);
if( backend == hi->name )
{
hostApi = i;
@@ -380,10 +377,9 @@ void AudioPortAudioSetupUtil::updateDevices()
// get devices for selected backend
m_deviceModel.clear();
const PaDeviceInfo * di;
for( int i = 0; i < Pa_GetDeviceCount(); ++i )
{
di = Pa_GetDeviceInfo( i );
const auto di = Pa_GetDeviceInfo(i);
if( di->hostApi == hostApi )
{
m_deviceModel.addItem( di->name );

View File

@@ -69,7 +69,6 @@ AudioSoundIo::AudioSoundIo( bool & outSuccessful, AudioEngine * _audioEngine ) :
const QString& configDeviceId = ConfigManager::inst()->value( "audiosoundio", "out_device_id" );
const QString& configDeviceRaw = ConfigManager::inst()->value( "audiosoundio", "out_device_raw" );
int err;
int outDeviceCount = 0;
int backendCount = soundio_backend_count(m_soundio);
for (int i = 0; i < backendCount; i += 1)
@@ -77,11 +76,7 @@ AudioSoundIo::AudioSoundIo( bool & outSuccessful, AudioEngine * _audioEngine ) :
SoundIoBackend backend = soundio_get_backend(m_soundio, i);
if (configBackend == soundio_backend_name(backend))
{
if ((err = soundio_connect_backend(m_soundio, backend)))
{
// error occurred, leave outDeviceCount 0
}
else
if (!soundio_connect_backend(m_soundio, backend))
{
soundio_flush_events(m_soundio);
if (m_disconnectErr)
@@ -98,7 +93,7 @@ AudioSoundIo::AudioSoundIo( bool & outSuccessful, AudioEngine * _audioEngine ) :
if (outDeviceCount <= 0)
{
// try connecting to the default backend
if ((err = soundio_connect(m_soundio)))
if (int err = soundio_connect(m_soundio))
{
fprintf(stderr, "Unable to initialize soundio: %s\n", soundio_strerror(err));
return;
@@ -179,7 +174,7 @@ AudioSoundIo::AudioSoundIo( bool & outSuccessful, AudioEngine * _audioEngine ) :
m_outstream->layout = *soundio_channel_layout_get_default(channels());
m_outstream->format = SoundIoFormatFloat32NE;
if ((err = soundio_outstream_open(m_outstream)))
if (int err = soundio_outstream_open(m_outstream))
{
fprintf(stderr, "Unable to initialize soundio: %s\n", soundio_strerror(err));
return;
@@ -214,8 +209,6 @@ AudioSoundIo::~AudioSoundIo()
void AudioSoundIo::startProcessing()
{
int err;
m_outBufFrameIndex = 0;
m_outBufFramesTotal = 0;
m_outBufSize = audioEngine()->framesPerPeriod();
@@ -224,7 +217,7 @@ void AudioSoundIo::startProcessing()
if (! m_outstreamStarted)
{
if ((err = soundio_outstream_start(m_outstream)))
if (int err = soundio_outstream_start(m_outstream))
{
fprintf(stderr,
"AudioSoundIo::startProcessing() :: soundio unable to start stream: %s\n",
@@ -236,7 +229,7 @@ void AudioSoundIo::startProcessing()
m_stopped = false;
if ((err = soundio_outstream_pause(m_outstream, false)))
if (int err = soundio_outstream_pause(m_outstream, false))
{
m_stopped = true;
fprintf(stderr,
@@ -247,12 +240,10 @@ void AudioSoundIo::startProcessing()
void AudioSoundIo::stopProcessing()
{
int err;
m_stopped = true;
if (m_outstream)
{
if ((err = soundio_outstream_pause(m_outstream, true)))
if (int err = soundio_outstream_pause(m_outstream, true))
{
fprintf(stderr,
"AudioSoundIo::stopProcessing() :: pausing result error: %s\n",
@@ -281,16 +272,14 @@ void AudioSoundIo::writeCallback(int frameCountMin, int frameCountMax)
{
if (m_stopped) {return;}
const struct SoundIoChannelLayout *layout = &m_outstream->layout;
SoundIoChannelArea *areas;
SoundIoChannelArea* areas;
int bytesPerSample = m_outstream->bytes_per_sample;
int err;
int framesLeft = frameCountMax;
while (framesLeft > 0)
{
int frameCount = framesLeft;
if ((err = soundio_outstream_begin_write(m_outstream, &areas, &frameCount)))
if (int err = soundio_outstream_begin_write(m_outstream, &areas, &frameCount))
{
errorCallback(err);
return;
@@ -332,7 +321,7 @@ void AudioSoundIo::writeCallback(int frameCountMin, int frameCountMax)
m_outBufFrameIndex += 1;
}
if ((err = soundio_outstream_end_write(m_outstream)))
if (int err = soundio_outstream_end_write(m_outstream))
{
errorCallback(err);
return;
@@ -372,11 +361,10 @@ void AudioSoundIo::setupWidget::reconnectSoundIo()
soundio_disconnect(m_soundio);
int err;
int backend_index = m_backendModel.findText(configBackend);
if (backend_index < 0)
{
if ((err = soundio_connect(m_soundio)))
if (int err = soundio_connect(m_soundio))
{
fprintf(stderr, "soundio: unable to connect backend: %s\n", soundio_strerror(err));
return;
@@ -387,11 +375,11 @@ void AudioSoundIo::setupWidget::reconnectSoundIo()
else
{
SoundIoBackend backend = soundio_get_backend(m_soundio, backend_index);
if ((err = soundio_connect_backend(m_soundio, backend)))
if (int err = soundio_connect_backend(m_soundio, backend))
{
fprintf(stderr, "soundio: unable to connect %s backend: %s\n",
soundio_backend_name(backend), soundio_strerror(err));
if ((err = soundio_connect(m_soundio)))
if (int err = soundio_connect(m_soundio))
{
fprintf(stderr, "soundio: unable to connect backend: %s\n", soundio_strerror(err));
return;

View File

@@ -129,12 +129,11 @@ lv2_evbuf_next(LV2_Evbuf_Iterator iter)
LV2_Evbuf* evbuf = iter.evbuf;
uint32_t offset = iter.offset;
uint32_t size;
size = ((LV2_Atom_Event*)
((char*)LV2_ATOM_CONTENTS(LV2_Atom_Sequence, &evbuf->buf.atom)
+ offset))->body.size;
offset += lv2_evbuf_pad_size(sizeof(LV2_Atom_Event) + size);
const auto contents = static_cast<char*>(LV2_ATOM_CONTENTS(LV2_Atom_Sequence, &evbuf->buf.atom)) + offset;
const uint32_t size = reinterpret_cast<LV2_Atom_Event*>(contents)->body.size;
offset += lv2_evbuf_pad_size(sizeof(LV2_Atom_Event) + size);
LV2_Evbuf_Iterator next = { evbuf, offset };
return next;
}

View File

@@ -425,12 +425,8 @@ void Lv2Proc::handleMidiInputEvent(const MidiEvent &event, const TimePos &time,
AutomatableModel *Lv2Proc::modelAtPort(const QString &uri)
{
// unused currently
AutomatableModel *mod;
auto itr = m_connectedModels.find(uri.toUtf8().data());
if (itr != m_connectedModels.end()) { mod = itr->second; }
else { mod = nullptr; }
return mod;
const auto itr = m_connectedModels.find(uri.toUtf8().data());
return itr != m_connectedModels.end() ? itr->second : nullptr;
}

View File

@@ -906,19 +906,13 @@ int main( int argc, char * * argv )
mb.setWindowIcon( embed::getIconPixmap( "icon_small" ) );
mb.setWindowFlags( Qt::WindowCloseButtonHint );
QPushButton * recover;
QPushButton * discard;
QPushButton * exit;
// setting all buttons to the same roles allows us
// to have a custom layout
discard = mb.addButton( MainWindow::tr( "Discard" ),
QMessageBox::AcceptRole );
recover = mb.addButton( MainWindow::tr( "Recover" ),
QMessageBox::AcceptRole );
auto discard = mb.addButton(MainWindow::tr("Discard"), QMessageBox::AcceptRole);
auto recover = mb.addButton(MainWindow::tr("Recover"), QMessageBox::AcceptRole);
// have a hidden exit button
exit = mb.addButton( "", QMessageBox::RejectRole);
auto exit = mb.addButton("", QMessageBox::RejectRole);
exit->setVisible(false);
// set icons

View File

@@ -39,10 +39,7 @@ MidiAlsaRaw::MidiAlsaRaw() :
m_outputp( &m_output ),
m_quit( false )
{
int err;
if( ( err = snd_rawmidi_open( m_inputp, m_outputp,
probeDevice().toLatin1().constData(),
0 ) ) < 0 )
if (int err = snd_rawmidi_open(m_inputp, m_outputp, probeDevice().toLatin1().constData(), 0); err < 0)
{
printf( "cannot open MIDI-device: %s\n", snd_strerror( err ) );
return;
@@ -111,29 +108,27 @@ void MidiAlsaRaw::run()
{
msleep( 5 ); // must do that, otherwise this thread takes
// too much CPU-time, even with LowPriority...
int err = poll( m_pfds, m_npfds, 10000 );
if( err < 0 && errno == EINTR )
if (int err = poll(m_pfds, m_npfds, 10000); err < 0 && errno == EINTR)
{
printf( "MidiAlsaRaw::run(): Got EINTR while "
"polling. Will stop polling MIDI-events from "
"MIDI-port.\n" );
break;
}
if( err < 0 )
else if (err < 0)
{
printf( "poll failed: %s\nWill stop polling "
"MIDI-events from MIDI-port.\n",
strerror( errno ) );
break;
}
if( err == 0 )
else if (err == 0)
{
//printf( "there seems to be no active MIDI-device %d\n", ++cnt );
continue;
}
unsigned short revents;
if( ( err = snd_rawmidi_poll_descriptors_revents(
m_input, m_pfds, m_npfds, &revents ) ) < 0 )
unsigned short revents = 0;
if (int err = snd_rawmidi_poll_descriptors_revents(m_input, m_pfds, m_npfds, &revents); err < 0)
{
printf( "cannot get poll events: %s\nWill stop polling "
"MIDI-events from MIDI-port.\n",
@@ -149,25 +144,19 @@ void MidiAlsaRaw::run()
{
continue;
}
err = snd_rawmidi_read(m_input, buf.data(), buf.size());
if( err == -EAGAIN )
{
continue;
}
if( err < 0 )
if (int err = snd_rawmidi_read(m_input, buf.data(), buf.size()); err == -EAGAIN) { continue; }
else if (err < 0)
{
printf( "cannot read from port \"%s\": %s\nWill stop "
"polling MIDI-events from MIDI-port.\n",
/*port_name*/"default", snd_strerror( err ) );
break;
}
if( err == 0 )
else if (err == 0) { continue; }
else
{
continue;
}
for( int i = 0; i < err; ++i )
{
parseData( buf[i] );
for (int i = 0; i < err; ++i) { parseData(buf[i]); }
}
}

View File

@@ -78,10 +78,7 @@ MidiAlsaSeq::MidiAlsaSeq() :
m_quit( false ),
m_portListUpdateTimer( this )
{
int err;
if( ( err = snd_seq_open( &m_seqHandle,
probeDevice().toLatin1().constData(),
SND_SEQ_OPEN_DUPLEX, 0 ) ) < 0 )
if (int err = snd_seq_open(&m_seqHandle, probeDevice().toLatin1().constData(), SND_SEQ_OPEN_DUPLEX, 0); err < 0)
{
fprintf( stderr, "cannot open sequencer: %s\n",
snd_strerror( err ) );

View File

@@ -74,11 +74,11 @@ void MidiController::updateName()
void MidiController::processInEvent(const MidiEvent& event, const TimePos& time, f_cnt_t offset)
{
unsigned char controllerNum;
switch(event.type())
{
case MidiControlChange:
controllerNum = event.controllerNumber();
{
unsigned char controllerNum = event.controllerNumber();
if (m_midiPort.inputController() == controllerNum &&
(m_midiPort.inputChannel() == event.channel() + 1 || m_midiPort.inputChannel() == 0))
@@ -89,7 +89,7 @@ void MidiController::processInEvent(const MidiEvent& event, const TimePos& time,
emit valueChanged();
}
break;
}
default:
// Don't care - maybe add special cases for pitch and mod later
break;

View File

@@ -179,7 +179,6 @@ QString MidiJack::probeDevice()
// we read data from jack
void MidiJack::JackMidiRead(jack_nframes_t nframes)
{
unsigned int i,b;
void* port_buf = jack_port_get_buffer(m_input_port, nframes);
jack_midi_event_t in_event;
jack_nframes_t event_index = 0;
@@ -188,13 +187,13 @@ void MidiJack::JackMidiRead(jack_nframes_t nframes)
int rval = jack_midi_event_get(&in_event, port_buf, 0);
if (rval == 0 /* 0 = success */)
{
for(i=0; i<nframes; i++)
for (unsigned int i = 0; i < nframes; i++)
{
while((in_event.time == i) && (event_index < event_count))
{
// lmms is setup to parse bytes coming from a device
// parse it byte by byte as it expects
for(b=0;b<in_event.size;b++)
for (unsigned int b = 0; b < in_event.size; b++)
parseData( *(in_event.buffer + b) );
event_index++;

View File

@@ -91,24 +91,21 @@ void MidiSndio::sendByte( const unsigned char c )
void MidiSndio::run()
{
struct pollfd pfd;
nfds_t nfds;
char buf[0x100], *p;
size_t n;
int ret;
char buf[0x100];
while( m_quit == false && m_hdl )
{
nfds = mio_pollfd( m_hdl, &pfd, POLLIN );
ret = poll( &pfd, nfds, 100 );
nfds_t nfds = mio_pollfd(m_hdl, &pfd, POLLIN);
int ret = poll(&pfd, nfds, 100);
if ( ret < 0 )
break;
if ( !ret || !( mio_revents( m_hdl, &pfd ) & POLLIN ) )
continue;
n = mio_read( m_hdl, buf, sizeof(buf) );
size_t n = mio_read(m_hdl, buf, sizeof(buf));
if ( !n )
{
break;
}
for (p = buf; n > 0; n--, p++)
for (char* p = buf; n > 0; n--, p++)
{
parseData( *p );
}

View File

@@ -101,8 +101,7 @@ ControlLayout::ControlLayout(QWidget *parent, int margin, int hSpacing, int vSpa
ControlLayout::~ControlLayout()
{
QLayoutItem *item;
while ((item = takeAt(0))) { delete item; }
while (auto item = takeAt(0)) { delete item; }
}
void ControlLayout::onTextChanged(const QString&)

View File

@@ -1108,8 +1108,7 @@ void MainWindow::updateViewMenu()
// Here we should put all look&feel -stuff from configmanager
// that is safe to change on the fly. There is probably some
// more elegant way to do this.
QAction *qa;
qa = new QAction(tr( "Volume as dBFS" ), this);
auto qa = new QAction(tr("Volume as dBFS"), this);
qa->setData("displaydbfs");
qa->setCheckable( true );
qa->setChecked( ConfigManager::inst()->value( "app", "displaydbfs" ).toInt() );

View File

@@ -108,10 +108,8 @@ void ProjectNotes::setText( const QString & _text )
void ProjectNotes::setupActions()
{
QToolBar * tb = addToolBar( tr( "Edit Actions" ) );
QAction * a;
a = new QAction( embed::getIconPixmap( "edit_undo" ), tr( "&Undo" ),
this );
auto a = new QAction(embed::getIconPixmap("edit_undo"), tr("&Undo"), this);
a->setShortcut( tr( "%1+Z" ).arg(UI_CTRL_KEY) );
connect( a, SIGNAL(triggered()), m_edit, SLOT(undo()));
tb->addAction( a );

View File

@@ -314,24 +314,17 @@ void AutomationClipView::paintEvent( QPaintEvent * )
// the outValue of the current node). When we have nodes with linear or cubic progression
// the value of the end of the shape between the two nodes will be the inValue of
// the next node.
float nextValue;
if( m_clip->progressionType() == AutomationClip::ProgressionType::Discrete )
{
nextValue = OUTVAL(it);
}
else
{
nextValue = INVAL(it + 1);
}
float nextValue = m_clip->progressionType() == AutomationClip::ProgressionType::Discrete
? OUTVAL(it)
: INVAL(it + 1);
QPainterPath path;
QPointF origin = QPointF(POS(it) * ppTick, 0.0f);
path.moveTo( origin );
path.moveTo(QPointF(POS(it) * ppTick,values[0]));
float x;
for (int i = POS(it) + 1; i < POS(it + 1); i++)
{
x = i * ppTick;
float x = i * ppTick;
if( x > ( width() - BORDER_WIDTH ) ) break;
float value = values[i - POS(it)];
path.lineTo( QPointF( x, value ) );

View File

@@ -320,8 +320,6 @@ void AutomationEditor::drawLine( int x0In, float y0, int x1In, float y1 )
auto deltay = qAbs<float>(y1 - y0);
int x = x0;
float y = y0;
int xstep;
int ystep;
if( deltax < AutomationClip::quantization() )
{
@@ -332,34 +330,14 @@ void AutomationEditor::drawLine( int x0In, float y0, int x1In, float y1 )
float yscale = deltay / ( deltax );
if( x0 < x1 )
{
xstep = AutomationClip::quantization();
}
else
{
xstep = -( AutomationClip::quantization() );
}
int xstep = (x0 < x1 ? 1 : -1) * AutomationClip::quantization();
int ystep = y0 < y1 ? 1 : -1;
float lineAdjust = ystep * yscale;
float lineAdjust;
if( y0 < y1 )
{
ystep = 1;
lineAdjust = yscale;
}
else
{
ystep = -1;
lineAdjust = -( yscale );
}
int i = 0;
while( i < deltax )
for (int i = 0; i < deltax; ++i)
{
y = y0 + ( ystep * yscale * i ) + lineAdjust;
x += xstep;
i += 1;
m_clip->removeNode(TimePos(x));
m_clip->putValue( TimePos( x ), y );
}
@@ -979,7 +957,6 @@ inline void AutomationEditor::drawCross( QPainter & p )
inline void AutomationEditor::drawAutomationPoint(QPainter & p, timeMap::iterator it)
{
int x = xCoordOfTick(POS(it));
int y;
// Below (m_ppb * AutomationClip::quantization() / 576) is used because:
// 1 bar equals to 192/quantization() notes. Hence, to calculate the number of pixels
// per note we would have (m_ppb * 1 bar / (192/quantization()) notes per bar), or
@@ -988,7 +965,7 @@ inline void AutomationEditor::drawAutomationPoint(QPainter & p, timeMap::iterato
const int outerRadius = qBound(3, (m_ppb * AutomationClip::quantization()) / 576, 5);
// Draw a circle for the outValue
y = yCoordOfLevel(OUTVAL(it));
int y = yCoordOfLevel(OUTVAL(it));
p.setPen(QPen(m_nodeOutValueColor.lighter(200)));
p.setBrush(QBrush(m_nodeOutValueColor));
p.drawEllipse(x - outerRadius, y - outerRadius, outerRadius * 2, outerRadius * 2);
@@ -1006,7 +983,6 @@ inline void AutomationEditor::drawAutomationPoint(QPainter & p, timeMap::iterato
inline void AutomationEditor::drawAutomationTangents(QPainter& p, timeMap::iterator it)
{
int x = xCoordOfTick(POS(it));
int y, tx, ty;
// The tangent value correlates the variation in the node value related to the increase
// in ticks. So to have a proportionate drawing of the tangent line, we need to find the
@@ -1020,9 +996,9 @@ inline void AutomationEditor::drawAutomationTangents(QPainter& p, timeMap::itera
p.setPen(QPen(m_nodeTangentLineColor));
p.setBrush(QBrush(m_nodeTangentLineColor));
y = yCoordOfLevel(INVAL(it));
tx = x - 20;
ty = y + 20 * INTAN(it) * proportion;
int y = yCoordOfLevel(INVAL(it));
int tx = x - 20;
int ty = y + 20 * INTAN(it) * proportion;
p.drawLine(x, y, tx, ty);
p.setBrush(QBrush(m_nodeTangentLineColor.darker(200)));
p.drawEllipse(tx - 3, ty - 3, 6, 6);
@@ -1101,7 +1077,6 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
}
else
{
int y;
int level = (int) m_bottomLevel;
int printable = qMax( 1, 5 * DEFAULT_Y_DELTA
/ m_y_delta );
@@ -1116,7 +1091,7 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
{
const QString & label = m_clip->firstObject()
->displayValue( level );
y = yCoordOfLevel( level );
int y = yCoordOfLevel(level);
p.setPen( QApplication::palette().color( QPalette::Active,
QPalette::Shadow ) );
p.drawText( 1, y - font_height + 1,
@@ -1139,7 +1114,7 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
if( m_clip )
{
int tick, x, q;
int q;
int x_line_end = (int)( m_y_auto || m_topLevel < m_maxLevel ?
TOP_MARGIN :
grid_bottom - ( m_topLevel - m_bottomLevel ) * m_y_delta );
@@ -1163,10 +1138,8 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
// 3 independent loops, because quantization might not divide evenly into
// exotic denominators (e.g. 7/11 time), which are allowed ATM.
// First quantization grid...
for( tick = m_currentPosition - m_currentPosition % q,
x = xCoordOfTick( tick );
x<=width();
tick += q, x = xCoordOfTick( tick ) )
for (int tick = m_currentPosition - m_currentPosition % q, x = xCoordOfTick(tick); x <= width();
tick += q, x = xCoordOfTick(tick))
{
p.setPen(m_lineColor);
p.drawLine( x, grid_bottom, x, x_line_end );
@@ -1187,10 +1160,9 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
}
else
{
float y;
for( int level = (int)m_bottomLevel; level <= m_topLevel; level++)
{
y = yCoordOfLevel( (float)level );
float y = yCoordOfLevel(static_cast<float>(level));
p.setPen(level % 10 == 0 ? m_beatLineColor : m_lineColor);
@@ -1226,10 +1198,8 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
int ticksPerBeat = DefaultTicksPerBar /
Engine::getSong()->getTimeSigModel().getDenominator();
for( tick = m_currentPosition - m_currentPosition % ticksPerBeat,
x = xCoordOfTick( tick );
x<=width();
tick += ticksPerBeat, x = xCoordOfTick( tick ) )
for (int tick = m_currentPosition - m_currentPosition % ticksPerBeat, x = xCoordOfTick(tick); x <= width();
tick += ticksPerBeat, x = xCoordOfTick(tick))
{
p.setPen(m_beatLineColor);
p.drawLine( x, grid_bottom, x, x_line_end );
@@ -1316,10 +1286,8 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
}
// and finally bars
for( tick = m_currentPosition - m_currentPosition % TimePos::ticksPerBar(),
x = xCoordOfTick( tick );
x<=width();
tick += TimePos::ticksPerBar(), x = xCoordOfTick( tick ) )
for (int tick = m_currentPosition - m_currentPosition % TimePos::ticksPerBar(), x = xCoordOfTick(tick);
x <= width(); tick += TimePos::ticksPerBar(), x = xCoordOfTick(tick))
{
p.setPen(m_barLineColor);
p.drawLine( x, grid_bottom, x, x_line_end );
@@ -1365,15 +1333,9 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
// the outValue of the current node). When we have nodes with linear or cubic progression
// the value of the end of the shape between the two nodes will be the inValue of
// the next node.
float nextValue;
if( m_clip->progressionType() == AutomationClip::ProgressionType::Discrete )
{
nextValue = OUTVAL(it);
}
else
{
nextValue = INVAL(it + 1);
}
float nextValue = m_clip->progressionType() == AutomationClip::ProgressionType::Discrete
? OUTVAL(it)
: INVAL(it + 1);
p.setRenderHints( QPainter::Antialiasing, true );
QPainterPath path;
@@ -1523,25 +1485,11 @@ void AutomationEditor::drawLevelTick(QPainter & p, int tick, float value)
|| ( value > m_topLevel && m_topLevel >= 0 )
|| ( value < m_bottomLevel && m_bottomLevel <= 0 ) )
{
int y_start = yCoordOfLevel( value );
int rect_height;
if( m_y_auto )
{
int y_end = (int)( grid_bottom
+ ( grid_bottom - TOP_MARGIN )
* m_minLevel
/ ( m_maxLevel - m_minLevel ) );
rect_height = y_end - y_start;
}
else
{
rect_height = (int)( value * m_y_delta );
}
const int y_start = yCoordOfLevel(value);
const int y_end = grid_bottom + (grid_bottom - TOP_MARGIN) * m_minLevel / (m_maxLevel - m_minLevel);
const int rect_height = m_y_auto ? y_end - y_start : value * m_y_delta;
QBrush currentColor = m_graphColor;
p.fillRect( x, y_start, rect_width, rect_height, currentColor );
}
#ifdef LMMS_DEBUG

View File

@@ -3030,10 +3030,9 @@ void PianoRoll::paintEvent(QPaintEvent * pe )
if (hasValidMidiClip())
{
int pianoAreaHeight, partialKeyVisible, topKey, topNote;
pianoAreaHeight = keyAreaBottom() - keyAreaTop();
m_pianoKeysVisible = pianoAreaHeight / m_keyLineHeight;
partialKeyVisible = pianoAreaHeight % m_keyLineHeight;
int pianoAreaHeight = keyAreaBottom() - keyAreaTop();
int m_pianoKeysVisible = pianoAreaHeight / m_keyLineHeight;
int partialKeyVisible = pianoAreaHeight % m_keyLineHeight;
// check if we're below the minimum key area size
if (m_pianoKeysVisible * m_keyLineHeight < KEY_AREA_MIN_HEIGHT)
{
@@ -3058,8 +3057,8 @@ void PianoRoll::paintEvent(QPaintEvent * pe )
PR_TOP_MARGIN - PR_BOTTOM_MARGIN;
partialKeyVisible = 0;
}
topKey = qBound(0, m_startKey + m_pianoKeysVisible - 1, NumKeys - 1);
topNote = topKey % KeysPerOctave;
int topKey = std::clamp(m_startKey + m_pianoKeysVisible - 1, 0, NumKeys - 1);
int topNote = topKey % KeysPerOctave;
// if not resizing the note edit area, we can change m_notesEditHeight
if (m_action != Action::ResizeNoteEditArea && partialKeyVisible != 0)
{

View File

@@ -774,17 +774,9 @@ static inline void animateScroll( QScrollBar *scrollBar, int newVal, bool smooth
void SongEditor::updatePosition( const TimePos & t )
{
int widgetWidth, trackOpWidth;
if( ConfigManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() )
{
widgetWidth = DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT;
trackOpWidth = TRACK_OP_WIDTH_COMPACT;
}
else
{
widgetWidth = DEFAULT_SETTINGS_WIDGET_WIDTH;
trackOpWidth = TRACK_OP_WIDTH;
}
const bool compactTrackButtons = ConfigManager::inst()->value("ui", "compacttrackbuttons").toInt();
const auto widgetWidth = compactTrackButtons ? DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT : DEFAULT_SETTINGS_WIDGET_WIDTH;
const auto trackOpWidth = compactTrackButtons ? TRACK_OP_WIDTH_COMPACT : TRACK_OP_WIDTH;
if( ( m_song->isPlaying() && m_song->m_playMode == Song::PlayMode::Song
&& m_timeLine->autoScroll() == TimeLineWidget::AutoScrollState::Enabled) ||

View File

@@ -299,9 +299,8 @@ void ControllerConnectionDialog::selectController()
{
if( m_midiControllerSpinBox->model()->value() > 0 )
{
MidiController * mc;
mc = m_midiController->copyToMidiController( Engine::getSong() );
auto mc = m_midiController->copyToMidiController(Engine::getSong());
/*
if( m_targetModel->getTrack() &&
!m_targetModel->getTrack()->displayName().isEmpty() )

View File

@@ -199,15 +199,13 @@ void Fader::mousePressEvent( QMouseEvent* mouseEvent )
void Fader::mouseDoubleClickEvent( QMouseEvent* mouseEvent )
{
bool ok;
float newValue;
// TODO: dbV handling
newValue = QInputDialog::getDouble( this, tr( "Set value" ),
tr( "Please enter a new value between %1 and %2:" ).
arg( model()->minValue() * m_conversionFactor ).
arg( model()->maxValue() * m_conversionFactor ),
model()->getRoundedValue() * m_conversionFactor,
model()->minValue() * m_conversionFactor,
model()->maxValue() * m_conversionFactor, model()->getDigitCount(), &ok ) / m_conversionFactor;
auto minv = model()->minValue() * m_conversionFactor;
auto maxv = model()->maxValue() * m_conversionFactor;
float newValue = QInputDialog::getDouble(this, tr("Set value"),
tr("Please enter a new value between %1 and %2:").arg(minv).arg(maxv),
model()->getRoundedValue() * m_conversionFactor, minv, maxv, model()->getDigitCount(), &ok)
/ m_conversionFactor;
if( ok )
{

View File

@@ -643,11 +643,10 @@ void graphModel::convolve(const float *convolution,
// store values in temporary array
QVector<float> temp = m_samples;
const int graphLength = length();
float sum;
// make a cyclic convolution
for ( int i = 0; i < graphLength; i++ )
{
sum = 0;
float sum = 0.0f;
for ( int j = 0; j < convolutionLength; j++ )
{
sum += convolution[j] * temp[( i + j ) % graphLength];

View File

@@ -91,24 +91,25 @@ void TimeDisplayWidget::updateTime()
switch( m_displayMode )
{
case DisplayMode::MinutesSeconds:
int msec;
msec = s->getMilliseconds();
{
int msec = s->getMilliseconds();
m_majorLCD.setValue(msec / 60000);
m_minorLCD.setValue((msec / 1000) % 60);
m_milliSecondsLCD.setValue(msec % 1000);
break;
}
case DisplayMode::BarsTicks:
int tick;
tick = s->getPlayPos().getTicks();
{
int tick = s->getPlayPos().getTicks();
m_majorLCD.setValue((int)(tick / s->ticksPerBar()) + 1);
m_minorLCD.setValue((tick % s->ticksPerBar()) /
(s->ticksPerBar() / s->getTimeSigModel().getNumerator() ) +1);
m_milliSecondsLCD.setValue((tick % s->ticksPerBar()) %
(s->ticksPerBar() / s->getTimeSigModel().getNumerator()));
break;
default: break;
}
default:
break;
}
}

View File

@@ -772,17 +772,17 @@ bool InstrumentTrack::play( const TimePos & _start, const fpp_t _frames,
}
}
Note * cur_note;
while( nit != notes.end() &&
( cur_note = *nit )->pos() == cur_start )
while (nit != notes.end() && (*nit)->pos() == cur_start)
{
const auto currentNote = *nit;
// If the note is a Step Note, frames will be 0 so the NotePlayHandle
// plays for the whole length of the sample
const auto note_frames = cur_note->type() == Note::Type::Step
const auto noteFrames = currentNote->type() == Note::Type::Step
? 0
: cur_note->length().frames(frames_per_tick);
: currentNote->length().frames(frames_per_tick);
NotePlayHandle* notePlayHandle = NotePlayHandleManager::acquire( this, _offset, note_frames, *cur_note );
NotePlayHandle* notePlayHandle = NotePlayHandleManager::acquire(this, _offset, noteFrames, *currentNote);
notePlayHandle->setPatternTrack(pattern_track);
// are we playing global song?
if( _clip_num < 0 )