Commit Graph

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