You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
abscisys bdae61102a first internal commit to continue dev on laptop 2 years ago
.github/workflows Initial support for I2C HD44780 displays (#225) 3 years ago
.vscode first internal commit to continue dev on laptop 2 years ago
CMSIS_5@8a64562247 Support for Yamaha DX7 SysEx commands (#195) 3 years ago
Synth_Dexed@8c677ceb4b Support for Yamaha DX7 SysEx commands (#195) 3 years ago
analysis first internal commit to continue dev on laptop 2 years ago
circle-stdlib@61cf3a47bf Multi-core support (#47) 3 years ago
src first internal commit to continue dev on laptop 2 years ago
u8g2@1ccf4cb051 first internal commit to continue dev on laptop 2 years ago
.gitignore *.O 3 years ago
.gitmodules first internal commit to continue dev on laptop 2 years ago
README.md first internal commit to continue dev on laptop 2 years ago
build.sh Added code for enabling compressor (compressor code is in Synth_Dexed) / Fixes for README.md / Added stereo plate reverb (#59) 3 years ago
getsysex.sh first internal commit to continue dev on laptop 2 years ago
incrementalBuild.sh first internal commit to continue dev on laptop 2 years ago
rebuild.sh first internal commit to continue dev on laptop 2 years ago
setup_dev_env.sh first internal commit to continue dev on laptop 2 years ago

README.md

MaxiDexed

This project aims at increasing the marvelous job done with MiniDexed focusing on the user interface as I believe that FM synthesis is difficult enough to deserve a simple but more confortable user interface to replace the 2x16 chars displays and the one button with click, double clicks and triple clicks! As you guessed it, I want to make it autonomous from computer assistance.

I added at the tip of the feature list the few features I would like to contribute in this fork.

For the moment this fork will concentrate on Raspberry PI 4B and potentialy above. I do not intent to test the code on any other lower versions.

minidexed

MiniDexed is a FM synthesizer closely modeled on the famous DX7 by a well-known Japanese manufacturer running on a bare metal Raspberry Pi (without a Linux kernel or operating system). On Raspberry Pi 2 and larger, it can run 8 tone generators, not unlike the TX816/TX802 (8 DX7 instances without the keyboard in one box). Featured by HACKADAY and adafruit.

Features

Maxi Dexed features backlog

  • DEV01 - Change build structure so that object and other bin files go away from the sources directories
  • PRESET01 - Preset browsing: changing bak automaticallw when reaching the left or right preset boundary so that:
    - Bank 1 Preset  1 + 1 -> Bank   1 Preset  2
    - Bank 1 Preset  1 - 1 -> Bank   1 Preset  1
    - Bank n Preset 32 + 1 -> Bank n+1 Preset  1
    - Bank n Preset  1 - 1 -> Bank n-1 Preset 32
  • PRESET02 - Support more than 127 banks adding the support MIDI CC0 [Bank Select (MSB)] et MIDI CC32 [Bank Select (LSB)] to allow a maximum of 2^14 = 16384 so that:
    - Bank ID bin: nn nnnn nnnn nnnn
    - MIDI CC  0:  nn nnnn nxxx xxxx
    - MIDI CC 32:  xx xxxx xnnn nnnn
  • PRESET03 - Add bank sysex material to complement the current one
  • PRESET04 - Add performance support and edit to leverage the 8 Tone Generators
  • SYNTH01 - Add Delay FX
  • SYNTH02 - Add Chorus FX
  • SYNTH03 - Add Flanger FX
  • SYNTH04 - Add Distortion FX
  • [-] HW01 - Create a 3D printable enclosure for the synth that uses the Raspaudio option
  • HW02 - Add support for I2C screen interface (4pins)
  • HW03 - Build PCB to ease the inclusion of all encoders, the screen and the audio sound card and include passive heat dissipation (OOTS Raspberry PI heatsink such as GeeekPi Raspberry Pi 4)
  • HW04 - Design a metal enclosure with real size inputs and outputs

MiniDexed feature backlog

  • Uses Synth_Dexed with circle-stdlib
  • SD card contents can be downloaded from GitHub Releases
  • Runs on all Raspberry Pi models (except Pico); see below for details
  • Produces sound on the headphone jack, HDMI display or audio extractor (better), or a dedicated DAC (best)
  • Supports multiple voices through Program Change and Bank Change LSB/MSB MIDI messages
  • Loads voices from .syx files from SD card (e.g., using getsysex.sh or from Dexed_cart_1.0.zip)
  • Menu structure on optional HD44780 display and rotary encoder
  • Runs up to 8 Dexed instances simultaneously (like in a TX816) and mixes their output together
  • Allows for each Dexed instance to be detuned and stereo shifted
  • Allows to configure multiple Dexed instances through performance.ini files
  • Compressor effect
  • Reverb effect
  • Voices can be edited over MIDI, e.g., using the synthmata online editor (requires additional hardware)

Introduction

Video about this project by Floyd Steinberg:

System Requirements

  • Raspberry Pi 1, 2, 3, 4, or 400 (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)
  • A PCM5102A or PCM5122 based DAC, HDMI display or audio extractor 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 (with or without i2c "backpack" board) and a KY-040 rotary encoder

Usage

  • In the case of Raspberry Pi 4, Update the firmware and bootloader to the latest version (not doing this may cause USB reliability issues)
  • Download from GitHub Releases
  • Unzip
  • 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 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)
  • Optionally, put voices in .syx files onto the SD card (e.g., using getsysex.sh)
  • See the Wiki for Menu operation
  • If something is unclear or does not work, don't hesitate to ask!

Pinout

All devices on Raspberry Pi GPIOs are optional.

Please the the wiki for more information.

Downloading

Compiled versions are available on GitHub Releases. Just download and put on a FAT32 formatted SD card.

Building

Please see the wiki on how to compile the code yourself.

Contributing

This project lives from the contributions of skilled C++ developers, testers, writers, etc. Please see https://github.com/probonopd/MiniDexed/issues.

Discussions

We are happy to hear from you. Please join the discussions on https://github.com/probonopd/MiniDexed/discussions.

Documentation

Project documentation is at https://github.com/probonopd/MiniDexed/wiki.

Acknowledgements

This project stands on the shoulders of giants. Special thanks to: