diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 113e57e..6a51236 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,6 +20,7 @@ jobs: run: | set -ex git submodule update --init --recursive + sed -i -e 's|AUDIO_BLOCK_SAMPLES|n_samples|g' Synth_Dexed/src/dexed.cpp # FIXME: Remove this line once upstreamed - name: Install toolchains run: | set -ex diff --git a/.gitmodules b/.gitmodules index 55f2aca..064ffe4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,7 @@ url = https://github.com/smuehlst/circle-stdlib [submodule "Synth_Dexed"] path = Synth_Dexed - url = https://github.com/probonopd/Synth_Dexed + url = https://codeberg.org/dcoredump/Synth_Dexed.git +[submodule "CMSIS_5"] + path = CMSIS_5 + url = https://github.com/ARM-software/CMSIS_5 diff --git a/CMSIS_5 b/CMSIS_5 new file mode 160000 index 0000000..18205c6 --- /dev/null +++ b/CMSIS_5 @@ -0,0 +1 @@ +Subproject commit 18205c6c2b68e7e96f40dc941c47efdbdd9f7d01 diff --git a/README.md b/README.md index 816be06..f3e146f 100644 --- a/README.md +++ b/README.md @@ -89,26 +89,39 @@ cd MiniDexed # Recursively pull git submodules git submodule update --init --recursive +# Choose your RPi +export RPI=4 + # Install toolchain -wget -q https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz +if [ "${RPI}" -gt 2 ] +then + wget -q https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz +else + wget -q https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz +fi tar xf gcc-arm-*-*.tar.xz export PATH=$(readlink -f ./gcc-*/bin/):$PATH # Build dependencies and MiniDexed -RPI=4 ./build.sh +./build.sh # Get Raspberry Pi boot files cd ./circle-stdlib/libs/circle/boot make -make armstub64 +if [ "${RPI}" -gt 2 ] +then + make armstub64 +fi cd - # Make zip that contains Raspberry Pi 4 boot files. The contents can be copied to a FAT32 formatted partition on a microSD card mkdir -p sdcard +cd sdcard +../getsysex.sh +cd .. cp -r ./circle-stdlib/libs/circle/boot/* sdcard -mv sdcard/config64.txt sdcard/config.txt -rm -rf sdcard/config32.txt sdcard/README sdcard/Makefile sdcard/armstub sdcard/COPYING.linux -cp ./src/*img sdcard/ +rm -rf sdcard/config*.txt sdcard/README sdcard/Makefile sdcard/armstub sdcard/COPYING.linux +cp ./src/config.txt ./src/minidexed.ini ./src/*img sdcard/ zip -r MiniDexed_Raspberry_Pi_${RPI}.zip sdcard/* # Optionally, create a RPi image. This can be written to a microSD card using tools like Etcher or dd @@ -121,10 +134,13 @@ DEV=`sudo losetup --find --partscan --show "${IMG}"` sudo mkfs.vfat -F 32 -n BOOT "${DEV}p1" mkdir boot sudo mount "${DEV}p1" boot -sudo cp sdcard/* boot +sudo cp -R sdcard/* boot sudo umount boot sudo losetup -d "${DEV}" rm -r boot + +# Write to SD card +sudo dd if="${IMG}" of=/dev/mmcblk0 bs=128k status=progress ``` ## Acknowledgements diff --git a/Synth_Dexed b/Synth_Dexed index 038ce2f..3b9d129 160000 --- a/Synth_Dexed +++ b/Synth_Dexed @@ -1 +1 @@ -Subproject commit 038ce2f020bbb5ca8a40a911071ccf638e7e68d8 +Subproject commit 3b9d12946e8a6004f6764b7fffe7f89565be6b28 diff --git a/src/Makefile b/src/Makefile index 0c06d88..f5a98bd 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,14 +4,34 @@ CIRCLE_STDLIB_DIR = ../circle-stdlib SYNTH_DEXED_DIR = ../Synth_Dexed/src +CMSIS_CORE_INCLUDE_DIR = ../CMSIS_5/CMSIS/Core/Include +CMSIS_DSP_INCLUDE_DIR = ../CMSIS_5/CMSIS/DSP/Include +CMSIS_DSP_PRIVATE_INCLUDE_DIR = ../CMSIS_5/CMSIS/DSP/PrivateInclude +CMSIS_DSP_SOURCE_DIR = ../CMSIS_5/CMSIS/DSP/Source OBJS = main.o kernel.o minidexed.o config.o userinterface.o \ mididevice.o midikeyboard.o serialmididevice.o pckeyboard.o \ sysexfileloader.o perftimer.o ky040.o \ - $(SYNTH_DEXED_DIR)/synth_dexed.o + $(SYNTH_DEXED_DIR)/PluginFx.o \ + $(SYNTH_DEXED_DIR)/dexed.o \ + $(SYNTH_DEXED_DIR)/dx7note.o \ + $(SYNTH_DEXED_DIR)/env.o \ + $(SYNTH_DEXED_DIR)/exp2.o \ + $(SYNTH_DEXED_DIR)/fm_core.o \ + $(SYNTH_DEXED_DIR)/fm_op_kernel.o \ + $(SYNTH_DEXED_DIR)/freqlut.o \ + $(SYNTH_DEXED_DIR)/lfo.o \ + $(SYNTH_DEXED_DIR)/pitchenv.o \ + $(SYNTH_DEXED_DIR)/porta.o \ + $(SYNTH_DEXED_DIR)/sin.o \ + $(CMSIS_DSP_SOURCE_DIR)/SupportFunctions/SupportFunctions.o INCLUDE += -I $(SYNTH_DEXED_DIR) +INCLUDE += -I $(CMSIS_CORE_INCLUDE_DIR) +INCLUDE += -I $(CMSIS_DSP_INCLUDE_DIR) +INCLUDE += -I $(CMSIS_DSP_PRIVATE_INCLUDE_DIR) +CXXFLAGS += -DARM_MATH_NEON -EXTRACLEAN = $(SYNTH_DEXED_DIR)/*.o $(SYNTH_DEXED_DIR)/*.d +EXTRACLEAN = $(SYNTH_DEXED_DIR)/*.o $(SYNTH_DEXED_DIR)/*.d $(CMSIS_DSP_SOURCE_DIR)/SupportFunctions/*.o $(CMSIS_DSP_SOURCE_DIR)/SupportFunctions/*.d include ./Rules.mk