Commit Graph

151 Commits

Author SHA1 Message Date
Dale Whinham
c64c3ba914 Move "usb" config option to the system section
We now support more than just USB MIDI devices, so it no longer makes
sense to keep this in the MIDI section.
2021-03-19 23:53:26 +00:00
Dale Whinham
3024c23953 Add ability to set mt32emu gain values 2021-03-19 23:53:26 +00:00
Dale Whinham
aa30752d74 Add support for loading MT-32 ROMs from USB disks 2021-03-19 23:53:26 +00:00
Dale Whinham
28390abbea Add support for loading SoundFonts from USB disks 2021-03-19 23:53:26 +00:00
Dale Whinham
8594ea5dc9 Add switch timeout config option 2021-03-19 23:53:26 +00:00
Dale Whinham
c49b22f613 Replace part level code with rect drawing function 2021-03-19 23:53:26 +00:00
Dale Whinham
96dc570fd5 Update ARM toolchains to 10.2-2020.11 2021-03-19 23:53:26 +00:00
Dale Whinham
a93300f3c1 Show SoundFont name when switching with button 2021-02-06 15:34:41 +00:00
Dale Whinham
47a5630254 Add rotary encoder acceleration curve 2021-02-03 05:06:40 +00:00
Dale Whinham
22dc67e540 Add support for SH1106 OLED displays 2021-02-03 05:06:40 +00:00
Dale Whinham
126d04f2dc Minor cleanups in ssd1306 2021-02-03 05:06:40 +00:00
Dale Whinham
7cab781fa6 Move HD44780 pin definitions to .cpp file 2021-02-03 05:06:40 +00:00
Dale Whinham
2280a5a581 Enable USB plug and play support
Closes #36.
2021-02-03 05:06:40 +00:00
Dale Whinham
59cf085d1c Update copyright notices 2021-02-03 05:06:40 +00:00
Dale Whinham
a6c7d4bd10 Fix MT-32 ROM switching by button when set missing 2021-01-16 20:40:36 +00:00
Dale Whinham
d4e4ffcbb8 Implement GS "Use For Rhythm Part" SysEx 2021-01-16 20:40:36 +00:00
Dale Whinham
27042a1261 Reset FluidSynth on GM/GS reset SysEx
Closes #54.
2021-01-16 20:40:01 +00:00
Dale Whinham
2f19528de9 Refactor Roland SysEx headers 2021-01-16 20:31:31 +00:00
Dale Whinham
248d4e95e1 Fix backlight switching for I2C HD44780 LCDs 2021-01-04 00:28:48 +00:00
Dale Whinham
46a59f8de6 Fix part level rendering issues with HD44780
This fixes missing bar segments, missing bar bases, and "glitchy"
rendering of the part level meters when using a character LCD.
2021-01-04 00:28:48 +00:00
Dale Whinham
5d39db9682 Switch FluidSynth to use a custom memory allocator
Add a Doom-style "zone" memory allocator that can be used instead of
malloc()/realloc()/free() for FluidSynth.

This removes the need to reconfigure the Circle heap and could reduce
fragmentation caused by repeated loading/unloading of SoundFonts.
2021-01-02 22:42:17 +00:00
Dale Whinham
bc13fadcd7 Switch SoundFonts by destroying/recreating synth
Work around the lack of a lazy unload timer by avoiding use of
fluid_synth_sfunload() and instead simply recreating the synth instance
when switching to a new SoundFont.
2021-01-02 22:41:23 +00:00
Dale Whinham
8fd2fdf270 Display MiSTer logo when MiSTer is detected 2020-12-20 20:42:19 +00:00
Dale Whinham
6ee8ded852 Add ability to set FluidSynth master volume gain 2020-12-19 17:08:51 +00:00
Dale Whinham
ea8f2b7164 Add support for SC-55 "graphics" SysEx messages 2020-12-19 16:46:57 +00:00
Dale Whinham
8d6b84fecc Add initial physical control system
This commit adds a simple physical control system with two schemes:

  * simple_buttons: 4-button scheme
  * simple_encoder: 2-button scheme + rotary encoder (with button)
