Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fx full by @jnonis #795

Draft
wants to merge 27 commits into
base: fx-full
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0a25ede
Squashed commit of the following:
jnonis Nov 24, 2024
47de8fb
Updated FX branch for lastest changes
jnonis Dec 26, 2024
c9fa7b5
Added "As Played" velocity to Midi Arp
jnonis Dec 26, 2024
ec83753
Reduce Mverb FX memory usage to avoid issues
jnonis Dec 27, 2024
cc5acfb
Added configuration for buttons debounce time
jnonis Dec 27, 2024
427b30b
FX Code clean up
jnonis Dec 27, 2024
7f85e1f
Recovered missing changes for FXs with Single Core RPis
jnonis Dec 28, 2024
2a3b2ee
Fix for RPI 1 support
jnonis Dec 31, 2024
7ac0b9d
Added Master FX
jnonis Dec 28, 2024
be718fc
Added Send FX 2
jnonis Dec 30, 2024
4d2d79c
LCD Update performance fix to avoid glitches on single core RPis
jnonis Jan 11, 2025
4632800
Avoid glitches and noise when distortion fx are loaded
jnonis Jan 11, 2025
569b866
Added Send FX 1 to performance load and save
jnonis Jan 12, 2025
0bb474e
Changed 3 Band EQ default values
jnonis Jan 12, 2025
16f4027
Fix bug when load a performance without a Master FX
jnonis Jan 12, 2025
6220ce7
Disable InsertFX for QuadDAC8Chan
jnonis Jan 12, 2025
3878f3e
Add hardware configuration for mt32-Pi-Midi-Hat device (#787)
probonopd Jan 27, 2025
7da3649
Add hardware configuration for diyelectromusic boards (#788)
probonopd Jan 27, 2025
2e7d114
Add hardware configuration for Serdaco MP32L device (#786)
probonopd Jan 27, 2025
69edb84
uses: actions/upload-artifact@v4
probonopd Feb 5, 2025
2aa5256
Added config property to disable FXs
jnonis Feb 10, 2025
7a75bcf
Revert "LCD Update performance fix to avoid glitches on single core R…
jnonis Feb 10, 2025
3500d39
Revert "Added configuration for buttons debounce time"
jnonis Feb 10, 2025
29bd890
Fix for disable FX feature
jnonis Feb 12, 2025
0d8f92b
Merge branch 'main' into fx-full
jnonis Feb 12, 2025
d04b91a
FX: Partial fix for RPi 4/5
jnonis Feb 13, 2025
4bc87fd
FX: Fix to avoid UI crashes for disabled Tone Generators
jnonis Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
cd -
mkdir -p ./sdcard/hardware/
cp -r ./hwconfig/minidexed_* ./sdcard/minidexed.ini ./sdcard/hardware/
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: ${{ env.artifactName }} # Exported above
path: ./sdcard/*
Expand Down
31 changes: 31 additions & 0 deletions hwconfig/chrissy-mt32-pi-midi-hat.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# mt32-Pi-Midi-Hat by Chrissy version 1.7.2
# https://github.com/chris-jh/mt32-pi-midi-hat

SoundDevice=i2s
SampleRate=48000
DACI2CAddress=0
ChannelsSwapped=0

MIDIBaudRate=31250
MIDIThru=umidi1,ttyS1

SSD1306LCDI2CAddress=0x3c
SSD1306LCDWidth=128
SSD1306LCDHeight=64
SSD1306LCDRotate=0
SSD1306LCDMirror=0

LCDColumns=20
LCDRows=4

ButtonPinPrev=22
ButtonActionPrev=click
ButtonPinNext=23
ButtonActionNext=click
ButtonPinBack=27
ButtonActionBack=click
ButtonPinSelect=17
ButtonActionSelect=click
ButtonPinHome=17
ButtonActionHome=longpress
ButtonPinShortcut=0
31 changes: 31 additions & 0 deletions hwconfig/diyelectromusic-RPi400MIDIAudio.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# diyelectromusic Raspberry Pi 400 MIDI and Audio Module (RPi400MIDIAudio)
# https://diyelectromusic.wordpress.com/2023/12/18/rpi-400-midi-and-audio-pcb-design/
# https://diyelectromusic.wordpress.com/2023/12/18/rpi-400-midi-and-audio-pcb-build-guide/

SoundDevice=i2s

LCDEnabled=1
SSD1306LCDI2CAddress=0x3C
SSD1306LCDWidth=128
SSD1306LCDHeight=32
SSD1306LCDRotate=0
SSD1306LCDMirror=0

LCDColumns=20
LCDRows=2

ButtonPinPrev=0
ButtonActionPrev=
ButtonPinNext=0
ButtonActionNext=
ButtonPinBack=5
ButtonActionBack=click
ButtonPinSelect=11
ButtonActionSelect=click
ButtonPinHome=6
ButtonActionHome=click
ButtonPinShortcut=11

EncoderEnabled=1
EncoderPinClock=10
EncoderPinData=9
31 changes: 31 additions & 0 deletions hwconfig/diyelectromusic-RpiMiniDexedHD44780.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# diyelectromusic Raspberry Pi MiniDexed IO Module (HD44780 Version) (RpiMiniDexedHD44780)
# https://github.com/diyelectromusic/sdemp_pcbs/tree/main/RpiMiniDexedHD44780
# https://diyelectromusic.wordpress.com/2022/08/16/minidexed-raspberry-pi-io-board-part-3/

SoundDevice=i2s

LCDEnabled=1
LCDPinEnable=10
LCDPinRegisterSelect=9
LCDPinReadWrite=0
LCDPinData4=22
LCDPinData5=27
LCDPinData6=17
LCDPinData7=4
LCDI2CAddress=0x00
SSD1306LCDI2CAddress=0
LCDColumns=16
LCDRows=2

EncoderEnabled=1
EncoderPinClock=24
EncoderPinData=23
For the two buttons, and the rotary encoder switch itself:

ButtonPinBack=25
ButtonActionBack=longpress
ButtonPinSelect=25
ButtonActionSelect=click
ButtonPinHome=25
ButtonActionHome=doubleclick
ButtonPinShortcut=25
26 changes: 26 additions & 0 deletions hwconfig/diyelectromusic-RpiMiniDexedSSD1306.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# diyelectromusic Raspberry Pi MiniDexed IO Module (SSD1306 Version) (RpiMiniDexedSSD1306)
# https://github.com/diyelectromusic/sdemp_pcbs/tree/main/RpiMiniDexedSSD1306
# https://diyelectromusic.com/2022/08/16/minidexed-raspberry-pi-io-board-part-2/

SoundDevice=i2s

LCDEnabled=1
SSD1306LCDI2CAddress=0x3C
SSD1306LCDWidth=128
SSD1306LCDHeight=32
SSD1306LCDRotate=0
SSD1306LCDMirror=0
LCDColumns=20
LCDRows=2

ButtonPinBack=5
ButtonActionBack=click
ButtonPinSelect=11
ButtonActionSelect=click
ButtonPinHome=6
ButtonActionHome=click
ButtonPinShortcut=11

EncoderEnabled=1
EncoderPinClock=9
EncoderPinData=10
32 changes: 32 additions & 0 deletions hwconfig/diyelectromusic-RpiQuadDACMiniDexed.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# diyelectromusic MiniDexed Quad DAC (RpiQuadDACMiniDexed)
# https://github.com/diyelectromusic/sdemp_pcbs/tree/main/RpiQuadDACMiniDexed
# https://diyelectromusic.com/2024/06/09/minidexed-quad-dac-pcb-design/
# https://diyelectromusic.com/2024/06/09/minidexed-quad-dac-pcb-build-guide/

SoundDevice=i2s
QuadDAC8Chan=1

LCDEnabled=1
SSD1306LCDI2CAddress=0x3C
SSD1306LCDWidth=128
SSD1306LCDHeight=32
SSD1306LCDRotate=1
SSD1306LCDMirror=0

LCDColumns=20
LCDRows=2

ButtonPinPrev=0
ButtonActionPrev=
ButtonPinNext=0
ButtonActionNext=
ButtonPinBack=5
ButtonActionBack=click
ButtonPinSelect=11
ButtonActionSelect=click
ButtonPinHome=6
ButtonActionHome=click

EncoderEnabled=1
EncoderPinClock=10
EncoderPinData=9
30 changes: 30 additions & 0 deletions hwconfig/diyelectromusic-RpiV1MiniDexedIOBoard.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# diyelectromusic MiniDexed Raspberry Pi V1 IO Board (RpiV1MiniDexedIOBoard)
# https://github.com/diyelectromusic/sdemp_pcbs/tree/main/RpiV1MiniDexedIOBoard
# https://diyelectromusic.com/2023/02/28/minidexed-raspberry-pi-v1-io-board-part-2/

SoundDevice=i2s

LCDEnabled=1
SSD1306LCDI2CAddress=0x3C
SSD1306LCDWidth=128
SSD1306LCDHeight=32
SSD1306LCDRotate=0
SSD1306LCDMirror=0
LCDColumns=20
LCDRows=2

ButtonPinPrev=0
ButtonActionPrev=
ButtonPinNext=0
ButtonActionNext=
ButtonPinBack=22
ButtonActionBack=click
ButtonPinSelect=11
ButtonActionSelect=click
ButtonPinHome=27
ButtonActionHome=click
ButtonPinShortcut=11

EncoderEnabled=1
EncoderPinClock=9
EncoderPinData=10
33 changes: 33 additions & 0 deletions hwconfig/serdaco_mp32l.override
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Serdaco MP32L
# https://www.serdashop.com/MP32L

SoundDevice=i2s
SampleRate=48000
DACI2CAddress=0
ChannelsSwapped=0

MIDIBaudRate=31250
MIDIThru=umidi1,ttyS1

SSD1306LCDI2CAddress=0x3c
SSD1306LCDWidth=128
SSD1306LCDHeight=32
SSD1306LCDRotate=1
SSD1306LCDMirror=0

LCDColumns=20
LCDRows=2

ButtonPinPrev=17
ButtonActionPrev=click
ButtonPinNext=27
ButtonActionNext=click
ButtonPinBack=22
ButtonActionBack=click
ButtonPinSelect=23
ButtonActionSelect=click
ButtonPinHome=23
ButtonActionHome=longpress
ButtonPinShortcut=0

EncoderEnabled=0
31 changes: 30 additions & 1 deletion src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,38 @@ CMSIS_DIR = ../CMSIS_5/CMSIS
OBJS = main.o kernel.o minidexed.o config.o userinterface.o uimenu.o \
mididevice.o midikeyboard.o serialmididevice.o pckeyboard.o \
sysexfileloader.o performanceconfig.o perftimer.o \
effect_compressor.o effect_platervbstereo.o uibuttons.o midipin.o
uibuttons.o midipin.o effect_compressor.o \
effect_audio/effect_chorus.o \
effect_audio/effect_delay.o \
effect_audio/effect_platervbstereo.o \
effect_audio/effect_talreverb3.o \
effect_audio/effect_mverb.o \
effect_audio/effect_ds1.o \
effect_audio/effect_bigmuff.o \
effect_audio/moddistortion/Distortion_DS1.o \
effect_audio/moddistortion/Distortion_BigMuff.o \
effect_audio/moddistortion/HyperbolicTables.o \
effect_audio/moddistortion/OverSample.o \
effect_audio/rkrlv2/EffectLFO.o \
effect_audio/rkrlv2/Phaser.o \
effect_audio/rkrlv2/APhaser.o \
effect_audio/rkrlv2/delayline.o \
effect_audio/rkrlv2/Chorus.o \
effect_midi/midi_arp.o \
effect_midi/modarpeggiator/common/clock.o \
effect_midi/modarpeggiator/common/midiHandler.o \
effect_midi/modarpeggiator/common/pattern.o \
effect_midi/modarpeggiator/utils.o \
effect_midi/modarpeggiator/arpeggiator.o

OPTIMIZE = -O3

include ./Synth_Dexed.mk
include ./Rules.mk

EXTRACLEAN += effect_audio/*.[od] \
effect_audio/moddistortion/*.[od] \
effect_audio/rkrlv2/*.[od] \
effect_midi/*.[od] \
effect_midi/modarpeggiator/*.[od] \
effect_midi/modarpeggiator/common/*.[od]
7 changes: 7 additions & 0 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,8 @@ void CConfig::Load (void)
m_bProfileEnabled = m_Properties.GetNumber ("ProfileEnabled", 0) != 0;
m_bPerformanceSelectToLoad = m_Properties.GetNumber ("PerformanceSelectToLoad", 1) != 0;
m_bPerformanceSelectChannel = m_Properties.GetNumber ("PerformanceSelectChannel", 0);

m_bFXEnabled = m_Properties.GetNumber("FXEnabled", 1) != 0;
}

unsigned CConfig::GetToneGenerators (void) const
Expand Down Expand Up @@ -716,3 +718,8 @@ unsigned CConfig::GetPerformanceSelectChannel (void) const
{
return m_bPerformanceSelectChannel;
}

bool CConfig::GetFXEnabled (void) const
{
return m_bFXEnabled;
}
7 changes: 7 additions & 0 deletions src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class CConfig // Configuration for MiniDexed
static const unsigned DefToneGenerators = AllToneGenerators;
#endif
#endif
static const unsigned SendFX2MixerChannels = AllToneGenerators + 1;

// Set maximum polyphony, depending on PI version. This can be changed via config settings
#if RASPPI == 1
Expand All @@ -80,6 +81,7 @@ class CConfig // Configuration for MiniDexed
static const unsigned DefaultNotes = 16;
#endif

static const unsigned TGChannels = 2;
static const unsigned MaxChunkSize = 4096;

#if RASPPI <= 3
Expand Down Expand Up @@ -238,6 +240,9 @@ class CConfig // Configuration for MiniDexed
bool GetPerformanceSelectToLoad (void) const;
unsigned GetPerformanceSelectChannel (void) const;

// Enable/Disable FXs
bool GetFXEnabled (void) const;

private:
CPropertiesFatFsFile m_Properties;

Expand Down Expand Up @@ -351,6 +356,8 @@ class CConfig // Configuration for MiniDexed
bool m_bProfileEnabled;
bool m_bPerformanceSelectToLoad;
unsigned m_bPerformanceSelectChannel;

bool m_bFXEnabled;
};

#endif
Loading
Loading