Commit Graph

42 Commits (39f4d09c1a554dc0a5b086a8eeeb62d218e1485e)

Author SHA1 Message Date
Christopher Snowhill 39f4d09c1a Use NSNumber Literals as much as possible
Replaced a bunch of [NSNumber numberWith...] with NSNumber Literals.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-17 06:39:02 -07:00
Christopher Snowhill 7cea254f4c Implement framework for dynamic metadata updates
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 21:21:53 -08:00
Christopher Snowhill b927f4c02b Replace more NSDictionary use with literals
Use literals to initialize fixed NSDictionary objects in various places.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 19:56:04 -08:00
Christopher Snowhill 838b31a6e8 MIDI: Replaced FluidSynth with BASSMIDI again
FluidSynth is just too unstable, and also just bad in general.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 18:29:03 -08:00
Christopher Snowhill 85c7073649 Reformat my own source code with clang-format
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-06 21:49:27 -08:00
Christopher Snowhill bf6627aa73 MIDI input: Fix general pacing issues with AU
The timing of block based mode was kind of off. Now it should be just
fine. Thanks to testing on Windows in foo_midi.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-03 13:50:25 -08:00
Christopher Snowhill 7e5107d431 User Settings: Obey standards
Replace "midi.plugin" with "midiPlugin", as per the value naming
conventions that Apple set out. Migrate the old value if found.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-29 16:38:53 -08:00
Christopher Snowhill 3c35cf1037 MIDI Input: Fall back to system DLS Synth
If there's no configured SoundFont bank, or if the selected bank has
gone missing, and the user has configured the player to use the
FluidSynth driver, fall back to the system DLS Synthesizer, which has
its own Roland bank to fall back on if unconfigured.

