aboutsummaryrefslogtreecommitdiff
path: root/core
AgeCommit message (Collapse)Author
2021-11-07Set device id of fluidsynth to 16, as used by most GS synths.Gravatar Chris Xiong
(This should really be a new option...) Also strip the marker bytes of sysex messages before sending to Fluidsynth. Someone didn't read the docs before coding.
2021-05-30Fix certain sysex messages causing crashes.Gravatar Chris Xiong
2021-01-25Fix yet another function with no return statement.Gravatar Chris Xiong
2021-01-23Pass 4 effect buffers (as it should be) to fluid_synth_process.Gravatar Chris Xiong
Also retrieve active voices from the audio processing callback. (the values are still messed up sometimes...)
2021-01-08Missing return statement.Gravatar Chris Xiong
why do I keep doing this
2021-01-07new_fluid_audio_driver2 doesn't work for any audio drivers available on Windows.Gravatar Chris Xiong
whoops. another opportunity to inject my crappy code into fluidsynth though.
2021-01-07Wait voice now checks for output level instead of polyphony.Gravatar Chris Xiong
Fluidsynth sometimes screw up the number of currently sounding voices.
2021-01-07Fix another freezing issue on Windows.Gravatar Chris Xiong
insert bad pun here
2021-01-07Add support for devices that requires a short delay after the reset message.Gravatar Chris Xiong
SD-20/SC-8850/SC-8820 explicitly require such delay (50ms). This is not a requirement for SD-80/SD-90. To add the delay, append a single double digit hexadecimal number denoting the time to wait in milliseconds to the reset message.
2021-01-07Fix very random crashes when run with QtCreator and freezes on Windows.Gravatar Chris Xiong
Guys, don't code at 1am.
2020-12-25Proper event-based playback interruption.Gravatar Chris Xiong
Also fixed random pauses after seeking. This should address everything left over by 64fd118e.
2020-12-14Emergency.Gravatar Chris Xiong
2020-12-14Before we have tick-based playback, we get this monstrosity.Gravatar Chris Xiong
This should help fixing issues such as "welp my player freezes when I switch tracks" etc. Don't worry. Event-based playback is here to stay. TODOs: - Maybe switch to an implementation based on condition variables? Current implementation is just a mess and unnecessarily wastes CPU time. Also that will allow several new interfaces to be added (such as player.interrupt) - Fix seeking. Seeking is still weird if there's a long gap between events.
2020-05-12Format EVERYTHING.Gravatar Chris Xiong
Hopefully this will make the source code less horrendous and actually readable. The command used was: ``` astyle --suffix=none --style=allman --attach-extern-c --attach-closing-while --indent-switches --indent-after-parens --pad-oper --pad-header --unpad-paren --align-pointer=name --recursive './*.cpp,*.hpp' ```
2020-04-30Add visualization renderer.Gravatar Chris Xiong
Add API for getting raw pitch bend values. Fix non-compliant RPN handling. The visualization renderer is still at the "proof-of-concept" stage. It's not very usable (yet).
2020-04-29Decouple CMidiPlayer and qmpMidiOutFluid.Gravatar Chris Xiong
Visualization renderer should no longer depend on the fluidsynth library. Reworked the "wait voice" option: now it only takes effect if an automatic track switch happens. Actually process events while waiting for async operation to finish.
2020-04-19Fix unintended control values sent to external midi devices.Gravatar Chris Xiong
2020-04-19Legacy code massacre!Gravatar Chris Xiong
Complete reconstruction of the settings infrastructure. All options are now registered using a revamped option API. Legacy configuration files are no longer compatible. Please make a backup.
2020-01-16Seeking while paused no longer breaks playback completely.Gravatar Chris Xiong
"main.seek" callbacks are now invoked after the player has done seeking, fixing incorrect channel info in simple visualization after seeking. Use QT_STRINGIFY.
2020-01-11Code refactoring for qmpChannelEditor.Gravatar Chris Xiong
Do not crash if preset selection dialog is closed with no preset selected. More translatable strings in qmpChannelEditor.
2020-01-11Bring back i18n support.Gravatar Chris Xiong
Address compiler warnings in QDialSkualptureStyle. Introduced build BUILD_PORTABLE, replacing QMP_BUILD_MODE in the QMake project. The QMake project is now fully covered by the CMake project and officially deprecated.
2019-12-04Do not crash if midi device is disconnected during the playback.Gravatar Chris Xiong
Linux build no longer searches working directory for plugins. Instead it should search the plugin folder in the executable directory. Documentation update.
2019-11-26We're now in bug squashing mode!Gravatar Chris Xiong
You can now specify control initial values for each individual channels. Added build instructions for the folks out there rocking a more superior operating system.
2019-11-16Even more fixes for Microsoft(R) Windows(R) operating system.Gravatar Chris Xiong
Device initalization file dialog doesn't work correctly on Windows. Make hiding console an option on Windows. For some dumb reason preset selection dialog refuses to work if no soundfont is selected.
2019-11-11New UI hook "main.seek". Fix SysExc. message sending. API documentation update.Gravatar Chris Xiong
Simple visualization no longer have notes stuck after seeking. System exclusive messages longer than 256 bytes are now sent correctly.
2019-11-02Keyboard plugin: show additional information on the side.Gravatar Chris Xiong
qmpPluginAPI::registerEventHandler now accepts an optional argument that determines whether the handler is called prior to or after an event is sent.
2019-10-06Fix rtmidi include path.Gravatar Chris Xiong
2019-10-05Replaced the option "default output device" with a more powerful one.Gravatar Chris Xiong
Old code for default output device completely removed.
2019-09-13CMake. It's happening.Gravatar Chris Xiong
Added a new build system based on CMake. Minor code cleanups. This probably breaks building with QMake on multiple platforms. And of course the new CMake support isn't tested thoroughly. But it's finally happening.
2019-09-10We refactorin', eh? Hell yeah.Gravatar Chris Xiong
(Almost) Completely rewritten qmpChannelsWindow, one of the oldest component, now with a dedicated data model. Removed dumb design (CMidiPlayer::getChstates). Now QMidiPlayer requires C++14 to build. More refactoring like this coming up soon.
2019-07-01Actually send initialization sequence to external devices.Gravatar Chris Xiong
Replace hardcoded initial CC values with values from device property API.
2019-06-18Device initialization file implementation (part 1).Gravatar Chris Xiong
Added UI for external device configuration. Instrument mapping portion of the device intialization file is now working. Fixed a few spots where return value of getChannelPreset() is ignored. Fixed layout of the preset selection dialog.
2019-06-16Inital implementation of the device properties API.Gravatar Chris Xiong
Added new interfaces to qmpMidiOutDevice. Implemented the new interfaces for qmpMidiOutFluid. Initial infra for device initialization file parsing. Move to the new interfaces for getting list of presets. Use DevIL instead of CxImage. External output devices are broken now but that is for another commit.
2019-05-26Major code refactor continued and (mostly) concluded.Gravatar Chris Xiong
Removed all references to ICallback in official plugins. New flag field in SEvent. Further type usage corrections.
2019-05-25Massive code refactor en cours!Gravatar Chris Xiong
Less complain from compilers: - use nullptr instead of NULL - use types for event fields - explicit type casting added Stop saving parameters of meta events in p1/p2 fields of SEvent. callback_t now uses std::function, deprecating ICallback. Not recommended for daily usage, or even testing: the code refactor is still a work in progress.
2019-04-22New development cycle!Gravatar Chris Xiong
Partially reintroduce High DPI handling. Pressing enter when a preset is focused now opens the preset selection dialog. Close all functionality windows before shutting down. Temporary fix for switching all channels of an external synth to mono mode unintentionally. And the most important one of them all: simple visualization! I'm ditching the 0.8.6 cycle because there was no clear goal for that release now (as the OPL3 emulation is now delayed indefinitely). In contrast, the 0.8.7 release has a pretty good-looking feature set mainly focused on improving support for external synthesizers: - Per-device initialization profile. - Instrument mapping files. - And a simple visualization ~~for showing off your external synthesizers~~. As always no ETA is set, nor will I promise the implementaion of all the features listed above.
2019-03-18Fixed initial preset selection in XG mode.Gravatar Chris Xiong
2019-03-13Set preset bank correctly in XG mode.Gravatar Chris Xiong
Removed High DPI handling code. Good luck to Windows users out there. Skulpture style: dials are no longer blurred if scaled.
2019-01-25Fixed a crash caused by improper preset probing.Gravatar Chris Xiong
Further ensure CC#8 is initialized correctly. Minor string table update.
2019-01-24Migrated to fluidsynth 2.x.Gravatar Chris Xiong
Moved to mxe for Windows build. Fixed default value for CC#8.
2018-06-18Precise playback (no more slowdown).Gravatar Chris Xiong
Also the visualization should now sync better.
2018-03-19Unified meta event reading code, fixing #6.Gravatar Chris Xiong
Fixed playlist dialog behaving oddly.
2017-10-18API changes and crash fixes.Gravatar Chris Xiong
Details in the changelog.
2017-06-22Minor bug fixes.Gravatar Chris Xiong
SMF reader finally takes chunk length into account. Do not prepend sysex header to F0h sysex. Let the readers do it. File readers code cleanups and refined error messages.
2017-06-21Fixed FTBFS on Windows.Gravatar Chris Xiong
Fixed the default output device option. Seeking now restores CC values correctly.
2017-06-21Fixed a bunch of bugs and crashes in the RtMidi output device.Gravatar Chris Xiong
2017-06-21Complete rewrite of the MIDI mapper.Gravatar Chris Xiong
Enforces single fluidsynth instance. Documentation update. Minor changes to make lite version work.
2017-06-16Code refactoring and fix to memory leaks.Gravatar Chris Xiong
2017-06-02Some changes from earlier this year. Read ChangeLog for details.Gravatar Chris Xiong
2017-02-13Fix pitch bend range handling.Gravatar Chris Xiong
Allow registering a string option as file path. Provide an easier way to set path values in options. Revert to old geometry storage mechanism and improved it. Hope this one will work on Windows. Make the time slider less ugly.