Skip to content

Commit

Permalink
Merge branch 'SonicPotions:master' into master-toban
Browse files Browse the repository at this point in the history
  • Loading branch information
toban authored Mar 6, 2022
2 parents eee1273 + dee4968 commit b74c807
Show file tree
Hide file tree
Showing 35 changed files with 601 additions and 287 deletions.
21 changes: 21 additions & 0 deletions Changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
Firmware v0.37
---------------------------
- fixes the scrambled OLED after a AVR soft reset

Firmware v0.36
---------------------------
- fixed morph bug introduced with 0.35

Firmware v0.35
---------------------------
- fixed transient pop filter bug
- added new 2 pole lowpass filter "LP2"
- fixed USB VID/PID
- MIDI Bank change now select drumkits (program change selects pattern as before)
- fixed missing finetune for voice 4 to 6
- merged in PLDs CCM branch. Moved some stuff to faster core coupled memory.

Firmware v0.34
---------------------------
- fixed shuffle for external midi sync

Firmware v0.33
---------------------------
- USB interrupt bug fixed (PLD)
Expand Down
Binary file modified firmware image/FIRMWARE.BIN
Binary file not shown.
69 changes: 40 additions & 29 deletions front/LxrAvr/.cproject
Original file line number Diff line number Diff line change
Expand Up @@ -5,49 +5,57 @@
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.release.923712635" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.923712635" name="Release" parent="cdt.managedbuild.config.gnu.cross.exe.release" postbuildStep="avr-objcopy -O binary -R .eeprom -R .fuse -R .lock -R .signature &quot;${ProjName}.elf&quot; &quot;DrumSynthAvr.bin&quot;">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.923712635" name="Release" parent="cdt.managedbuild.config.gnu.cross.exe.release" postbuildStep="avr-objcopy -O binary -R .eeprom -R .fuse -R .lock -R .signature &quot;${ProjName}.elf&quot; &quot;LxrAvr.bin&quot;">
<folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.923712635." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.1894532328" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release">
<option id="cdt.managedbuild.option.gnu.cross.path.491769091" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" value="" valueType="string"/>
<option id="cdt.managedbuild.option.gnu.cross.prefix.246752218" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix" value="" valueType="string"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1297799247" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/AVR}/Release" id="cdt.managedbuild.builder.gnu.cross.2885532" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool command="avr-gcc" id="cdt.managedbuild.tool.gnu.cross.c.compiler.1191758174" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1713491183" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" value="gnu.c.optimization.level.size" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.643598299" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="gnu.c.compiler.option.preprocessor.def.symbols.2014926088" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="F_CPU=20000000UL"/>
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.1180947789" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
<option id="cdt.managedbuild.option.gnu.cross.prefix.1547121117" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
<option id="cdt.managedbuild.option.gnu.cross.path.449644221" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1824124657" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/AVR}/Release" id="cdt.managedbuild.builder.gnu.cross.669439008" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool command="avr-gcc" id="cdt.managedbuild.tool.gnu.cross.c.compiler.2117033029" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.423813793" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.c.optimization.level.size" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.1322926171" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="gnu.c.compiler.option.dialect.std.1506227912" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>
<option id="gnu.c.compiler.option.misc.other.658187505" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-Warray-bounds -std=gnu99 -fmessage-length=0 -mmcu=atmega644 -c -MD -MP -funsigned-char -funsigned-bitfields -ffast-math -freciprocal-math -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wstrict-aliasing" valueType="string"/>
<option id="gnu.c.compiler.option.warnings.extrawarn.227311109" name="Extra warnings (-Wextra)" superClass="gnu.c.compiler.option.warnings.extrawarn" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="gnu.c.compiler.option.warnings.wconversion.180592800" name="Implicit conversion warnings (-Wconversion)" superClass="gnu.c.compiler.option.warnings.wconversion" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="gnu.c.compiler.option.warnings.toerrors.617460537" name="Warnings as errors (-Werror)" superClass="gnu.c.compiler.option.warnings.toerrors" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="gnu.c.compiler.option.preprocessor.def.symbols.1132241137" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="F_CPU=20000000UL "/>
<listOptionValue builtIn="false" value="__AVR_ATmega644__"/>
<listOptionValue builtIn="false" value="__PROG_TYPES_COMPAT__"/>
</option>
<option id="gnu.c.compiler.option.warnings.extrawarn.2126264168" name="Extra warnings (-Wextra)" superClass="gnu.c.compiler.option.warnings.extrawarn" value="true" valueType="boolean"/>
<option id="gnu.c.compiler.option.misc.other.1914507111" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -funsigned-char -funsigned-bitfields -ffast-math -freciprocal-math -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -mmcu=atmega644 -std=gnu99 -MD -MP" valueType="string"/>
<option id="gnu.c.compiler.option.warnings.wconversion.666785133" name="Implicit conversion warnings (-Wconversion)" superClass="gnu.c.compiler.option.warnings.wconversion" value="true" valueType="boolean"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1989346428" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
<option id="gnu.c.compiler.option.include.paths.909195777" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="/usr/lib/avr/include/avr"/>
<listOptionValue builtIn="false" value="/usr/lib/avr/lib"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.771869733" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.487229112" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.optimization.level.265834778" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.1837452699" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1660958113" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.optimization.level.1131116330" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.909108103" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
</tool>
<tool command="avr-gcc" id="cdt.managedbuild.tool.gnu.cross.c.linker.1995046179" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
<option id="gnu.c.link.option.ldflags.982870931" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,-Map=&quot;DrumSynthFront.map&quot; -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega644" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1018226667" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<tool command="avr-gcc" id="cdt.managedbuild.tool.gnu.cross.c.linker.1657621307" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
<option id="gnu.c.link.option.ldflags.999291169" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,-Map=LxrAvr.map -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,-gc-sections -mmcu=atmega644" valueType="string"/>
<option id="gnu.c.link.option.paths.1886538146" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1613498098" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.279365738" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.154691491" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1502198727" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1020437264" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1776862653" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.1165033717" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1776987575" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1048373950" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
Expand All @@ -65,12 +73,15 @@
<resource resourceType="PROJECT" workspacePath="/AVR"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.923712635;cdt.managedbuild.config.gnu.cross.exe.release.923712635.;cdt.managedbuild.tool.gnu.cross.c.compiler.2117033029;cdt.managedbuild.tool.gnu.c.compiler.input.771869733">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.923712635;cdt.managedbuild.config.gnu.cross.exe.release.923712635.;cdt.managedbuild.tool.gnu.cross.c.compiler.1191758174;cdt.managedbuild.tool.gnu.c.compiler.input.1989346428">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cproject>
31 changes: 21 additions & 10 deletions front/LxrAvr/Hardware/lcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,23 @@ void lcd_init( void )
// verwendete Pins auf Ausgang schalten
uint8_t pins = (0x0F << LCD_DB); // 4 Datenleitungen

uint8_t rsen_pins = (1<<LCD_RS) | // R/S Leitung
(1<<LCD_EN); // Enable Leitung
uint8_t rsen_pins = (1<<LCD_RS) | // R/S Leitung
(1<<LCD_EN); // Enable Leitung
LCD_DDR |= pins;

LCD_RSEN_DDR |= rsen_pins;
LCD_RSEN_DDR |= rsen_pins;

// initial alle Ausg�nge auf Null
// INIT ALL OUTPUTS TO 0
LCD_PORT &= (uint8_t)~pins;

LCD_RSEN_PORT &= (uint8_t)~rsen_pins;
LCD_RSEN_PORT &= (uint8_t)~rsen_pins;

// warten auf die Bereitschaft des LCD
_delay_ms( LCD_BOOTUP_MS );


// Set 8 bit mode 3 times (soft reset)
// If the LCD is in 8 bit mode it will be set again 3 times.
// If the LCD is in 4 bit mode expecting the 2nd nibble the
// first write will be lost, the next two set 8 bit mode
// Soft-Reset muss 3mal hintereinander gesendet werden zur Initialisierung
lcd_out( LCD_SOFT_RESET );
_delay_ms( LCD_SOFT_RESET_MS1 );
Expand All @@ -63,14 +66,23 @@ void lcd_init( void )
lcd_out( LCD_SET_FUNCTION |
LCD_FUNCTION_4BIT );
_delay_ms( LCD_SET_4BITMODE_MS );


// 4-bit Modus / 2 Zeilen / 5x7
lcd_command( LCD_SET_FUNCTION |
LCD_FUNCTION_4BIT |
LCD_FUNCTION_2LINE |
LCD_FUNCTION_5X7 |
LCD_FUNCTION_RUSSIAN);

LCD_FUNCTION_RUSSIAN);

// Display pff / Cursor off / Blinken LCD_BLINKING_OFF
// This additional "Display Off" seems to prefent OLED soft reset scrambling
// No Idea why! It's not in the datasheet but seems to help.
lcd_command( LCD_SET_DISPLAY |
LCD_DISPLAY_OFF |
LCD_CURSOR_OFF |
LCD_BLINKING_OFF);

