From 592b4aeb1ab9960f344c33c43543654019e5a4d8 Mon Sep 17 00:00:00 2001 From: Vesa Date: Mon, 26 May 2014 03:24:36 +0300 Subject: [PATCH 1/3] New NES instrument --- data/themes/default/style.css | 10 ++++++++++ plugins/CMakeLists.txt | 1 + 2 files changed, 11 insertions(+) diff --git a/data/themes/default/style.css b/data/themes/default/style.css index 52a97aaa9..d5c973e87 100644 --- a/data/themes/default/style.css +++ b/data/themes/default/style.css @@ -696,6 +696,16 @@ MonstroView knob { qproperty-lineWidth: 2.5; } +NesInstrumentView knob { + color: #e7231b; + qproperty-outerColor: #fff; + qproperty-outerRadius: 11.0; + qproperty-innerRadius: 8.0; + qproperty-centerPointX: 14.5; + qproperty-centerPointY: 14.5; + qproperty-lineWidth: 2; +} + /* palette information */ LmmsPalette { diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index f61906e67..d275b4f65 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -13,6 +13,7 @@ ADD_SUBDIRECTORY(lb302) #ADD_SUBDIRECTORY(lb303) ADD_SUBDIRECTORY(midi_import) ADD_SUBDIRECTORY(monstro) +ADD_SUBDIRECTORY(nes) IF(NOT LMMS_BUILD_APPLE) ADD_SUBDIRECTORY(opl2) ENDIF() From 8b51e29467773d1227983002126a82b2266b0fa8 Mon Sep 17 00:00:00 2001 From: Vesa Date: Mon, 26 May 2014 03:25:15 +0300 Subject: [PATCH 2/3] New NES instrument --- plugins/nes/CMakeLists.txt | 3 + plugins/nes/Nes.cpp | 810 +++++++++++++++++++++++++++++++++++++ plugins/nes/Nes.h | 336 +++++++++++++++ plugins/nes/artwork.png | Bin 0 -> 104238 bytes plugins/nes/logo.png | Bin 0 -> 2458 bytes plugins/nes/nesdc1_on.png | Bin 0 -> 411 bytes plugins/nes/nesdc2_on.png | Bin 0 -> 393 bytes plugins/nes/nesdc3_on.png | Bin 0 -> 406 bytes plugins/nes/nesdc4_on.png | Bin 0 -> 434 bytes plugins/nes/nesdc_off.png | Bin 0 -> 418 bytes plugins/nes/nesled_off.png | Bin 0 -> 345 bytes plugins/nes/nesled_on.png | Bin 0 -> 638 bytes 12 files changed, 1149 insertions(+) create mode 100644 plugins/nes/CMakeLists.txt create mode 100644 plugins/nes/Nes.cpp create mode 100644 plugins/nes/Nes.h create mode 100644 plugins/nes/artwork.png create mode 100644 plugins/nes/logo.png create mode 100644 plugins/nes/nesdc1_on.png create mode 100644 plugins/nes/nesdc2_on.png create mode 100644 plugins/nes/nesdc3_on.png create mode 100644 plugins/nes/nesdc4_on.png create mode 100644 plugins/nes/nesdc_off.png create mode 100644 plugins/nes/nesled_off.png create mode 100644 plugins/nes/nesled_on.png diff --git a/plugins/nes/CMakeLists.txt b/plugins/nes/CMakeLists.txt new file mode 100644 index 000000000..b864f6125 --- /dev/null +++ b/plugins/nes/CMakeLists.txt @@ -0,0 +1,3 @@ +INCLUDE(BuildPlugin) + +BUILD_PLUGIN(nes Nes.cpp Nes.h MOCFILES Nes.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png") diff --git a/plugins/nes/Nes.cpp b/plugins/nes/Nes.cpp new file mode 100644 index 000000000..b26ab0983 --- /dev/null +++ b/plugins/nes/Nes.cpp @@ -0,0 +1,810 @@ +/* Nes.cpp - A NES instrument plugin for LMMS + * + * Copyright (c) 2014 Vesa Kivimäki + * Copyright (c) 2004-2014 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + + +#include + +#include "Nes.h" +#include "engine.h" +#include "InstrumentTrack.h" +#include "templates.h" +#include "tooltip.h" +#include "song.h" +#include "lmms_math.h" +#include "interpolation.h" +#include "Oscillator.h" + +#include "embed.cpp" + +extern "C" +{ + +Plugin::Descriptor PLUGIN_EXPORT nes_plugin_descriptor = +{ + STRINGIFY( PLUGIN_NAME ), + "Nescaline", + QT_TRANSLATE_NOOP( "pluginBrowser", + "A NES-like synthesizer" ), + "Vesa Kivimäki ", + 0x0100, + Plugin::Instrument, + new PluginPixmapLoader( "logo" ), + NULL, + NULL +} ; + +} + + +NesObject::NesObject( NesInstrument * nes, const sample_rate_t samplerate, NotePlayHandle * nph, fpp_t frames ) : + m_parent( nes ), + m_samplerate( samplerate ), + m_nph( nph ), + m_fpp( frames ) +{ + m_LFSR = LFSR_INIT; + + m_ch1Counter = 0; + m_ch2Counter = 0; + m_ch3Counter = 0; + m_ch4Counter = 0; + + m_ch1EnvCounter = 0; + m_ch2EnvCounter = 0; + m_ch4EnvCounter = 0; + + m_ch1EnvValue = 15; + m_ch2EnvValue = 15; + m_ch4EnvValue = 15; + + m_ch1SweepCounter = 0; + m_ch2SweepCounter = 0; + + m_12Last = 0.0f; + m_34Last = 0.0f; + + m_itm = 0.0f; + m_otm = 0.0f; + + m_lastNoteFreq = 0.0f; + + m_maxWlen = wavelength( MIN_FREQ ); + + m_nsf = NES_SIMPLE_FILTER * ( m_samplerate / 44100.0 ); +} + + +NesObject::~NesObject() +{ +} + + +void NesObject::renderOutput( sampleFrame * buf, fpp_t frames ) +{ + // check if frequency has changed, if so, update wavelengths of ch1-3 + if( m_nph->frequency() != m_lastNoteFreq ) + { + m_wlen1 = wavelength( m_nph->frequency() * m_parent->m_freq1 ); + m_wlen2 = wavelength( m_nph->frequency() * m_parent->m_freq2 ); + m_wlen3 = wavelength( m_nph->frequency() * m_parent->m_freq3 ); + } + // noise channel can use either note freq or preset freqs + if( m_parent->m_ch4NoiseFreqMode.value() ) + { + m_wlen4 = wavelength( m_nph->frequency() ); + } + else + { + m_wlen4 = wavelength( NOISE_FREQS[ 15 - static_cast( m_parent->m_ch4NoiseFreq.value() ) ] ); + } + + m_lastNoteFreq = m_nph->frequency(); + + //////////////////////////////// + // // + // variables for processing // + // // + //////////////////////////////// + + bool ch1Enabled = m_parent->m_ch1Enabled.value(); + bool ch2Enabled = m_parent->m_ch2Enabled.value(); + bool ch3Enabled = m_parent->m_ch3Enabled.value(); + bool ch4Enabled = m_parent->m_ch4Enabled.value(); + + float ch1DutyCycle = DUTY_CYCLE[ m_parent->m_ch1DutyCycle.value() ]; + int ch1EnvLen = wavelength( floorf( 240.0 / ( m_parent->m_ch1EnvLen.value() + 1 ) ) ); + bool ch1EnvLoop = m_parent->m_ch1EnvLooped.value(); + + float ch2DutyCycle = DUTY_CYCLE[ m_parent->m_ch2DutyCycle.value() ]; + int ch2EnvLen = wavelength( floorf( 240.0 / ( m_parent->m_ch2EnvLen.value() + 1 ) ) ); + bool ch2EnvLoop = m_parent->m_ch2EnvLooped.value(); + + int ch4EnvLen = wavelength( floorf( 240.0 / ( m_parent->m_ch4EnvLen.value() + 1 ) ) ); + bool ch4EnvLoop = m_parent->m_ch4EnvLooped.value(); + + int ch1; + int ch2; + int ch3; + int ch4; + + int ch1SweepRate = wavelength( floorf( 120.0 / ( m_parent->m_ch1SweepRate.value() + 1 ) ) ); + int ch2SweepRate = wavelength( floorf( 120.0 / ( m_parent->m_ch2SweepRate.value() + 1 ) ) ); + + int ch1Sweep = static_cast( m_parent->m_ch1SweepAmt.value() * -1.0 ); + int ch2Sweep = static_cast( m_parent->m_ch2SweepAmt.value() * -1.0 ); + + // the amounts are inverted so we correct them here + ch1Sweep = ch1Sweep > 0 + ? 7 - ch1Sweep + : -7 - ch1Sweep; + ch2Sweep = ch2Sweep > 0 + ? 7 - ch2Sweep + : -7 - ch2Sweep; + + + // start framebuffer loop + + for( f_cnt_t f = 0; f < frames; f++ ) + { + //////////////////////////////// + // // + // channel 1 // + // // + //////////////////////////////// + + // render pulse wave + if( m_wlen1 <= m_maxWlen && m_wlen1 >= MIN_WLEN && ch1Enabled ) + { + ch1 = m_ch1Counter > m_wlen1 * ch1DutyCycle + ? 0 + : m_parent->m_ch1EnvEnabled.value() + ? static_cast( ( m_parent->m_ch1Volume.value() * m_ch1EnvValue ) / 15.0 ) + : static_cast( m_parent->m_ch1Volume.value() ); + } + else ch1 = 0; + + // update sweep + m_ch1SweepCounter++; + if( m_ch1SweepCounter >= ch1SweepRate ) + { + m_ch1SweepCounter = 0; + if( m_parent->m_ch1SweepEnabled.value() && m_wlen1 <= m_maxWlen && m_wlen1 >= MIN_WLEN ) + { + // check if the sweep goes up or down + if( ch1Sweep > 0 ) + { + m_wlen1 += m_wlen1 >> qAbs( ch1Sweep ); + } + if( ch1Sweep < 0 ) + { + m_wlen1 -= m_wlen1 >> qAbs( ch1Sweep ); + m_wlen1--; // additional minus 1 for ch1 only + } + } + } + + // update framecounters + m_ch1Counter++; + m_ch1Counter = m_ch1Counter % m_wlen1; + + m_ch1EnvCounter++; + if( m_ch1EnvCounter >= ch1EnvLen ) + { + m_ch1EnvCounter = 0; + m_ch1EnvValue--; + if( m_ch1EnvValue < 0 ) + { + m_ch1EnvValue = ch1EnvLoop ? 15 : 0; + } + } + + + //////////////////////////////// + // // + // channel 2 // + // // + //////////////////////////////// + + // render pulse wave + if( m_wlen2 <= m_maxWlen && m_wlen2 >= MIN_WLEN && ch2Enabled ) + { + ch2 = m_ch2Counter > m_wlen2 * ch2DutyCycle + ? 0 + : m_parent->m_ch2EnvEnabled.value() + ? static_cast( ( m_parent->m_ch2Volume.value() * m_ch2EnvValue ) / 15.0 ) + : static_cast( m_parent->m_ch2Volume.value() ); + } + else ch2 = 0; + + // update sweep + m_ch2SweepCounter++; + if( m_ch2SweepCounter >= ch2SweepRate ) + { + m_ch2SweepCounter = 0; + if( m_parent->m_ch2SweepEnabled.value() && m_wlen2 <= m_maxWlen && m_wlen2 >= MIN_WLEN ) + { + // check if the sweep goes up or down + if( ch2Sweep > 0 ) + { + m_wlen2 += m_wlen2 >> qAbs( ch2Sweep ); + } + if( ch2Sweep < 0 ) + { + m_wlen2 -= m_wlen2 >> qAbs( ch2Sweep ); + } + } + } + + // update framecounters + m_ch2Counter++; + m_ch2Counter = m_ch2Counter % m_wlen2; + + m_ch2EnvCounter++; + if( m_ch2EnvCounter >= ch2EnvLen ) + { + m_ch2EnvCounter = 0; + m_ch2EnvValue--; + if( m_ch2EnvValue < 0 ) + { + m_ch2EnvValue = ch2EnvLoop + ? 15 + : 0; + } + } + + + //////////////////////////////// + // // + // channel 3 // + // // + //////////////////////////////// + + // make sure we don't overflow + m_ch3Counter %= m_wlen3; + + // render triangle wave + if( m_wlen3 <= m_maxWlen && ch3Enabled ) + { + ch3 = TRIANGLE_WAVETABLE[ ( m_ch3Counter * 32 ) / m_wlen3 ]; + ch3 = ( ch3 * static_cast( m_parent->m_ch3Volume.value() ) ) / 15; + } + else ch3 = 0; + + m_ch3Counter++; + + + //////////////////////////////// + // // + // channel 4 // + // // + //////////////////////////////// + + // render pseudo noise + if( ch4Enabled ) + { + ch4 = LFSR() + ? ( m_parent->m_ch4EnvEnabled.value() + ? ( static_cast( m_parent->m_ch4Volume.value() ) * m_ch4EnvValue ) / 15 + : static_cast( m_parent->m_ch4Volume.value() ) ) + : 0; + } + else ch4 = 0; + + // update framecounters + m_ch4Counter++; + if( m_ch4Counter >= m_wlen4 ) + { + m_ch4Counter = 0; + updateLFSR( m_parent->m_ch4NoiseMode.value() ); + } + m_ch4EnvCounter++; + if( m_ch4EnvCounter >= ch4EnvLen ) + { + m_ch4EnvCounter = 0; + m_ch4EnvValue--; + if( m_ch4EnvValue < 0 ) + { + m_ch4EnvValue = ch4EnvLoop + ? 15 + : 0; + } + } + + + //////////////////////////////// + // // + // final stage - mixing // + // // + //////////////////////////////// + + float ch12 = static_cast( ch1 + ch2 ); + // add dithering noise + ch12 *= 1.0 + ( Oscillator::noiseSample( 0.0f ) * DITHER_AMP ); + ch12 = ch12 / 15.0f - 1.0f; + + ch12 = signedPow( ch12, NES_DIST ); + + // simple first order iir filter, to simulate the frequency response falloff in nes analog audio output + ch12 = linearInterpolate( ch12, m_12Last, m_nsf ); + m_12Last = ch12; + + + ch12 *= NES_MIXING_12; + + + float ch34 = static_cast( ch3 + ch4 ); + // add dithering noise + ch34 *= 1.0 + ( Oscillator::noiseSample( 0.0f ) * DITHER_AMP ); + ch34 = ch34 / 15.0f - 1.0f; + + ch34 = signedPow( ch34, NES_DIST ); + + // simple first order iir filter, to simulate the frequency response falloff in nes analog audio output + ch34 = linearInterpolate( ch34, m_34Last, m_nsf ); + m_34Last = ch34; + + + ch34 *= NES_MIXING_34; + + float mixdown = ( ch12 + ch34 ) * NES_MIXING_ALL * m_parent->m_masterVol.value(); + + // dc offset removal + m_otm = 0.999f * m_otm + mixdown - m_itm; + m_itm = mixdown; + buf[f][0] = m_otm; + buf[f][1] = m_otm; + + } // end framebuffer loop + +} + + +NesInstrument::NesInstrument( InstrumentTrack * instrumentTrack ) : + Instrument( instrumentTrack, &nes_plugin_descriptor ), + m_ch1Enabled( true, this ), + m_ch1Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 1 Coarse detune" ) ), + m_ch1Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 1 Volume" ) ), + + m_ch1EnvEnabled( false, this ), + m_ch1EnvLooped( false, this ), + m_ch1EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 1 Envelope length" ) ), + + m_ch1DutyCycle( 0, 0, 3, this, tr( "Channel 1 Duty cycle" ) ), + + m_ch1SweepEnabled( false, this ), + m_ch1SweepAmt( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 1 Sweep amount" ) ), + m_ch1SweepRate( 0.f, 0.f, 7.f, 1.f, this, tr( "Channel 1 Sweep rate" ) ), + + m_ch2Enabled( true, this ), + m_ch2Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 2 Coarse detune" ) ), + m_ch2Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 2 Volume" ) ), + + m_ch2EnvEnabled( false, this ), + m_ch2EnvLooped( false, this ), + m_ch2EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 2 Envelope length" ) ), + + m_ch2DutyCycle( 2, 0, 3, this, tr( "Channel 2 Duty cycle" ) ), + + m_ch2SweepEnabled( false, this ), + m_ch2SweepAmt( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 2 Sweep amount" ) ), + m_ch2SweepRate( 0.f, 0.f, 7.f, 1.f, this, tr( "Channel 2 Sweep rate" ) ), + + //channel 3 + m_ch3Enabled( true, this ), + m_ch3Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 3 Coarse detune" ) ), + m_ch3Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 3 Volume" ) ), + + //channel 4 + m_ch4Enabled( true, this ), + m_ch4Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 Volume" ) ), + + m_ch4EnvEnabled( false, this ), + m_ch4EnvLooped( false, this ), + m_ch4EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 Envelope length" ) ), + + m_ch4NoiseMode( false, this ), + m_ch4NoiseFreqMode( false, this ), + m_ch4NoiseFreq( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 Noise frequency" ) ), + + //master + m_masterVol( 1.0f, 0.0f, 2.0f, 0.01f, this, tr( "Master volume" ) ), + m_vibrato( 0.0f, 0.0f, 15.0f, 1.0f, this, tr( "Vibrato (unimplemented)" ) ) +{ + connect( &m_ch1Crs, SIGNAL( dataChanged() ), this, SLOT( updateFreq1() ) ); + connect( &m_ch2Crs, SIGNAL( dataChanged() ), this, SLOT( updateFreq2() ) ); + connect( &m_ch3Crs, SIGNAL( dataChanged() ), this, SLOT( updateFreq3() ) ); + + updateFreq1(); + updateFreq2(); + updateFreq3(); +} + + + +NesInstrument::~NesInstrument() +{ +} + + +void NesInstrument::playNote( NotePlayHandle * n, sampleFrame * workingBuffer ) +{ + if ( n->totalFramesPlayed() == 0 || n->m_pluginData == NULL ) + { + NesObject * nes = new NesObject( this, engine::mixer()->processingSampleRate(), n, engine::mixer()->framesPerPeriod() ); + n->m_pluginData = nes; + } + + const fpp_t frames = n->framesLeftForCurrentPeriod(); + + NesObject * nes = static_cast( n->m_pluginData ); + + nes->renderOutput( workingBuffer, frames ); + + applyRelease( workingBuffer, n ); + + instrumentTrack()->processAudioBuffer( workingBuffer, frames, n ); +} + + +void NesInstrument::deleteNotePluginData( NotePlayHandle * n ) +{ + delete static_cast( n->m_pluginData ); +} + + +void NesInstrument::saveSettings( QDomDocument & doc, QDomElement & element ) +{ + m_ch1Enabled.saveSettings( doc, element, "on1" ); + m_ch1Crs.saveSettings( doc, element, "crs1" ); + m_ch1Volume.saveSettings( doc, element, "vol1" ); + + m_ch1EnvEnabled.saveSettings( doc, element, "envon1" ); + m_ch1EnvLooped.saveSettings( doc, element, "envloop1" ); + m_ch1EnvLen.saveSettings( doc, element, "envlen1" ); + + m_ch1DutyCycle.saveSettings( doc, element, "dc1" ); + + m_ch1SweepEnabled.saveSettings( doc, element, "sweep1" ); + m_ch1SweepAmt.saveSettings( doc, element, "swamt1" ); + m_ch1SweepRate.saveSettings( doc, element, "swrate1" ); + + // channel 2 + m_ch2Enabled.saveSettings( doc, element, "on2" ); + m_ch2Crs.saveSettings( doc, element, "crs2" ); + m_ch2Volume.saveSettings( doc, element, "vol2" ); + + m_ch2EnvEnabled.saveSettings( doc, element, "envon2" ); + m_ch2EnvLooped.saveSettings( doc, element, "envloop2" ); + m_ch2EnvLen.saveSettings( doc, element, "envlen2" ); + + m_ch2DutyCycle.saveSettings( doc, element, "dc2" ); + + m_ch2SweepEnabled.saveSettings( doc, element, "sweep2" ); + m_ch2SweepAmt.saveSettings( doc, element, "swamt2" ); + m_ch2SweepRate.saveSettings( doc, element, "swrate2" ); + + //channel 3 + m_ch3Enabled.saveSettings( doc, element, "on3" ); + m_ch3Crs.saveSettings( doc, element, "crs3" ); + m_ch3Volume.saveSettings( doc, element, "vol3" ); + + //channel 4 + m_ch4Enabled.saveSettings( doc, element, "on4" ); + m_ch4Volume.saveSettings( doc, element, "vol4" ); + + m_ch4EnvEnabled.saveSettings( doc, element, "envon4" ); + m_ch4EnvLooped.saveSettings( doc, element, "envloop4" ); + m_ch4EnvLen.saveSettings( doc, element, "envlen4" ); + + m_ch4NoiseMode.saveSettings( doc, element, "nmode4" ); + m_ch4NoiseFreqMode.saveSettings( doc, element, "nfrqmode4" ); + m_ch4NoiseFreq.saveSettings( doc, element, "nfreq4" ); + + //master + m_masterVol.saveSettings( doc, element, "vol" ); + m_vibrato.saveSettings( doc, element, "vibr" ); +} + + +void NesInstrument::loadSettings( const QDomElement & element ) +{ + m_ch1Enabled.loadSettings( element, "on1" ); + m_ch1Crs.loadSettings( element, "crs1" ); + m_ch1Volume.loadSettings( element, "vol1" ); + + m_ch1EnvEnabled.loadSettings( element, "envon1" ); + m_ch1EnvLooped.loadSettings( element, "envloop1" ); + m_ch1EnvLen.loadSettings( element, "envlen1" ); + + m_ch1DutyCycle.loadSettings( element, "dc1" ); + + m_ch1SweepEnabled.loadSettings( element, "sweep1" ); + m_ch1SweepAmt.loadSettings( element, "swamt1" ); + m_ch1SweepRate.loadSettings( element, "swrate1" ); + + // channel 2 + m_ch2Enabled.loadSettings( element, "on2" ); + m_ch2Crs.loadSettings( element, "crs2" ); + m_ch2Volume.loadSettings( element, "vol2" ); + + m_ch2EnvEnabled.loadSettings( element, "envon2" ); + m_ch2EnvLooped.loadSettings( element, "envloop2" ); + m_ch2EnvLen.loadSettings( element, "envlen2" ); + + m_ch2DutyCycle.loadSettings( element, "dc2" ); + + m_ch2SweepEnabled.loadSettings( element, "sweep2" ); + m_ch2SweepAmt.loadSettings( element, "swamt2" ); + m_ch2SweepRate.loadSettings( element, "swrate2" ); + + //channel 3 + m_ch3Enabled.loadSettings( element, "on3" ); + m_ch3Crs.loadSettings( element, "crs3" ); + m_ch3Volume.loadSettings( element, "vol3" ); + + //channel 4 + m_ch4Enabled.loadSettings( element, "on4" ); + m_ch4Volume.loadSettings( element, "vol4" ); + + m_ch4EnvEnabled.loadSettings( element, "envon4" ); + m_ch4EnvLooped.loadSettings( element, "envloop4" ); + m_ch4EnvLen.loadSettings( element, "envlen4" ); + + m_ch4NoiseMode.loadSettings( element, "nmode4" ); + m_ch4NoiseFreqMode.loadSettings( element, "nfrqmode4" ); + m_ch4NoiseFreq.loadSettings( element, "nfreq4" ); + + //master + m_masterVol.loadSettings( element, "vol" ); + m_vibrato.loadSettings( element, "vibr" ); +} + + +QString NesInstrument::nodeName() const +{ + return( nes_plugin_descriptor.name ); +} + + +PluginView * NesInstrument::instantiateView( QWidget * parent ) +{ + return( new NesInstrumentView( this, parent ) ); +} + + + +void NesInstrument::updateFreq1() +{ + m_freq1 = powf( 2, m_ch1Crs.value() / 12.0f ); +} + + +void NesInstrument::updateFreq2() +{ + m_freq2 = powf( 2, m_ch2Crs.value() / 12.0f ); +} + + +void NesInstrument::updateFreq3() +{ + m_freq3 = powf( 2, m_ch3Crs.value() / 12.0f ); +} + + + + +QPixmap * NesInstrumentView::s_artwork = NULL; + + +NesInstrumentView::NesInstrumentView( Instrument * instrument, QWidget * parent ) : + InstrumentView( instrument, parent ) +{ + setAutoFillBackground( true ); + QPalette pal; + + if( s_artwork == NULL ) + { + s_artwork = new QPixmap( PLUGIN_NAME::getIconPixmap( "artwork" ) ); + } + + pal.setBrush( backgroundRole(), *s_artwork ); + setPalette( pal ); + + const int KNOB_Y1 = 24; + const int KNOB_Y2 = 81; + const int KNOB_Y3 = 138; + const int KNOB_Y4 = 195; + + const int KNOB_X1 = 12; + const int KNOB_X2 = 46; + const int KNOB_X3 = 84; + const int KNOB_X4 = 117; + const int KNOB_X5 = 151; + const int KNOB_X6 = 172; + const int KNOB_X7 = 206; + + // channel 1 + + makeknob( m_ch1VolumeKnob, KNOB_X1, KNOB_Y1, "Volume", "", "" ) + makeknob( m_ch1CrsKnob, KNOB_X2, KNOB_Y1, "Coarse detune", "", "" ) + makeknob( m_ch1EnvLenKnob, KNOB_X3, KNOB_Y1, "Envelope length", "", "" ) + + makenesled( m_ch1EnabledBtn, KNOB_X1, KNOB_Y1 - 12, "Enable channel 1" ) + makenesled( m_ch1EnvEnabledBtn, KNOB_X3, KNOB_Y1 - 12, "Enable envelope 1" ) + makenesled( m_ch1EnvLoopedBtn, 129, KNOB_Y1 - 12, "Enable envelope 1 loop" ) + + makenesled( m_ch1SweepEnabledBtn, KNOB_X6, KNOB_Y1 - 12, "Enable sweep 1" ) + makeknob( m_ch1SweepAmtKnob, KNOB_X6, KNOB_Y1, "Sweep amount", "", "" ) + makeknob( m_ch1SweepRateKnob, KNOB_X7, KNOB_Y1, "Sweep rate", "", "" ) + + int dcx = 117; + makedcled( ch1_dc1, dcx, 42, "12.5% Duty cycle", "nesdc1_on" ) + dcx += 13; + makedcled( ch1_dc2, dcx, 42, "25% Duty cycle", "nesdc2_on" ) + dcx += 13; + makedcled( ch1_dc3, dcx, 42, "50% Duty cycle", "nesdc3_on" ) + dcx += 13; + makedcled( ch1_dc4, dcx, 42, "75% Duty cycle", "nesdc4_on" ) + + m_ch1DutyCycleGrp = new automatableButtonGroup( this ); + m_ch1DutyCycleGrp -> addButton( ch1_dc1 ); + m_ch1DutyCycleGrp -> addButton( ch1_dc2 ); + m_ch1DutyCycleGrp -> addButton( ch1_dc3 ); + m_ch1DutyCycleGrp -> addButton( ch1_dc4 ); + + + + // channel 2 + + makeknob( m_ch2VolumeKnob, KNOB_X1, KNOB_Y2, "Volume", "", "" ) + makeknob( m_ch2CrsKnob, KNOB_X2, KNOB_Y2, "Coarse detune", "", "" ) + makeknob( m_ch2EnvLenKnob, KNOB_X3, KNOB_Y2, "Envelope length", "", "" ) + + makenesled( m_ch2EnabledBtn, KNOB_X1, KNOB_Y2 - 12, "Enable channel 2" ) + makenesled( m_ch2EnvEnabledBtn, KNOB_X3, KNOB_Y2 - 12, "Enable envelope 2" ) + makenesled( m_ch2EnvLoopedBtn, 129, KNOB_Y2 - 12, "Enable envelope 2 loop" ) + + makenesled( m_ch2SweepEnabledBtn, KNOB_X6, KNOB_Y2 - 12, "Enable sweep 2" ) + makeknob( m_ch2SweepAmtKnob, KNOB_X6, KNOB_Y2, "Sweep amount", "", "" ) + makeknob( m_ch2SweepRateKnob, KNOB_X7, KNOB_Y2, "Sweep rate", "", "" ) + + dcx = 117; + makedcled( ch2_dc1, dcx, 99, "12.5% Duty cycle", "nesdc1_on" ) + dcx += 13; + makedcled( ch2_dc2, dcx, 99, "25% Duty cycle", "nesdc2_on" ) + dcx += 13; + makedcled( ch2_dc3, dcx, 99, "50% Duty cycle", "nesdc3_on" ) + dcx += 13; + makedcled( ch2_dc4, dcx, 99, "75% Duty cycle", "nesdc4_on" ) + + m_ch2DutyCycleGrp = new automatableButtonGroup( this ); + m_ch2DutyCycleGrp -> addButton( ch2_dc1 ); + m_ch2DutyCycleGrp -> addButton( ch2_dc2 ); + m_ch2DutyCycleGrp -> addButton( ch2_dc3 ); + m_ch2DutyCycleGrp -> addButton( ch2_dc4 ); + + + + //channel 3 + makenesled( m_ch3EnabledBtn, KNOB_X1, KNOB_Y3 - 12, "Enable channel 3" ) + makeknob( m_ch3VolumeKnob, KNOB_X1, KNOB_Y3, "Volume", "", "" ) + makeknob( m_ch3CrsKnob, KNOB_X2, KNOB_Y3, "Coarse detune", "", "" ) + + + //channel 4 + makeknob( m_ch4VolumeKnob, KNOB_X1, KNOB_Y4, "Volume", "", "" ) + makeknob( m_ch4NoiseFreqKnob, KNOB_X2, KNOB_Y4, "Noise Frequency", "", "" ) + makeknob( m_ch4EnvLenKnob, KNOB_X3, KNOB_Y4, "Envelope length", "", "" ) + + makenesled( m_ch4EnabledBtn, KNOB_X1, KNOB_Y4 - 12, "Enable channel 4" ) + makenesled( m_ch4EnvEnabledBtn, KNOB_X3, KNOB_Y4 - 12, "Enable envelope 4" ) + makenesled( m_ch4EnvLoopedBtn, 129, KNOB_Y4 - 12, "Enable envelope 4 loop" ) + + makenesled( m_ch4NoiseModeBtn, 129, 203, "Noise mode" ) + makenesled( m_ch4NoiseFreqModeBtn, 129, 224, "Use note frequency for noise" ) + + + //master + makeknob( m_masterVolKnob, KNOB_X4, KNOB_Y3, "Master Volume", "", "" ) + makeknob( m_vibratoKnob, KNOB_X5, KNOB_Y3, "Vibrato (unimplemented)", "", "" ) + +} + + + +NesInstrumentView::~NesInstrumentView() +{ +} + + +void NesInstrumentView::modelChanged() +{ + NesInstrument * nes = castModel(); + + m_ch1EnabledBtn->setModel( &nes->m_ch1Enabled ); + m_ch1CrsKnob->setModel( &nes->m_ch1Crs ); + m_ch1VolumeKnob->setModel( &nes->m_ch1Volume ); + + m_ch1EnvEnabledBtn->setModel( &nes->m_ch1EnvEnabled ); + m_ch1EnvLoopedBtn->setModel( &nes->m_ch1EnvLooped ); + m_ch1EnvLenKnob->setModel( &nes->m_ch1EnvLen ); + + m_ch1DutyCycleGrp->setModel( &nes->m_ch1DutyCycle ); + + m_ch1SweepEnabledBtn->setModel( &nes->m_ch1SweepEnabled ); + m_ch1SweepAmtKnob->setModel( &nes->m_ch1SweepAmt ); + m_ch1SweepRateKnob->setModel( &nes->m_ch1SweepRate ); + + // channel 2 + m_ch2EnabledBtn->setModel( &nes->m_ch2Enabled ); + m_ch2CrsKnob->setModel( &nes->m_ch2Crs ); + m_ch2VolumeKnob->setModel( &nes->m_ch2Volume ); + + m_ch2EnvEnabledBtn->setModel( &nes->m_ch2EnvEnabled ); + m_ch2EnvLoopedBtn->setModel( &nes->m_ch2EnvLooped ); + m_ch2EnvLenKnob->setModel( &nes->m_ch2EnvLen ); + + m_ch2DutyCycleGrp->setModel( &nes->m_ch2DutyCycle ); + + m_ch2SweepEnabledBtn->setModel( &nes->m_ch2SweepEnabled ); + m_ch2SweepAmtKnob->setModel( &nes->m_ch2SweepAmt ); + m_ch2SweepRateKnob->setModel( &nes->m_ch2SweepRate ); + + //channel 3 + m_ch3EnabledBtn->setModel( &nes->m_ch3Enabled ); + m_ch3CrsKnob->setModel( &nes->m_ch3Crs ); + m_ch3VolumeKnob->setModel( &nes->m_ch3Volume ); + + //channel 4 + m_ch4EnabledBtn->setModel( &nes->m_ch4Enabled ); + m_ch4VolumeKnob->setModel( &nes->m_ch4Volume ); + + m_ch4EnvEnabledBtn->setModel( &nes->m_ch4EnvEnabled ); + m_ch4EnvLoopedBtn->setModel( &nes->m_ch4EnvLooped ); + m_ch4EnvLenKnob->setModel( &nes->m_ch4EnvLen ); + + m_ch4NoiseModeBtn->setModel( &nes->m_ch4NoiseMode ); + m_ch4NoiseFreqModeBtn->setModel( &nes->m_ch4NoiseFreqMode ); + m_ch4NoiseFreqKnob->setModel( &nes->m_ch4NoiseFreq ); + + //master + m_masterVolKnob->setModel( &nes->m_masterVol ); + m_vibratoKnob->setModel( &nes->m_vibrato ); +} + + +extern "C" +{ + +// necessary for getting instance out of shared lib +Plugin * PLUGIN_EXPORT lmms_plugin_main( Model *, void * _data ) +{ + return( new NesInstrument( static_cast( _data ) ) ); +} + + +} + + +#include "moc_Nes.cxx" diff --git a/plugins/nes/Nes.h b/plugins/nes/Nes.h new file mode 100644 index 000000000..7a58ead18 --- /dev/null +++ b/plugins/nes/Nes.h @@ -0,0 +1,336 @@ +/* Nes.h - A NES instrument plugin for LMMS + * + * Copyright (c) 2014 Vesa Kivimäki + * Copyright (c) 2004-2014 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#ifndef NES_H +#define NES_H + +#include "Instrument.h" +#include "InstrumentView.h" +#include "AutomatableModel.h" +#include "automatable_button.h" +#include "TempoSyncKnob.h" +#include "NotePlayHandle.h" +#include "pixmap_button.h" + + +#define makeknob( name, x, y, hint, unit, oname ) \ + name = new knob( knobStyled, this ); \ + name ->move( x, y ); \ + name ->setHintText( tr( hint ) + " ", unit ); \ + name ->setObjectName( oname ); \ + name ->setFixedSize( 29, 29 ); + +#define makenesled( name, x, y, ttip ) \ + name = new pixmapButton( this, NULL ); \ + name -> setCheckable( true ); \ + name -> move( x, y ); \ + name -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "nesled_on" ) ); \ + name -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "nesled_off" ) ); \ + toolTip::add( name, tr( ttip ) ); + +#define makedcled( name, x, y, ttip, active ) \ + pixmapButton * name = new pixmapButton( this, NULL ); \ + name -> move( x, y ); \ + name -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( active ) ); \ + name -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "nesdc_off" ) ); \ + toolTip::add( name, tr( ttip ) ); + +const float NES_SIMPLE_FILTER = 1.0 / 20.0; // simulate nes analog audio output +const float NFB = 895000.0f; +const float NOISE_FREQS[16] = + { NFB/5, NFB/9, NFB/17, NFB/33, NFB/65, NFB/97, NFB/129, NFB/161, NFB/193, NFB/255, NFB/381, NFB/509, NFB/763, NFB/1017, NFB/2035, NFB/4069 }; +const uint16_t LFSR_INIT = 1; +const float DUTY_CYCLE[4] = { 0.125, 0.25, 0.5, 0.75 }; +const float DITHER_AMP = 1.0 / 60.0; +const float MIN_FREQ = 20.0; +const int TRIANGLE_WAVETABLE[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; + +const float NES_DIST = 0.9f; // simulate the slight nonlinear distortion in nes audio output + +const float NES_MIXING_12 = 1.0 / 20.0; +const float NES_MIXING_34 = 1.0 / 12.0; +const float NES_MIXING_ALL = 1.0 / ( NES_MIXING_12 + NES_MIXING_34 ); // constants to simulate the hardwired mixing values for nes channels + +const int MIN_WLEN = 8; + + +class NesInstrument; + +class NesObject +{ +public: + NesObject( NesInstrument * nes, const sample_rate_t samplerate, NotePlayHandle * nph, fpp_t frames ); + virtual ~NesObject(); + + void renderOutput( sampleFrame * buf, fpp_t frames ); + + void updateLFSR( bool mode ) + { + uint16_t LFSRx; + if( mode ) + { + LFSRx = m_LFSR & ( 1 << 8 ); // get bit 13 + LFSRx <<= 6; // shit to left so it overlaps with bit 14 + } + else + { + LFSRx = m_LFSR & ( 1 << 13 ); // get bit 13 + LFSRx <<= 1; // shit to left so it overlaps with bit 14 + } + m_LFSR ^= LFSRx; // xor bit 14 with bit 8/13 depending on mode + m_LFSR <<= 1; // shift bit 14 to bit 15 + + // cycle bit 14 to 0 + if( m_LFSR & ( 1 << 15 ) ) // if bit 15 is set + { + m_LFSR++; // set bit 0 - we know it to be 0 because of the left shift so we can just inc here + } + } + + inline bool LFSR() // returns true if bit 14 is set + { + if( m_LFSR & ( 1 << 14 ) ) + { + return true; + } + return false; + } + + inline int wavelength( float freq ) + { + return static_cast( m_samplerate / freq ); + } + + inline float signedPow( float f, float e ) + { + return f < 0 + ? powf( qAbs( f ), e ) * -1.0f + : powf( f, e ); + } + +private: + NesInstrument * m_parent; + const sample_rate_t m_samplerate; + NotePlayHandle * m_nph; + fpp_t m_fpp; + + int m_ch1Counter; + int m_ch2Counter; + int m_ch3Counter; + int m_ch4Counter; + + int m_ch1EnvCounter; + int m_ch2EnvCounter; + int m_ch4EnvCounter; + + int m_ch1EnvValue; + int m_ch2EnvValue; + int m_ch4EnvValue; + + int m_ch1SweepCounter; + int m_ch2SweepCounter; + + uint16_t m_LFSR; + + float m_12Last; + float m_34Last; + + float m_itm; + float m_otm; + + float m_lastNoteFreq; + + int m_maxWlen; + + float m_nsf; + +// wavelengths + int m_wlen1; + int m_wlen2; + int m_wlen3; + int m_wlen4; +}; + + +class NesInstrument : public Instrument +{ + Q_OBJECT +public: + NesInstrument( InstrumentTrack * instrumentTrack ); + virtual ~NesInstrument(); + + virtual void playNote( NotePlayHandle * n, + sampleFrame * workingBuffer ); + virtual void deleteNotePluginData( NotePlayHandle * n ); + + + virtual void saveSettings( QDomDocument & doc, + QDomElement & element ); + virtual void loadSettings( const QDomElement & element ); + + virtual QString nodeName() const; + + virtual f_cnt_t desiredReleaseFrames() const + { + return( 64 ); + } + + virtual PluginView * instantiateView( QWidget * parent ); + +public slots: + void updateFreq1(); + void updateFreq2(); + void updateFreq3(); + +protected: + //freq helpers + float m_freq1; + float m_freq2; + float m_freq3; + +private: + // channel 1 + BoolModel m_ch1Enabled; + FloatModel m_ch1Crs; + FloatModel m_ch1Volume; + + BoolModel m_ch1EnvEnabled; + BoolModel m_ch1EnvLooped; + FloatModel m_ch1EnvLen; + + IntModel m_ch1DutyCycle; + + BoolModel m_ch1SweepEnabled; + FloatModel m_ch1SweepAmt; + FloatModel m_ch1SweepRate; + + // channel 2 + BoolModel m_ch2Enabled; + FloatModel m_ch2Crs; + FloatModel m_ch2Volume; + + BoolModel m_ch2EnvEnabled; + BoolModel m_ch2EnvLooped; + FloatModel m_ch2EnvLen; + + IntModel m_ch2DutyCycle; + + BoolModel m_ch2SweepEnabled; + FloatModel m_ch2SweepAmt; + FloatModel m_ch2SweepRate; + + //channel 3 + BoolModel m_ch3Enabled; + FloatModel m_ch3Crs; + FloatModel m_ch3Volume; + + //channel 4 + BoolModel m_ch4Enabled; + FloatModel m_ch4Volume; + + BoolModel m_ch4EnvEnabled; + BoolModel m_ch4EnvLooped; + FloatModel m_ch4EnvLen; + + BoolModel m_ch4NoiseMode; + BoolModel m_ch4NoiseFreqMode; + FloatModel m_ch4NoiseFreq; + + //master + FloatModel m_masterVol; + FloatModel m_vibrato; + + + friend class NesObject; + friend class NesInstrumentView; +}; + + +class NesInstrumentView : public InstrumentView +{ + Q_OBJECT +public: + NesInstrumentView( Instrument * instrument, + QWidget * parent ); + virtual ~NesInstrumentView(); + +private: + virtual void modelChanged(); + + // channel 1 + pixmapButton * m_ch1EnabledBtn; + knob * m_ch1CrsKnob; + knob * m_ch1VolumeKnob; + + pixmapButton * m_ch1EnvEnabledBtn; + pixmapButton * m_ch1EnvLoopedBtn; + knob * m_ch1EnvLenKnob; + + automatableButtonGroup * m_ch1DutyCycleGrp; + + pixmapButton * m_ch1SweepEnabledBtn; + knob * m_ch1SweepAmtKnob; + knob * m_ch1SweepRateKnob; + + // channel 2 + pixmapButton * m_ch2EnabledBtn; + knob * m_ch2CrsKnob; + knob * m_ch2VolumeKnob; + + pixmapButton * m_ch2EnvEnabledBtn; + pixmapButton * m_ch2EnvLoopedBtn; + knob * m_ch2EnvLenKnob; + + automatableButtonGroup * m_ch2DutyCycleGrp; + + pixmapButton * m_ch2SweepEnabledBtn; + knob * m_ch2SweepAmtKnob; + knob * m_ch2SweepRateKnob; + + //channel 3 + pixmapButton * m_ch3EnabledBtn; + knob * m_ch3CrsKnob; + knob * m_ch3VolumeKnob; + + //channel 4 + pixmapButton * m_ch4EnabledBtn; + knob * m_ch4VolumeKnob; + + pixmapButton * m_ch4EnvEnabledBtn; + pixmapButton * m_ch4EnvLoopedBtn; + knob * m_ch4EnvLenKnob; + + pixmapButton * m_ch4NoiseModeBtn; + pixmapButton * m_ch4NoiseFreqModeBtn; + knob * m_ch4NoiseFreqKnob; + + //master + knob * m_masterVolKnob; + knob * m_vibratoKnob; + + static QPixmap * s_artwork; +}; + +#endif diff --git a/plugins/nes/artwork.png b/plugins/nes/artwork.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7dc4abbc4679d5e4645a5e399f1dceeda1e310 GIT binary patch literal 104238 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%0Dy6uhG*2S{&StSX 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 SAe?&u0000e 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 Bp@{$h literal 0 HcmV?d00001 diff --git a/plugins/nes/nesdc2_on.png b/plugins/nes/nesdc2_on.png new file mode 100644 index 0000000000000000000000000000000000000000..6dbb38c41fef6f745c66e48eb4ad070631554247 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3HE7boT!OQfx`y?k+$Y2!1;6t_M<_1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqtE8ZXj^(Dvqd+0a64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4)o-U3d5|@1^p6r!oEGIBzTm7qe|uuDN?ct}!u!Q_ zt|iU6`}gnrR<>J_^G{o$zeZ zaz$>VljfnVap&1DAH8TFAo`7~WA&x5;L^@W&$NY~3zcM3L`{-JFMUJ&0M(tdiPfGY~7Hlnuk&XVneR>-;lLs z|NHCL*?Y71nrG`Sr z@>$WelHWZ+P-ZiG-iw|2FW4IL(yk_dQ8;5@{AN!3`{sS`XTMV0^dVw}WwK40@nJjJ zJ3YT;zSPF1uzB-tPSRiR25s6CJA_2+pv4*j5*R se}!y_{qfG4S0aRvrPDNh&25Q)p76L*(}I10GDFZpgGpy!$3%%H*36ks)*`D24K z!;C|h-(~$Wm++T}czR`R@v5vpzdlvUAGbck6Pnt?=ukd+rVEQ;V@RCc-yc6s>g?^_ zWlpa231JmXeZTA#%bmF$2WmIk>V13ou+dWec;SIL3%Kr1@N`YcYO&O6;{TbZ)HJj4 zCg&N>P=*ZiRZdeClsaCyN53;*V`o0rz+2L2{qh{w@w<_AtJYo*FEfuldWIqJhOe7Y zep-3@+Sc~u?Z4-)IizeD?9#H=Jk-@?f?#?T%RaHP-Lah!H+;?xXNnG8(2NwGT1b0{`^Dun77a}@oLQCn#zu)DL-G82*=JU+3(EQAt z&v#1V9nzFK&m5hpw9nSo@c9!9z8S)I67yFqQa!}%`Y7#*!J#u99349vEEh^M+?Ot2 zeA~eI%-o2X25jui#~Orh@XicT^Y%>J^yyN>`}cFIH}9UQYS3OBto0@HoX@qWC6jj8 z%Y~S)R61m6eD3p--4k6r!*{u?bG`H4Tt(3M!^0T|?GnE)D_2$xTBy2e(vG|GE*%Bw zI}&@&OZmQEwt9lzhXjG`+s&08MIC&z|M9=M;h{C9&#%AMmjAor#PX-*Zwi1x$KdJe K=d#Wzp$P!>9H)B# literal 0 HcmV?d00001 diff --git a/plugins/nes/nesled_off.png b/plugins/nes/nesled_off.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe4d0bd06783d5e68d56c55079c9f9ff0f9027a GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3HFQ8hUO4DYhhUcNd1eKo*0bNI6J^v%n*= zn1O*?7=#%aX3dcR3bL1Y`ns~;W0e#XQa+Z}Q3Di`EOCt}an8@pP0cG|a4t$sEJ;mK zD9ByC1*vI265jC-WlDDM=-k=jZsjXRTc#;i>sB>w<&*;b-SI>3BHh?p3j| kwR=%v5qM_85&JjN59^vre zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00HJnL_t(2&jrCbuGByf2H?M{ z7n^zZEDy1W^a&EU0OD4J5OD=UPC$x?kqEd12?0n1AZD?9ymVD}@qP3KXkCn((D%LX zx`W@`+q>BI9DEB9%*s-;jAdEQa=o53r7;h~L3O zJ{q!s0R$i6n+OoWN`ci1Geb3lsiMMAnK7%v+jYX{*KhIa#dAD)^cX^bs=|mMswgQT z&oj=)BaXv>pDE$xyEpKbGoC$sfTwqNh_|>AON%!_|*)*|Ng<@#}72#$=Ev9c38LlCEc+rsT^!UnO`05l}%@gxoX}2Tx!IN?A+JN$2^Z*L2R~IBH7M Yf4#jmIYv)w4*&oF07*qoM6N<$f=_G^&j0`b literal 0 HcmV?d00001 From 750be17b561acb4c09cc8b9414c50b3cba8e8724 Mon Sep 17 00:00:00 2001 From: Vesa Date: Mon, 26 May 2014 05:46:53 +0300 Subject: [PATCH 3/3] Nes: fix sweep --- plugins/nes/Nes.cpp | 23 +++++++++++++++++------ plugins/nes/Nes.h | 4 ++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/plugins/nes/Nes.cpp b/plugins/nes/Nes.cpp index b26ab0983..a4de6d99d 100644 --- a/plugins/nes/Nes.cpp +++ b/plugins/nes/Nes.cpp @@ -155,12 +155,23 @@ void NesObject::renderOutput( sampleFrame * buf, fpp_t frames ) int ch2Sweep = static_cast( m_parent->m_ch2SweepAmt.value() * -1.0 ); // the amounts are inverted so we correct them here - ch1Sweep = ch1Sweep > 0 - ? 7 - ch1Sweep - : -7 - ch1Sweep; - ch2Sweep = ch2Sweep > 0 - ? 7 - ch2Sweep - : -7 - ch2Sweep; + if( ch1Sweep > 0 ) + { + ch1Sweep = 8 - ch1Sweep; + } + if( ch1Sweep < 0 ) + { + ch1Sweep = -8 - ch1Sweep; + } + + if( ch2Sweep > 0 ) + { + ch2Sweep = 8 - ch2Sweep; + } + if( ch2Sweep < 0 ) + { + ch2Sweep = -8 - ch2Sweep; + } // start framebuffer loop diff --git a/plugins/nes/Nes.h b/plugins/nes/Nes.h index 7a58ead18..19a669e19 100644 --- a/plugins/nes/Nes.h +++ b/plugins/nes/Nes.h @@ -63,7 +63,7 @@ const float NOISE_FREQS[16] = const uint16_t LFSR_INIT = 1; const float DUTY_CYCLE[4] = { 0.125, 0.25, 0.5, 0.75 }; const float DITHER_AMP = 1.0 / 60.0; -const float MIN_FREQ = 20.0; +const float MIN_FREQ = 10.0; const int TRIANGLE_WAVETABLE[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; @@ -194,7 +194,7 @@ public: virtual f_cnt_t desiredReleaseFrames() const { - return( 64 ); + return( 8 ); } virtual PluginView * instantiateView( QWidget * parent );