aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_midiplay.cpp
AgeCommit message (Collapse)Author
2017-11-18OUCH! Fix an accidental fallthroughWohlstand
2017-11-18Tiny fixesWohlstand
2017-11-18Add the XG support into drum note length fixer algorithmWohlstand
2017-11-17Small optimize of XG percussion bank handling codeWohlstand
also potential lose of bank ID of non-XG channel
2017-11-17Let XG SFX1/SFX2 use LSB==1 range of percussion instruments of WOPL fileWohlstand
2017-11-17Added handling of XG percussion bank numbersWohlstand
2017-11-16Merge branch 'master' of git@github.com:Wohlstand/libADLMIDI.gitWohlstand
2017-11-16Clean-up and beautifyingWohlstand
2017-11-15Don't set a track's delay to the global waiter, it's BAD ideaWohlstand
Last track which has 45000 ticks to wait makes song be silent for a while
2017-11-12libADLMIDI now is buildable under OpenWatcom except of some workaroundsWohlstand
- Need a different way to create a static library, otherwise it don't wanna be built. - Needed a different custom STL containers (std::vector and std::set) implementation that will work and will don't glitch with a crashes
2017-11-10Ability to quit from Classic ADLMIDI under DOS by ESC key hitWohlstand
2017-11-09Resolve weird crash caused by Tetris inside ADLMIDI2 and other changesWohlstand
- Move most of inline classes methods into own CC file - Move Input into own header with own CC file to share it with the puzzle game - Created virtual destructors and resolved weak vtable trouble between of Tetris's classes - Remove static declarisons of Tetris class. Instead, let it be member of UserInterface - Fixed forgot note-offs while sorting events row with zero length notes - Fixed crash caused by unsafe access by reference to element of array that was modified/reallocated one or multiple times - Stabilize dealing with zero-length notes
2017-11-08Fixed zero four-operators bug when using a bigger non-GM bankWohlstand
2017-11-07Fix a bug which overrides loopStart with seek destination positionWohlstand
2017-11-07Fixed Android compilationWohlstand
2017-11-07Custom WOPL now supports multiple banksWohlstand
Feel free to create something like GS or XG bank :wink:
2017-11-07New API, classic ADLMIDI, and CMakeWohlstand
- Attempt to support hardware OPL and add build of classic ADLMIDI into CMake - Added new API functions - Added C++ Extras are needed for classic ADLMIDI player - Error string is no more static. Static variant is kept for initialization errors only.
2017-11-05Tri-state for deep-tremolo/vibrato/sm/adlib-percussion modesWohlstand
By default every flag will have "auto" type which means mode will be set in dependence on a bank.
2017-11-05Don't apply a too-short percussion note fix on IMF/CMF and RSXX musics.Wohlstand
2017-11-05Small beautifyingWohlstand
2017-11-05Fix of infinite notes are appearing after events sort with 0-length notesWohlstand
Also a small optimizing: - Convert Note-ON with zero velocity into Note-OFF event - Don't re-sort row, just put note-off into begin of the row instead
2017-11-05Use longer minimal real time delay in the drum note length fixerWohlstand
2017-11-05Oops, 15 tick length, not 1!Wohlstand
2017-11-05Fix a big trougle of too short percussion notesWohlstand
This imperfection existed a whole age in most of MIDI players over OPL2/OPL3 chips, it means beginning of a new era!
2017-11-04Fix pseudo-4op double-voice instrument playing with two equal voicesWohlstand
2017-11-04Added support for playing of Electronic Arts's MUS filesWohlstand
2017-11-03Failed attempt to fix two-voice instruments with same instrument IDWohlstand
Still not working :-(
2017-11-01Added hooks and meta-info: title, copyright, track titles and markersWohlstand
2017-10-27Repair the ability to skip silence in a begin,Wohlstand
...But keep it be togglable through macro definition
2017-10-26Continue works on loop points and some clean-upWohlstand
- Added more detailed error information while parsing MIDI file - Added abiltiy to retrieve loop points time positions - Added ability to change playing tempo by giving multiplier - Removed old commented code TODO: - implement meta-information store and a way to retreive it - implement hook-ability for every MIDI event - implement ability to mute/solo every channel
2017-10-25Parse & validate loop events in load time than in playing timeWohlstand
Loop events are converting into in-library own types are compact, easier and faster to process without having to re-parse markers or have any extra code in standard event handlers
2017-10-25Small re-factoring of new MIDI event classes for correctnessWohlstand
- MidiTrackPos renamed into MidiTrackRow - TempoMarker renamed into TempoChangePoint
2017-10-25Prevent possible going far far away after end of track memory blockWohlstand
This will prevent possible crash on attempt to parse wrong or damaged MIDI file
2017-10-25Small optimization of seeking processWohlstand
Don't do lots of loops when is possible to iterate all previous events in one run
2017-10-25Clean-upWohlstand
- Move all private variables into MIDIplay class away from public ADL_MIDIPlayer structure - Comment out most of legacy code - Implement new-style ReadVarLenEx for error-checked var-len value reading process TODO: Stabilize this and implement missing fields and API calls (meta-data retreiving)
2017-10-24Added working seekability!Wohlstand
Testing and stabilizing is needed
2017-10-24Absolute time position now is known!Wohlstand
2017-10-24Fixed IMF playing!Wohlstand
2017-10-24Use MidiEvent enums where are raw event types are was usedWohlstand
2017-10-24More info about meta-eventsWohlstand
2017-10-24Absolute per-event time position calculation is works!Wohlstand
2017-10-23Experimental time position calculation based on in-track tempo eventsWohlstand
2017-10-23Prepare to implement seekability - pre-parse all MIDI events before playWohlstand
All parsed events will be stored into special time marked containers and will be sorted by type to avoid possible issues caused by incorrect order of meta or note-on/off events, etc. Time markers are needed to easier detect seconds position to seek. TODO: Fix IMF playback
2017-10-21Fixed MSVC2015 buildWohlstand
2017-10-18Wave recording in demo tool and disable loop by defaultWohlstand
2017-10-18Smooth finalizing, rewinding, and a bit more crash safetyWohlstand
* Smooth finalizing of song when loop is disabled (old ugly hack has been removed :wink:) * Added an ability to reset song position to begin (very helpful when song reaches the end) * Avoided possible crashes on attempt to fetch sample data without opening of MIDI file
2017-10-17EXPERIMENTAL: Support for custom banks!Wohlstand
TODO: Fix support for real 4-operator support for dynamical instruments which now are silent. 2-op and pseudo-4-op still work fine.
2017-10-08Fix missing of byte skipping for the note-off eventWohlstand
2017-10-08Add support for WOPL banks formatWohlstand
2017-10-01Prepare for implementation of real-time MIDI supportWohlstand
Make function for every real MIDI event which we are able to call independently from the common events stream. MIDI streamer will be moved into own module which will process MIDI files and pass events into realtime module. Then, make public API which will allow use realtime MIDI for making drivers and player plugins.