// Display ein / Cursor aus / Blinken aus
lcd_command( LCD_SET_DISPLAY |
LCD_DISPLAY_ON |
Expand All @@ -82,7 +94,6 @@ void lcd_init( void )
LCD_ENTRY_INCREASE |
LCD_ENTRY_NOSHIFT );


lcd_clear();
}

Expand Down
18 changes: 9 additions & 9 deletions front/LxrAvr/Hardware/lcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,17 @@
////////////////////////////////////////////////////////////////////////////////
// LCD Ausf�hrungszeiten (MS=Millisekunden, US=Mikrosekunden)

#define LCD_BOOTUP_MS 15
#define LCD_ENABLE_US 20
#define LCD_WRITEDATA_US 46
#define LCD_COMMAND_US 42
#define LCD_BOOTUP_MS 500
#define LCD_ENABLE_US 30
#define LCD_WRITEDATA_US 56
#define LCD_COMMAND_US 52

#define LCD_SOFT_RESET_MS1 5
#define LCD_SOFT_RESET_MS2 1
#define LCD_SOFT_RESET_MS3 1
#define LCD_SET_4BITMODE_MS 5
#define LCD_SOFT_RESET_MS1 50
#define LCD_SOFT_RESET_MS2 50
#define LCD_SOFT_RESET_MS3 50
#define LCD_SET_4BITMODE_MS 50

#define LCD_CLEAR_DISPLAY_MS 2
#define LCD_CLEAR_DISPLAY_MS 10
#define LCD_CURSOR_HOME_MS 2

////////////////////////////////////////////////////////////////////////////////
Expand Down
3 changes: 2 additions & 1 deletion front/LxrAvr/Menu/MenuText.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,13 +193,14 @@ const char outputNames[][7] PROGMEM =
//-----------------------------------------------------------------
const char filterTypes[][8] PROGMEM =
{
{7}, //number of entries
{8}, //number of entries
{"LP"} , //1 - 001
{"HP"} , //2 - 010
{"BP"} , //3 - 011
{"UBP"} , //4 - 100
{"Nch"} , //5 - 101
{"Pek"} , //6 - 110
{"LP2"} , //1 - 001
{"off"} , //7 - 111
//{"All"} , //7 - 111
};
Expand Down
3 changes: 1 addition & 2 deletions front/LxrAvr/Menu/menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -494,8 +494,7 @@ static uint8_t menu_TargetVoiceGapIndex = 0xFF;
uint8_t menu_numSamples = 0;

//preset vars
#define NUM_PRESET_LOCATIONS 5 //kit, pattern, morph sound, performance, all
static uint8_t menu_currentPresetNr[NUM_PRESET_LOCATIONS];
uint8_t menu_currentPresetNr[NUM_PRESET_LOCATIONS];

uint8_t menu_shownPattern = 0;
uint8_t menu_muteModeActive = 0;
Expand Down
5 changes: 4 additions & 1 deletion front/LxrAvr/Menu/menu.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ extern uint8_t menu_playedPattern;
extern uint8_t menu_shownPattern;
extern uint8_t menu_muteModeActive;

#define NUM_PRESET_LOCATIONS 5 //kit, pattern, morph sound, performance, all
extern uint8_t menu_currentPresetNr[NUM_PRESET_LOCATIONS];

void menu_setShownPattern(uint8_t patternNr);
uint8_t menu_getViewedPattern();

Expand All @@ -49,7 +52,7 @@ enum PageNames
LOAD_PAGE,
SAVE_PAGE,
/*
LFO1_PAGE, //TODO load und savepage verschwenken speicher... nicht gefüllt. ans ende und aus dem array nehmen?
LFO1_PAGE, //TODO load und savepage verschwenken speicher... nicht gef�llt. ans ende und aus dem array nehmen?
LFO2_PAGE,
LFO3_PAGE,
LFO4_PAGE,
Expand Down
2 changes: 1 addition & 1 deletion front/LxrAvr/Parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ enum ParamEnums
PAR_AMOUNT_LFO5,
PAR_AMOUNT_LFO6,

PAR_RESERVED4, //todo stupid offset -> param 0 /*127*/
PAR_BANK_CHANGE, //todo stupid offset -> param 0 /*127*/
//######################################
//######## END OF MIDI DATASIZE ########
//######## PARAM NR 127 REACHED ########
Expand Down
Loading

0 comments on commit b74c807

Please sign in to comment.