diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8df5911..9c282d7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,95 +1,49 @@ -name: Build +name: build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PROJECT_NAME: "MiniDexed" on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] jobs: - Build: - + build: runs-on: ubuntu-20.04 - + strategy: + matrix: + builds: [{ rpi: 5 }, { rpi: 4 }, { rpi: 3 }, { rpi: 2 }, { rpi: 1 }] steps: - - uses: actions/checkout@v2 - - name: Get specific commits of git submodules - run: | - sh -ex ./submod.sh - - name: Install toolchains - run: | - set -ex - 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 - tar xf *-aarch64-none-elf.tar.xz - 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 - tar xf *-arm-none-eabi.tar.xz - mkdir -p kernels - - name: Build for Raspberry Pi 5 - run: | - set -ex - export PATH=$(readlink -f ./gcc-*aarch64-none*/bin/):$PATH - RPI=5 bash -ex build.sh - cp ./src/kernel*.img ./kernels/ - - name: Build for Raspberry Pi 4 - run: | - set -ex - export PATH=$(readlink -f ./gcc-*aarch64-none*/bin/):$PATH - RPI=4 bash -ex build.sh - cp ./src/kernel*.img ./kernels/ - - name: Build for Raspberry Pi 3 - run: | - set -ex - export PATH=$(readlink -f ./gcc-*aarch64-none*/bin/):$PATH - RPI=3 bash -ex build.sh - cp ./src/kernel*.img ./kernels/ - - name: Build for Raspberry Pi 2 - run: | - set -ex - export PATH=$(readlink -f ./gcc-*arm-none*/bin/):$PATH - RPI=2 bash -ex build.sh - cp ./src/kernel*.img ./kernels/ - - name: Build for Raspberry Pi 1 - run: | - set -ex - export PATH=$(readlink -f ./gcc-*arm-none*/bin/):$PATH - RPI=1 bash -ex build.sh - cp ./src/kernel*.img ./kernels/ - - name: Get Raspberry Pi boot files - run: | - set -ex - export PATH=$(readlink -f ./gcc-*aarch64-none*/bin/):$PATH - cd ./circle-stdlib/libs/circle/boot - make - make armstub64 - cd - - mkdir -p sdcard - cp -r ./circle-stdlib/libs/circle/boot/* sdcard - rm -rf sdcard/config*.txt sdcard/README sdcard/Makefile sdcard/armstub sdcard/COPYING.linux - cp ./src/config.txt ./src/minidexed.ini ./src/*img ./src/performance.ini sdcard/ - cp ./getsysex.sh sdcard/ - echo "usbspeed=full" > sdcard/cmdline.txt - cd sdcard - cp ../kernels/* . || true - cd - - - name: Get performance files - run: | - git clone https://github.com/Banana71/Soundplantage --depth 1 # depth 1 means only the latest commit - cp -r ./Soundplantage/performance ./Soundplantage/*.pdf ./sdcard/ - cd sdcard - zip -r ../MiniDexed_$GITHUB_RUN_NUMBER_$(date +%Y-%m-%d)-$(git rev-parse --short HEAD).zip * - echo "artifactName=MiniDexed_$GITHUB_RUN_NUMBER_$(date +%Y-%m-%d)-$(git rev-parse --short HEAD)" >> $GITHUB_ENV - cd - - - uses: actions/upload-artifact@v3 - with: - name: ${{ env.artifactName }} # Exported above - path: ./sdcard/* - - name: Upload to GitHub Releases (only when building from main branch) - if: ${{ github.ref == 'refs/heads/main' }} - run: | - set -ex - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh - bash ./upload.sh ./MiniDexed*.zip - + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install toolchain + run: | + RPI=${{ matrix.builds.rpi }} make install-toolchain + echo "$(pwd)/external/gcc/bin" >> $GITHUB_PATH + + - name: Build for Raspberry Pi ${{ matrix.builds.rpi }} + run: | + RPI=${{ matrix.builds.rpi }} make build + + - name: Build & zip Raspberry Pi boot files + run: | + make get-performances + make get-sysex + RPI=${{ matrix.builds.rpi }} make build-stub + RPI=${{ matrix.builds.rpi }} make zip + + - uses: actions/upload-artifact@v4 + with: + name: ${{env.PROJECT_NAME}}_$(git rev-parse --short HEAD) + path: ./build/sdcard/* + + - name: Release + if: ${{ github.ref == 'refs/heads/main' }} + run: | + wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh + bash ./upload.sh ./${{env.PROJECT_NAME}}*.zip diff --git a/.gitignore b/.gitignore index 93bd001..483fb2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,51 +1,11 @@ -# Prerequisites +*.elf *.d - -# Compiled Object files -*.slo -*.lo -*.o -*.obj -*.O - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app - -# Toolchain -gcc-* - -# Build artefacts -kernel* -MiniDexed* -sdcard -*.zip *.img +*.lst +*.map +*.o -# Editor related files -*.swp -*.swo - -CMSIS_5/ -Synth_Dexed/ -circle-stdlib/ \ No newline at end of file +build/ +external/gcc/ +external/soundplantage/ +tmp/ diff --git a/.gitmodules b/.gitmodules index 064ffe4..6e92c83 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ -[submodule "circle-stdlib"] - path = circle-stdlib +[submodule "external/circle-stdlib"] + path = external/circle-stdlib url = https://github.com/smuehlst/circle-stdlib -[submodule "Synth_Dexed"] - path = Synth_Dexed +[submodule "external/Synth_Dexed"] + path = external/Synth_Dexed url = https://codeberg.org/dcoredump/Synth_Dexed.git -[submodule "CMSIS_5"] - path = CMSIS_5 +[submodule "external/CMSIS_5"] + path = external/CMSIS_5 url = https://github.com/ARM-software/CMSIS_5 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..12d5ef4 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +RPI ?= 4 + +.PHONY: all +all: clean build build-stub zip + +.PHONY: build +build: + @mkdir -p build/kernels build/sdcard + @./scripts/build.sh + @cp ./src/kernel*.img ./build/kernels/ + +.PHONY: build-stub +build-stub: + @mkdir -p build/kernels build/sdcard + @./scripts/build-stub.sh + +.PHONY: clean +clean: + @rm -rf build + +.PHONY: get-sysex +get-sysex: + @mkdir -p build/sdcard && \ + cd ./build/sdcard && \ + ../../scripts/get-sysex.sh && \ + cd - + +.PHONY: get-performances +get-performances: + @./scripts/get-performances.sh + +.PHONY: install +install: + @echo "TODO(antoniae)" + +.PHONY: install-toolchain +install-toolchain: + @./scripts/install-toolchain.sh + +.PHONY: zip +zip: + @./scripts/zip.sh diff --git a/README.md b/README.md index dcb9d84..a14ef55 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Video about this project by [Floyd Steinberg](https://www.youtube.com/watch?v=Z3 ## System Requirements - Raspberry Pi 1, 2, 3, 4, or 400. Raspberry Pi Zero and Zero 2 can be used but need HDMI or a supported i2s DAC for audio out. On Raspberry Pi 1 and on Raspberry Pi Zero there will be severely limited functionality (only one tone generator instead of 8) -- Raspberry Pi 5 can be used but currently support is experimental: HDMI sound and USB Gadget mode are not available yet, and it is not clear if there are implications for cooling from running MiniDexed. Also, MiniDexed is currently not taking advantage of the higher processing power of the Raspberry Pi 5 yet. *Hence, you may consider using one of the less expensive, older Raspberry Pi boards for your first build.* +- Raspberry Pi 5 can be used but currently support is experimental: HDMI sound and USB Gadget mode are not available yet, and it is not clear if there are implications for cooling from running MiniDexed. Also, MiniDexed is currently not taking advantage of the higher processing power of the Raspberry Pi 5 yet. _Hence, you may consider using one of the less expensive, older Raspberry Pi boards for your first build._ - A [PCM5102A or PCM5122 based DAC](https://github.com/probonopd/MiniDexed/wiki/Hardware#i2s-dac), HDMI display or [audio extractor](https://github.com/probonopd/MiniDexed/wiki/Hardware#hdmi-to-audio) for good sound quality. If you don't have this, you can use the headphone jack on the Raspberry Pi but on anything but the Raspberry 4 the sound quality will be seriously limited - Optionally (but highly recommended), an [LCDC1602 Display](https://www.berrybase.de/en/sensors-modules/displays/alphanumeric-displays/alphanumerisches-lcd-16x2-gr-252-n/gelb) (with or without i2c "backpack" board) and a [KY-040 rotary encoder](https://www.berrybase.de/en/components/passive-components/potentiometer/rotary-encoder/drehregler/rotary-encoder-mit-breakoutboard-ohne-gewinde-und-mutter) @@ -45,14 +45,14 @@ Video about this project by [Floyd Steinberg](https://www.youtube.com/watch?v=Z3 - Put the files into the root directory of a FAT32 formatted partition on SD/microSD card (Note for small SD cards which are no longer sold: If less than 65525 clusters, you may need to format as FAT16.) - Put SD/microSD card into Raspberry Pi 1, 2, 3 or 4, or 400 (Zero and Zero 2 can be used but need HDMI or a supported i2c DAC for audio out) - Attach headphones to the headphone jack using `SoundDevice=pwm` in `minidexed.ini` (default) (poor audio quality) -- Alternatively, attach a PCM5102A or PCM5122 based DAC and select i2c sound output using `SoundDevice=i2s` in `minidexed.ini` (best audio quality) +- Alternatively, attach a PCM5102A or PCM5122 based DAC and select i2c sound output using `SoundDevice=i2s` in `minidexed.ini` (best audio quality) - Alternatively, attach a HDMI display with sound and select HDMI sound output using `SoundDevice=hdmi` in `minidexed.ini` (this may introduce slight latency) - Attach a MIDI keyboard via USB (alternatively you can build a circuit that allows you to attach a "traditional" MIDI keyboard using a DIN connector, or use a DIN-MIDI-to-USB adapter) - If you are using a LCDC1602 with an i2c "backpack" board, then you need to set `LCDI2CAddress=0x27` (or another address your i2c "backpack" board is set to) in `minidexed.ini` - Boot - Start playing - If the system seems to become unresponsive after a few seconds, remove `usbspeed=full` from `cmdline.txt` and repeat ([details](https://github.com/probonopd/MiniDexed/issues/39)) -- Optionally, put voices in `.syx` files onto the SD card (e.g., using `getsysex.sh`) +- Optionally, put voices in `.syx` files onto the SD card (e.g., using `scripts/get-sysex.sh`) - See the Wiki for [Menu](https://github.com/probonopd/MiniDexed/wiki/Menu) operation - For voice programming, use any DX series editor (using MIDI sysex), including Dexed - For library management, use the dedicated [MiniDexedLibrarian](https://github.com/BobanSpasic/MiniDexedLibrarian) software diff --git a/Synth_Dexed b/Synth_Dexed deleted file mode 160000 index 8c677ce..0000000 --- a/Synth_Dexed +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8c677ceb4b3fb73f8643e30ff6cf4158dc8b9e53 diff --git a/circle-stdlib b/circle-stdlib deleted file mode 160000 index 61cf3a4..0000000 --- a/circle-stdlib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 61cf3a47bf93628039078b7c840e44432e52343e diff --git a/CMSIS_5 b/external/CMSIS_5 similarity index 100% rename from CMSIS_5 rename to external/CMSIS_5 diff --git a/external/Synth_Dexed b/external/Synth_Dexed new file mode 160000 index 0000000..c9f5274 --- /dev/null +++ b/external/Synth_Dexed @@ -0,0 +1 @@ +Subproject commit c9f52741a802ad9bb01263823650f7cc3b0b5108 diff --git a/external/circle-stdlib b/external/circle-stdlib new file mode 160000 index 0000000..3bd135d --- /dev/null +++ b/external/circle-stdlib @@ -0,0 +1 @@ +Subproject commit 3bd135d35ac23c7c726924cb85b5890cbf80bbfe diff --git a/getsysex.sh b/getsysex.sh deleted file mode 100755 index 30e5aa5..0000000 --- a/getsysex.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# Get voices from -# https://yamahablackboxes.com/collection/yamaha-dx7-synthesizer/patches/ - -mkdir -p sysex/voice/ - -DIR="https://yamahablackboxes.com/patches/dx7/factory" - -# wget -c "${DIR}"/rom1a.syx -O sysex/voice/000000_rom1a.syx -# wget -c "${DIR}"/rom1b.syx -O sysex/voice/000001_rom1b.syx -# wget -c "${DIR}"/rom2a.syx -O sysex/voice/000002_rom2a.syx -# wget -c "${DIR}"/rom2b.syx -O sysex/voice/000003_rom2b.syx -wget -c "${DIR}"/rom3a.syx -O sysex/voice/000001_rom3a.syx -wget -c "${DIR}"/rom3b.syx -O sysex/voice/000002_rom3b.syx -wget -c "${DIR}"/rom4a.syx -O sysex/voice/000003_rom4a.syx -wget -c "${DIR}"/rom4b.syx -O sysex/voice/000004_rom4b.syx - -DIR="https://yamahablackboxes.com/patches/dx7/vrc" - -wget -c "${DIR}"/vrc101b.syx -O sysex/voice/000005_vrc101b.syx -wget -c "${DIR}"/vrc102a.syx -O sysex/voice/000006_vrc102a.syx -wget -c "${DIR}"/vrc102b.syx -O sysex/voice/000007_vrc102b.syx -wget -c "${DIR}"/vrc103a.syx -O sysex/voice/000008_vrc103a.syx -wget -c "${DIR}"/vrc103b.syx -O sysex/voice/000009_vrc103b.syx -wget -c "${DIR}"/vrc104a.syx -O sysex/voice/000010_vrc104a.syx -wget -c "${DIR}"/vrc104b.syx -O sysex/voice/000011_vrc104b.syx -wget -c "${DIR}"/vrc105a.syx -O sysex/voice/000012_vrc105a.syx -wget -c "${DIR}"/vrc105b.syx -O sysex/voice/000013_vrc105b.syx -wget -c "${DIR}"/vrc106a.syx -O sysex/voice/000014_vrc106a.syx -wget -c "${DIR}"/vrc106b.syx -O sysex/voice/000015_vrc106b.syx -wget -c "${DIR}"/vrc107a.syx -O sysex/voice/000016_vrc107a.syx -wget -c "${DIR}"/vrc107b.syx -O sysex/voice/000017_vrc107b.syx -wget -c "${DIR}"/vrc108a.syx -O sysex/voice/000018_vrc108a.syx -wget -c "${DIR}"/vrc108b.syx -O sysex/voice/000019_vrc108b.syx -wget -c "${DIR}"/vrc109a.syx -O sysex/voice/000020_vrc109a.syx -wget -c "${DIR}"/vrc109b.syx -O sysex/voice/000021_vrc109b.syx -wget -c "${DIR}"/vrc110a.syx -O sysex/voice/000022_vrc110a.syx -wget -c "${DIR}"/vrc110b.syx -O sysex/voice/000023_vrc110b.syx -wget -c "${DIR}"/vrc111a.syx -O sysex/voice/000024_vrc111a.syx -wget -c "${DIR}"/vrc111b.syx -O sysex/voice/000025_vrc111b.syx -wget -c "${DIR}"/vrc112a.syx -O sysex/voice/000026_vrc112a.syx -wget -c "${DIR}"/vrc112b.syx -O sysex/voice/000027_vrc112b.syx diff --git a/USBID.sh b/scripts/USBID.sh similarity index 100% rename from USBID.sh rename to scripts/USBID.sh diff --git a/scripts/build-stub.sh b/scripts/build-stub.sh new file mode 100755 index 0000000..0545e84 --- /dev/null +++ b/scripts/build-stub.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +echo "Building stub..." + +if [ -z "${RPI}" ] ; then + echo "\$RPI missing, exiting" + exit 1 +fi + +echo "Building stub for RPI=${RPI}..." + +cd external/circle-stdlib/libs/circle/boot + +make +if [ "${RPI}" -gt 2 ] +then + make armstub64 +fi + +cd - + +echo " Done." diff --git a/build.sh b/scripts/build.sh similarity index 79% rename from build.sh rename to scripts/build.sh index b69ba6b..85b5da8 100755 --- a/build.sh +++ b/scripts/build.sh @@ -1,8 +1,5 @@ #!/bin/bash -set -e -set -x - if [ -z "${RPI}" ] ; then echo "\$RPI missing, exiting" exit 1 @@ -21,7 +18,7 @@ if [ "${RPI}" -gt "1" ]; then fi # USB Vendor and Device ID for use with USB Gadget Mode -source USBID.sh +source scripts/USBID.sh if [ "${USB_VID}" ] ; then OPTIONS="${OPTIONS} -o USB_GADGET_VENDOR_ID=${USB_VID}" fi @@ -30,9 +27,10 @@ if [ "${USB_DID}" ] ; then fi # Build circle-stdlib library -cd circle-stdlib/ +echo "Building circle-stdlib with RPI ${RPI} ${TOOLCHAIN_PREFIX}..." +cd external/circle-stdlib/ make mrproper || true -./configure -r ${RPI} --prefix "${TOOLCHAIN_PREFIX}" ${OPTIONS} -o KERNEL_MAX_SIZE=0x400000 +./configure -r ${RPI} -p "${TOOLCHAIN_PREFIX}" ${OPTIONS} -o "KERNEL_MAX_SIZE=0x400000" make -j # Build additional libraries @@ -47,11 +45,13 @@ make clean || true make -j cd ../../../.. -cd .. +cd ../.. -# Build MiniDexed +# Build cd src make clean || true make -j ls *.img cd .. + +cp src/*.img build/kernels/ diff --git a/scripts/get-performances.sh b/scripts/get-performances.sh new file mode 100755 index 0000000..ce676b0 --- /dev/null +++ b/scripts/get-performances.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo "Fetching performances..." + +DEST="build/sdcard" + +mkdir -p ${DEST} + +rm -rf external/soundplantage + +git clone https://github.com/Banana71/Soundplantage --depth 1 external/soundplantage > /dev/null 2>&1 + +cp -r \ + external/soundplantage/performance \ + external/soundplantage/*.pdf \ + $DEST + +echo " Done." \ No newline at end of file diff --git a/scripts/get-sysex.sh b/scripts/get-sysex.sh new file mode 100755 index 0000000..4e0eb64 --- /dev/null +++ b/scripts/get-sysex.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +echo "Fetching sysex files..." + +# Get voices from +# https://yamahablackboxes.com/collection/yamaha-dx7-synthesizer/patches/ + +mkdir -p sysex/voice/ + +DIR="https://yamahablackboxes.com/patches/dx7/factory" +FILES=( + # "rom1a" + # "rom1b" + # "rom2a" + # "rom2b" + "rom3a" + "rom3b" + "rom4a" + "rom4b" +) +for i in "${!FILES[@]}"; do + index=$((i + 1)) + echo " Downloading ${FILES[$i]}..." + wget -cq "${DIR}/${FILES[$i]}.syx" -O "sysex/voice/$(printf '%06d' $index)_${FILES[$i]}.syx" +done + +DIR="https://yamahablackboxes.com/patches/dx7/vrc" +FILES=( + "vrc101b" + "vrc102a" + "vrc102b" + "vrc103a" + "vrc103b" + "vrc104a" + "vrc104b" + "vrc105a" + "vrc105b" + "vrc106a" + "vrc106b" + "vrc107a" + "vrc107b" + "vrc108a" + "vrc108b" + "vrc109a" + "vrc109b" + "vrc110a" + "vrc110b" + "vrc111a" + "vrc111b" + "vrc112a" + "vrc112b" +) +for i in "${!FILES[@]}"; do + index=$((i + 5)) # Adjust the starting index as needed + echo " Downloading ${FILES[$i]}..." + wget -cq "${DIR}/${FILES[$i]}.syx" -O "sysex/voice/$(printf '%06d' $index)_${FILES[$i]}.syx" +done + +echo " Done." diff --git a/scripts/install-toolchain.sh b/scripts/install-toolchain.sh new file mode 100755 index 0000000..61566c9 --- /dev/null +++ b/scripts/install-toolchain.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +RPI=${RPI:-4} +DEST="external/gcc" +TARGET_GCC="gcc-arm-10.3-2021.07" + +echo "Installing toolchain for RPI=${RPI}..." + +# Check if gcc is already installed +if [ -d ${DEST} ]; then + echo " Toolchain already installed." + exit 0 +fi + +mkdir -p ${DEST} +mkdir -p tmp + +TARGET="${TARGET_GCC}-x86_64-aarch64-none-elf" +URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/${TARGET}.tar.xz" + +if [ "${RPI}" -le 2 ]; then + TARGET="${TARGET_GCC}-x86_64-arm-none-eabi" + URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/${TARGET}.tar.xz" +fi + +if [ ! -f tmp/gcc-arm-*-*.tar.xz ]; then + echo " Downloading toolchain..." + wget -q -P tmp ${URL} + tar -xf tmp/gcc-arm-*-*.tar.xz -C ${DEST} --strip-components 1 +fi + +echo " Done." diff --git a/submod.sh b/scripts/submod.sh similarity index 74% rename from submod.sh rename to scripts/submod.sh index c13dca3..2d071ea 100755 --- a/submod.sh +++ b/scripts/submod.sh @@ -5,20 +5,20 @@ set -ex git submodule update --init --recursive # # Use fixed master branch of circle-stdlib then re-update -cd circle-stdlib/ +cd external/circle-stdlib/ git checkout 3bd135d git submodule update --init --recursive cd - # # Optional update submodules explicitly -cd circle-stdlib/libs/circle +cd external/circle-stdlib/libs/circle git checkout 4155f43 cd - -cd circle-stdlib/libs/circle-newlib +cd external/circle-stdlib/libs/circle-newlib #git checkout develop cd - # # Use fixed master branch of Synth_Dexed -cd Synth_Dexed/ +cd external/Synth_Dexed/ git checkout c9f5274 cd - diff --git a/scripts/zip.sh b/scripts/zip.sh new file mode 100755 index 0000000..4593c88 --- /dev/null +++ b/scripts/zip.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +echo "Zipping boot files..." + +DEST="build/sdcard" + +mkdir -p ${DEST} + +cp -r ./external/circle-stdlib/libs/circle/boot/* ${DEST} +rm -rf \ + ${DEST}/README \ + ${DEST}/config*.txt \ + ${DEST}/Makefile \ + ${DEST}/armstub \ + ${DEST}/COPYING.linux + +cp \ + build/kernels/* \ + src/config.txt \ + src/*img \ + src/minidexed.ini \ + src/performance.ini \ + ${DEST} + +echo "usbspeed=full" > ${DEST}/cmdline.txt + +cp build/kernels/* ${DEST} + +zip -r build/MiniDexed_$(date +%Y-%m-%d).zip ${DEST}/* + +echo " Done." diff --git a/src/Makefile b/src/Makefile index 540ae68..a617c2b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,9 +2,9 @@ # Makefile # -CIRCLE_STDLIB_DIR = ../circle-stdlib -SYNTH_DEXED_DIR = ../Synth_Dexed/src -CMSIS_DIR = ../CMSIS_5/CMSIS +CIRCLE_STDLIB_DIR = ../external/circle-stdlib +SYNTH_DEXED_DIR = ../external/Synth_Dexed/src +CMSIS_DIR = ../external/CMSIS_5/CMSIS OBJS = main.o kernel.o minidexed.o config.o userinterface.o uimenu.o \ mididevice.o midikeyboard.o serialmididevice.o pckeyboard.o \ diff --git a/src/config.cpp b/src/config.cpp index d456c58..ee8c8cc 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -21,7 +21,7 @@ // along with this program. If not, see . // #include "config.h" -#include "../Synth_Dexed/src/dexed.h" +#include "../external/Synth_Dexed/src/dexed.h" CConfig::CConfig (FATFS *pFileSystem) : m_Properties ("minidexed.ini", pFileSystem)