Also, whether falling back, or already on an AU synthesizer, don't fail
if there's no bank configured or found. DLS doesn't explicitly require a
bank, and most other synthesizers of interest would not require a bank
either.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-27 00:09:40 -08:00
Christopher Snowhill 0c4d5002f6 Metadata: Now supports storing cuesheet tags and encoding quality status properties 2022-01-21 22:38:54 -08:00
Christopher Snowhill 684951bdc0 Change a bunch of NSArray declarations to const collection literals 2022-01-18 18:12:57 -08:00
Christopher Snowhill 1540b84b09 Clean up association names 2022-01-18 03:20:07 -08:00
Christopher Snowhill 39a5ee8ab7 Utility: Add stubs to regenerate Info.plist with file type associations 2022-01-18 03:07:32 -08:00
Christopher Snowhill bce21b44d4 MIDI: Overhaul player completely, now Audio Unit support works properly, and the Sound Canvas VA hack is no longer needed. Now System Exclusive messages may be filtered for all plugins. 2021-11-02 19:52:12 -07:00
Christopher Snowhill fdae7eec21 File info: Implemented support for Album Artist and Codec fields 2021-10-01 19:18:42 -07:00
Christopher Snowhill 0891a20bba MIDI: Detect presence and compatibility of Sound Canvas VA before attempting to import it later. It currently does not work with arm64, only x86_64 native or Rosetta 2. 2021-08-10 17:35:15 -07:00
Christopher Snowhill 4cf76dd7e3 MIDI: Replaced BASSMIDI with FluidSynth 2021-05-03 19:18:55 -07:00
Christopher Snowhill 4ea289ba27 MIDI: Reject files with no event data 2021-04-11 17:23:55 -07:00
Christopher Snowhill 58b6ea5881 Added HMQ extension for HMP format 2020-12-08 19:16:03 -08:00
Christopher Snowhill f5c7c4d49a Update midi_processing to latest version, fixing some severe MIDI file handling issues, including Standard MIDI file SysEx and SysEx continuation handling 2020-04-14 02:10:52 -07:00
Christopher Snowhill c1a45135b3 Remove unnecessary cleanup code that impeded cases where multiple decoders could handle a single file type. 2019-07-07 00:37:56 -07:00
Christopher Snowhill 11845e18d6 Update Secret Sauce functionality. 2017-12-27 18:57:41 -08:00
Christopher Snowhill 590cf42521 Fix crash on startup when MIDI files are resumed. 2016-11-29 16:00:18 -08:00
Christopher Snowhill ebfcd03c5d - Change MIDI overrides to support 'default (auto)' mode
- Change MIDI flavor default to 'default (auto)'
- Fix MIDI preference page to correctly enable the flavor option only where applicable
- Fix SCVA player to reset existing instances reliably
2016-11-29 15:46:38 -08:00
Chris Moeller a1fab29749 MIDI decoder only initializes synthesizer if decoding actually begins, which should speed up loading file metadata. 2016-06-29 22:12:58 -07:00
Chris Moeller 03e7b666ae Added support for DMX and MSOPL true stereo extension. 2016-06-19 13:05:30 -07:00
Chris Moeller 4fdbf35aba Imported OPL3 FM synthesizer drivers from 'OPL3 MIDI Driver for Windows' and 'Doom OPL Windows MIDI driver' 2016-05-28 21:39:10 -07:00
Chris Moeller 026380fe40 Now MIDI decoder will stop playing if init/startup fails, rather than attempting to play with no SoundFonts loaded. 2016-05-09 21:56:44 -07:00
Chris Moeller 6c8a08fff1 Implemented MIDI flavor override control for Sound Canvas VA Audio Unit 2016-04-12 21:16:25 -07:00
Chris Moeller bd93d120a0 Added (disabled) AUPlayer configuration view, which is obviously not in real time due to the buffering, hence it is disabled. 2016-03-13 18:48:17 -07:00
Chris Moeller 039788226d - MIDI player now loops non-looping files internally if Repeat One is enabled
- MIDI player now supports installed Audio Unit plug-ins, and defaults to the DLS MIDI synthesizer
2016-01-20 21:11:05 -08:00
Chris Moeller 560efaf8b8 Fixed MIDI track repeat when the current file has no loop points 2014-05-11 19:27:09 -07:00
Chris Moeller 5618d058a3 Updated DUMB and modplay, and added a setting to control the resampling used by both, as well as by BASSMIDI, which will use sinc if specified 2014-03-26 21:49:31 -07:00
Chris Moeller 053bda3d92 Fixed LDS playback 2014-03-14 17:57:48 -07:00
Chris Moeller 9cd138384d Setting Repeat One will now direct all synthesizing decoders to run forever, rather than merely restarting repeatedly. Playptmod now cuts off length detection after half an hour, in case some files' loops are not detected. 2014-02-13 21:16:18 -08:00
Chris Moeller 142a144b08 Fixed some MIDI looping issues, and added support for RPG Maker loops 2013-12-14 19:56:59 -08:00
Chris Moeller af3a40bdc2 Added support for per-file SoundFonts, either named filename.ext.ext2, filename.ext2, or parentdirectoryname.ext2, where ext2 is sflist, sf2pack, or sf2, preferred in that order. 2013-10-23 22:53:39 -07:00
Chris Moeller 63fba5930e Implemented support for multiple decoders per file name extension, with a floating point priority control per interface. In the event that more than one input is registered to a given extension, and we match that extension, it will be passed off to an instance of the multi-decoder wrapper, which will try opening the file with all of the decoders in order of priority, until either one of them accepts it, or all of them have failed. This paves the way for adding a VGMSTREAM input, so I can give it a very low priority, since it has several formats that are verified by file name extension only. All current inputs have been given a priority of 1.0, except for CoreAudio, which was given a priority of 0.5, because it contains an MP3 and AC3 decoders that I'd rather not use if I don't have to. 2013-10-21 10:54:11 -07:00
Chris Moeller 16396ad20a Fixed MIDI fading and stopping at the end 2013-10-18 18:52:59 -07:00
Chris Moeller 7128273201 Fixed fading, and fixed files to stop when they've reached the end 2013-10-15 12:58:45 -07:00
Chris Moeller 2e553c7186 Fixed loop handling if only a loop start or end marker is found 2013-10-15 11:52:20 -07:00
Chris Moeller 7d600e1911 Fixed files ending when seeking 2013-10-15 11:30:18 -07:00
Chris Moeller 842932c322 Implemented a MIDI plug-in 2013-10-15 07:49:53 -07:00