151 Commits
Author SHA1 Message Date
Dale Whinham 52b85b7027 Replace CLogger::Write() calls with macros 2023-03-05 16:30:36 +00:00
Dale Whinham 791f4a447a Use a more robust rotary encoder routine
This updated rotary encoder routine (borrowed from FlashFloppy by Kier
Fraser) should provide much more reliable encoder tracking across a
variety of encoder types, even when the encoder quality is poor or state
transitions are quite noisy.
2023-02-27 18:09:23 +00:00
Dale Whinham 24e072cbc3 Fixed broken Dequeue() stopping condition
The CRingBuffer::Dequeue() function did not respect the nMaxCount
parameter, leading to buffer overflow/memory corruption.
2023-02-24 19:16:28 +00:00
Dale Whinham 71fa6533af Implement volume button hold/repeat with delay
Improve the button handling code so that a pressed and held button will
now generate additional press events after a short delay.

An acceleration curve is also applied so that events are generated with
increasing frequency the longer the button is held down.

Closes #323.
2023-02-06 20:36:10 +00:00
Dale Whinham f1eaf2f43c Update copyright notices 2023-02-02 13:32:48 +00:00
Dale Whinham 55588f8201 Update to circle-stdlib v15.14/Circle Step 45 2022-12-04 22:24:06 +00:00
Dale Whinham b0db927221 Add ability to reverse global stereo output
Closes #307.
2022-12-01 14:26:38 +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 fa249be971 Increase maximum number of SoundFonts to 512 2022-06-13 22:40:25 +01:00
Dale Whinham 37c256732a Remove manual DAC init, use Circle auto-detection
Closes #273.
2022-06-13 14:47:17 +01:00
Dale Whinham 02e6af1afd Fix broken network disconnection notifications 2022-04-13 15:24:35 +01:00
Dale Whinham f8945cdea4 Add support for MIDI via raw UDP socket 2022-03-24 14:50:45 +00:00
Dale Whinham 63a4a8846c Ignore note-ons received during SoundFont switch
Fixes #247.
2022-03-10 14:58:30 +00:00
Dale Whinham a19f6c6015 Add ability to override gain per-SoundFont
Closes #248.
2022-03-10 14:58:28 +00:00
Dale Whinham 164174aab4 Replace LCD simulation with new libmt32emu code 2022-03-10 14:57:16 +00:00
nikitalita d923423eda Add option to mirror display horizontally 2022-03-08 14:08:19 +00:00
Dale Whinham 1acc660a73 Reset GPIO pin state on Pisound destruction
Fixes #233.
2022-01-20 14:16:40 +00:00
Dale Whinham c4162e99a7 Implement RNFR/RNTO 2022-01-19 13:13:44 +00:00
Dale Whinham 04f0b91d39 Remove bogus FTP command 2022-01-19 13:13:44 +00:00
Dale Whinham 07004eac54 Update copyright notices 2022-01-06 17:35:40 +00:00
Dale Whinham e5b4403c7a Add support for Yamaha SysEx text/bitmap messages 2021-12-12 23:17:13 +00:00
Dale Whinham 3464b4ae13 Add embedded FTP server 2021-12-09 19:11:33 +00:00
Dale Whinham 2601c58590 Remove array size from QSort template 2021-12-05 22:58:43 +00:00
Dale Whinham 971d7b9253 Reduce default FluidSynth polyphony 2021-12-05 21:34:58 +00:00
Dale Whinham 4d5bda5dfd Fix disconnection message for Ethernet 2021-10-28 17:11:14 +01:00
Dale Whinham fc98e0a198 Minor cleanups in control classes 2021-08-14 16:30:25 +01:00
Dale Whinham 4e0d7d06e5 Add ability to reverse MT-32 stereo channels 2021-08-11 18:18:31 +01:00
Dale Whinham f958bb8d80 Rework GM/GS/XG SysEx parsing, fix SC-55 text 2021-08-01 21:59:54 +01:00
Dale Whinham a0ad972cdd Rework MIDI monitor to handle timer wrap
When the 1MHz timer wraps, the MIDI level meters would appear to be
stuck after a while.

Implement some additional state tracking to guard against timer wrap.

Fixes #148.
2021-07-27 00:16:07 +01:00
Dale Whinham 9a81bea4a5 Change default usb_serial_baud_rate value to 38400 2021-07-26 15:22:01 +01:00
Dale Whinham 0c433f3d42 Minor cleanups in utility 2021-06-26 17:03:01 +01:00
Dale Whinham 1b3b59a7e0 Add support for MIDI input via USB serial device 2021-06-26 00:00:46 +01:00
Dale Whinham d30203ab54 Enable boot splash logo for graphical displays 2021-06-26 00:00:46 +01:00
Dale Whinham 11034a013a Add immediate image drawing 2021-06-26 00:00:46 +01:00
Dale Whinham 34fb0d5555 Add mt32-pi pixel-art logo conversion by Sparkman 2021-06-26 00:00:46 +01:00
Dale Whinham cb259ef3d2 Re-indent config.def 2021-06-26 00:00:46 +01:00
Dale Whinham 545569f34b Center short messages on LCD 2021-06-25 23:57:13 +01: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 3d3f2cc6c3 Add basic panic handler 2021-06-25 23:57:13 +01:00
Dale Whinham 01b1e76e41 Add temperature monitoring debug code 2021-06-25 23:57:13 +01:00
Dale Whinham 0394999e84 Replace C++ "new" include with Circle equivalent 2021-06-25 23:57:13 +01:00
Dale Whinham c7d65a0764 Don't fail when USB controller is not present 2021-06-25 23:57:13 +01:00
Dale Whinham 45cfd37745 Minor cleanups in utility 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 04e7bc8793 Add convenience logger/config member variables 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 afeacbf1cb Set FluidSynth device ID to Sound Canvas default
This ensures FluidSynth interprets Roland "Use For Rhythm Part" messages
that were previously handled in mt32-pi manually before 7405ae5.
2021-06-25 23:57:13 +01:00
Dale Whinham e7b5d3d96e Minor cleanups in pisound 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 2415b7b2a1 Add configuration option to reverse rotary encoder
Closes #104.
2021-06-25 23:57:13 +01:00