Commit Graph

23 Commits

Author SHA1 Message Date
Dale Whinham
f1eaf2f43c Update copyright notices 2023-02-02 13:32:48 +00:00
Dale Whinham
7d30442bd5 Move SoundFont effects profiles to separate files
Deprecate the [fluidsynth.soundfont.x] sections in mt32-pi.cfg and
search for a .cfg file matching the SoundFont file name instead.
2022-06-13 22:40:27 +01:00
Dale Whinham
37c256732a Remove manual DAC init, use Circle auto-detection
Closes #273.
2022-06-13 14:47:17 +01:00
nikitalita
d923423eda Add option to mirror display horizontally 2022-03-08 14:08:19 +00:00
Dale Whinham
07004eac54 Update copyright notices 2022-01-06 17:35:40 +00:00
Dale Whinham
484dacd42f Major refactor of all LCD-related code
Previously, the LCD code needed to be aware of each synthesizer to know
how to draw their respective displays, which wasn't very maintainable.

Introduce a UI class where generic drawing utility functions and
"system" drawing code can be implemented, and move synth-specific
drawing to the synth classes themselves. This simplifies the LCD/OLED
drivers to just being interfaces to the hardware.

Also introduce a "MIDI monitor" class which tracks the state of all MIDI
activity per-synth for level meter drawing purposes. This ensures we
never miss a note; previously we were simply polling each synth engine
for its note velocities per LCD update, which was prone to missing fast
notes and also didn't account for channel volume or expression pedal.

Finally, enable support for 16-character wide displays (closes #58).
2021-06-25 23:57:13 +01:00
Dale Whinham
e9f71d7d76 Add ability to configure FluidSynth effects
This commit introduces the notion of "effects profiles", with
reverb/chorus settings that can be set on a per-SoundFont basis.

The configuration file has been updated with an example of applying a
profile to the GeneralUser GS SoundFont.
2021-06-25 23:57:13 +01:00
Dale Whinham
f3c5f51c07 Add basic networking and AppleMIDI support 2021-06-25 23:57:13 +01:00
Dale Whinham
9c2e168379 Add support for HDMI audio 2021-06-25 23:57:13 +01:00
Dale Whinham
22dc67e540 Add support for SH1106 OLED displays 2021-02-03 05:06:40 +00:00
Dale Whinham
59cf085d1c Update copyright notices 2021-02-03 05:06:40 +00:00
Dale Whinham
6ee8ded852 Add ability to set FluidSynth master volume gain 2020-12-19 17:08:51 +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
96a14cc5f1 Extract TMT32ROMSet into separate header 2020-12-05 17:15:01 +00:00
Dale Whinham
5da2eca00e Add ability to configure default synth 2020-11-22 23:16:44 +00:00
Dale Whinham
16b42f10e7 Move audio rendering to another CPU core
Refactor synth code to decouple it from the audio driver and instead use
the drivers' Write() methods to insert rendered audio into a queue from
CPU core 2.
2020-11-08 18:24:32 +00:00
Dale Whinham
e79897eb9a Add ability to invert display on SSD1306 2020-11-08 18:24:32 +00:00
Dale Whinham
d530e8e258 Fix missing "none" option for i2c_dac_init 2020-10-11 16:52:49 +01:00
Dale Whinham
8ba9c8a06a General code cleanup
Rename enums, functions parameters and class member variables so that
they match the Circle coding style more closely.

Replace /* ... */ comments with // comments.

Fixup some indentation issues/trailing whitespace.

Remove undefined functions and unused #defines.
2020-10-04 23:28:40 +01:00
Dale Whinham
3ddd9ac7ca Refactor config file parser
Reduce code duplication significantly by employing macros and templates
for parsing strings into enums.

Increase efficiency by adding {BEGIN|END}_SECTION markers in config.def
so that we can avoid unnecessary calls to strcmp() with the section name.
2020-10-04 23:28:40 +01:00
Dale Whinham
97962dd09b Add ability to switch between multiple ROM sets
Introduce a ROM manager that scans a 'roms' directory on startup for all
valid ROMs that mt32emu supports.

If none are found in this directory, fall back on searching for
MT32_{CONTROL|PCM}.ROM in the root of the SD card as before.

Add a custom SysEx command that allows the user to switch ROM sets on
the fly.

Add a new config file option for setting the default ROM set.

Closes #18.
2020-10-04 23:28:40 +01:00
Dale Whinham
2b7c0e9ca7 Add ability to configure MIDI channel assignment
Closes #31.
2020-09-22 20:59:38 +01:00
Dale Whinham
8800729da6 Reorganize sources into src and include subdirs 2020-08-09 18:55:39 +01:00