2020-12-19 16:46:57 +00:00
Dale Whinham
e436dde5e7 Defer SoundFont switching when not via SysEx 2020-12-19 15:04:35 +00:00
Dale Whinham
c0dcc9d976 Allow LCDLog() to take variable number of args 2020-12-19 15:04:35 +00:00
Dale Whinham
1134d6d251 Only update SSD1306 if framebuffer has changed
Avoid transferring the framebuffer over I2C if the contents haven't
changed. For now this is just implemented with two framebuffers and a
memcmp().
2020-12-19 15:04:35 +00:00
Dale Whinham
fe498765e1 Minor cleanups to SSD1306 driver 2020-12-19 15:04:35 +00:00
Dale Whinham
8deb330709 Print message on LCD before entering power save 2020-12-19 15:04:35 +00:00
Dale Whinham
51275f0358 Add WriteCommand() function to SSD1306 2020-12-19 15:02:47 +00:00
Dale Whinham
f8d5c41724 Display animated spinner when loading SoundFonts 2020-12-19 15:02:47 +00:00
Dale Whinham
51f86d6fda Introduce support for MiSTer I2C control interface 2020-12-19 15:02:47 +00:00
Dale Whinham
798d26cc4a Refactor custom SysEx parsing 2020-12-08 18:57:10 +00:00
Dale Whinham
b41fff88a7 Add getters to synths for ROM set/SoundFont index 2020-12-08 18:57:10 +00:00
Dale Whinham
ee9a3e802c Rename header guard in synthbase 2020-12-08 18:57:10 +00:00
Dale Whinham
95d192a2d8 Allow enqueue/dequeue single items in ring buffer 2020-12-05 18:29:59 +00:00
Dale Whinham
67156c0d66 Make ROM/SoundFont status reporting generic 2020-12-05 17:24:52 +00:00
Dale Whinham
96a14cc5f1 Extract TMT32ROMSet into separate header 2020-12-05 17:15:01 +00:00
Dale Whinham
4de13be8f5 Initial support for the Blokas Pisound
This commit adds a driver for the Blokas Pisound audio/MIDI HAT based on
the Linux sources.

Currently this requires a patch to Circle to allow the Pi's I2S audio
device to operate in slave mode.

The Pisound only works at 48000Hz, 96000Hz, and 192000Hz. The Pisound is
automatically detected by the startup code; the user only has to enable
I2S audio output.

MIDI output and recording functionality is not supported.

Closes #42.
2020-12-05 16:24:01 +00:00
Dale Whinham
d11fd8bbe7 Refactor USB MIDI Rx code, add ring buffer class 2020-12-05 16:22:59 +00:00
Dale Whinham
21fcf0caff Minor SoundFont manager cleanups 2020-12-05 16:22:59 +00:00
Dale Whinham
6eef13de19 Add placeholder width parameter to SSD1306
Not used yet, only 128 pixels wide supported.
2020-11-26 01:19:47 +00:00
Dale Whinham
bfa040d027 Add bases to part level meters in SoundFont mode 2020-11-26 01:19:47 +00:00
Dale Whinham
7ee2002d6c Fix USB MIDI concurrency issues
A hang could occur when using a USB MIDI interface in SoundFont mode, or
when resuming from power saving mode.

The USB MIDI interrupt handler now enqueues MIDI data into a circular
buffer that is then read from the main task context to ensure thread
safety.
2020-11-25 23:45:14 +00:00
Dale Whinham
b9d94db271 Reduce default sample rate and chunk size 2020-11-22 23:16:44 +00:00
Dale Whinham
dc77ecc790 Add wide/narrow bar character sets for HD44780 2020-11-22 23:16:44 +00:00
Dale Whinham
f6d76ec2f2 Rework bar drawing, implement for SoundFont synth 2020-11-22 23:16:44 +00:00
Dale Whinham
30575e93df Protect SoundFont synth with a spinlock 2020-11-22 23:16:44 +00:00