BASSMIDI 2.4 Copyright (c) 2006-2024 Un4seen Developments Ltd. All rights reserved. Files that you should have found in the BASSMIDI package ======================================================== Win32 version ------------- BASSMIDI.TXT This file BASSMIDI.DLL BASSMIDI module BASSMIDI.CHM BASSMIDI documentation X64\ BASSMIDI.DLL 64-bit BASSMIDI module C\ C/C++ API and examples... BASSMIDI.H BASSMIDI C/C++ header file BASSMIDI.LIB BASSMIDI import library BASSMIDI.SLN Visual Studio solution for examples MAKEFILE Makefile for examples MAKEFILE.IN Makefile helper macros X64\ BASSMIDI.LIB 64-bit BASSMIDI import library MIDITEST\ MIDI playback example ... SF2PACK\ Soundfont packer ... SYNTH\ Real-time MIDI example ... BIN\ Precompiled examples MIDITEST.EXE SF2PACK.EXE SYNTH.EXE VB\ Visual Basic API and examples... BASSMIDI.BAS BASSMIDI Visual Basic module MIDITEST\ MIDI playback example ... DELPHI\ Delphi API and examples... BASSMIDI.PAS BASSMIDI Delphi unit MIDITEST\ MIDI playback example ... SYNTH\ Real-time MIDI example ... NOTE: You may need to "Unblock" the BASSMIDI.CHM file in its "Properties" to view it on Windows 7. The documentation can also be viewed online at the BASS website. NOTE: To run the example EXEs, first you will have to copy BASSMIDI.DLL and BASS.DLL into the same directory as them. NOTE: To build the examples, you will need to copy the BASS API into the same directory as the BASSMIDI API. NOTE: The Delphi and VB examples may not always be up to date with the C examples, so the latter should be preferred as references if possible. macOS version ------------- BASSMIDI.TXT This file LIBBASSMIDI.DYLIB BASSMIDI module BASSMIDI.CHM BASSMIDI documentation BASSMIDI.H BASSMIDI C/C++ header file BASSMIDI.XCODEPROJ Xcode project for examples MIDITEST\ MIDI playback example ... SF2PACK\ Soundfont packer ... SYNTH\ Real-time MIDI example ... NOTE: To build the examples, you will need to copy the BASS API into the same directory as the BASSMIDI API. Linux version ------------- BASSMIDI.TXT This file BASSMIDI.CHM BASSMIDI documentation BASSMIDI.H BASSMIDI C/C++ header file MAKEFILE Makefile for examples MAKEFILE.IN Makefile helper macros LIBS\ BASSMIDI modules ... MIDITEST\ MIDI playback example ... SF2PACK\ Soundfont packer ... SYNTH\ Real-time MIDI example ... NOTE: To build the examples, you will need to copy the BASS API into the same directory as the BASSMIDI API. Android version --------------- BASSMIDI.TXT This file BASSMIDI.CHM BASSMIDI documentation LIBS\ BASSMIDI modules ... C\ C/C++ API... BASSMIDI.H BASSMIDI C/C++ header file JAVA\COM\UN4SEEN\BASS\ BASSMIDI.JAVA BASSMIDI Java class EXAMPLES\ Java examples BUILD.GRADLE Android Studio build script for examples SETTINGS.GRADLE PROGUARD-BASS.PRO MIDITEST\ MIDI playback example ... NOTE: To build the examples, you will need to copy the BASS API into the same directory as the BASSMIDI API. iOS version ----------- BASSMIDI.TXT This file BASSMIDI.XCFRAMEWORK BASSMIDI framework BASSMIDI.CHM BASSMIDI documentation BASSMIDI.H BASSMIDI C/C++ header file What's the point? ================= BASSMIDI is an extension to the BASS audio library, enabling the playing of MIDI files and custom event sequences, using SF2 (including SF2PACK and SF3) and/or SFZ soundfonts to provide the sounds. MIDI input is also supported. Requirements ============ BASS 2.4 is required. Using BASSMIDI ============== The MIDI format is used in very much the same way as any of the built-in BASS stream formats; simply call the MIDI stream creation function instead of the BASS built-in functions. The BASS plugin system (see BASS_PluginLoad) is also supported. SF2 and SFZ soundfonts are used to provide the sounds. There are several soundfonts available on the internet, including a couple on the BASS webpage. On Windows, the Creative 28MB (28MBGM.SF2), 8MB (CT8MGM.SF2), 4MB (CT4MGM.SF2), or 2MB (CT2MGM.SF2) soundfont will be used by default when present in the Windows system directory. The usage information in the BASS.TXT file (from the BASS package) is also applicable to BASSMIDI and other add-ons. TIP: The BASSMIDI.CHM file should be put in the same directory as the BASS.CHM file, so that the BASSMIDI documentation can be accessed from within the BASS documentation. iOS version ----------- The CoreMIDI framework is required for MIDI input, so that should be added to the "Link Binary With Libraries" build phase in Xcode. Latest Version ============== The latest versions of BASSMIDI & BASS can be found at the BASS website: www.un4seen.com Licence ======= BASSMIDI is free to use with BASS. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, BASSMIDI IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS SHALL NOT BE HELD LIABLE FOR ANY DAMAGE THAT MAY RESULT FROM THE USE OF BASSMIDI. YOU USE BASSMIDI ENTIRELY AT YOUR OWN RISK. Usage of BASSMIDI indicates that you agree to the above conditions. All trademarks and other registered names contained in the BASSMIDI package are the property of their respective owners. History ======= These are the major (and not so major) changes in each release, along with the functions/options that are introduced/affected by them. There are other little tweaks and fixes made along the way too. 2.4.15 - 9/10/2024 ------------------ * Support for Key On Velocity to attackModEnv/decayModEnv/releaseModEnv and Key Number to startAddrsOffset SF2 modulators BASS_MIDI_FontInit/User * Support for fileg_vel2attack/fileg_vel2decay/fileg_vel2release/pitcheg_vel2attack/ pitcheg_vel2decay/pitcheg_vel2release SFZ opcodes BASS_MIDI_FontInit/User * Improved SFZ variable parsing compatibility (uses the shortest match) BASS_MIDI_FontInit/User * Support for high-pass filter in fil_type SFZ opcode BASS_MIDI_FontInit/User * SoundBlaster hardware limit emulation is disabled by default for modern SF2 soundfonts BASS_MIDI_FONT_SBLIMITS/NOSBLIMITS (BASS_MIDI_FontInit/User flags) * Extended filter cutoff range when SB limits are disabled BASS_MIDI_FONT_NOSBLIMITS (BASS_MIDI_FontInit/User flag) * Improved single note releasing when there are overlapping instances of the same note BASS_MIDI_NOTEOFF1 (BASS_MIDI_StreamCreateFile/User/URL flag) * Ports above 7 are mapped to lower ports (modulo 8) BASS_MIDI_StreamCreateFile * Higher ports are shifted to lower channels when lower ports are unused BASS_MIDI_StreamCreateFile * Default per-drum USERFX levels to 127 instead of 0 in all modes BASS_MIDI_NODRUMPARAMUSER (BASS_MIDI_StreamCreate/Events/File/User/URL flag) * Per-drum key settings may be applied to all keys at once MIDI_EVENT_DRUM_xxx (BASS_MIDI_StreamEvent/s) * System mode/reset events are ignored from additional ports BASS_MIDI_StreamCreateFile/User/URL BASS_MIDI_StreamEvents * Sequencer specific meta-event retrieval BASS_MIDI_MARK_SEQSPEC (BASS_MIDI_StreamGetMark type) * Queued event buffer preallocation BASS_ATTRIB_MIDI_QUEUE_TICK/BYTE/ASYNC (BASS_ChannelSetAttribute options) * Faster SFZ info retrieval BASS_MIDI_FontGetInfo * Support for SF2 soundfonts embedded in RMID files BASS_MIDI_StreamCreateFile/User/URL * RIFF/RMID "INFO" tag support BASS_TAG_RIFF_INFO (BASS_ChannelGetTags type) * MIDI filename retrieval BASS_CHANNELINFO (filename member) * Approximate support for AWE32 filter NRPN (7f15/7f16) MIDI_EVENT_CUTOFF/RESONANCE * Maximum voices is practically unlimited (~14 million) BASS_CONFIG_MIDI_VOICES (BASS_SetConfig option) BASS_ATTRIB_MIDI_VOICES (BASS_ChannelSetAttribute option) 2.4.14 - 3/5/2022 ----------------- * Support for Key On Velocity to startAddrsOffset/modEnvToFilterFc and CC21-24 to initialFilterFc/ initialAttenuation/attackVolEnv/decayVolEnv/releaseVolEnv/releaseModEnv/modEnvToFilterFc SF2 modulators BASS_MIDI_FontInit/User * Support for all Key On Velocity to initialAttenuation SF2 modulator curve types BASS_MIDI_FontInit/User * Support for SF3 (compressed SF2) soundfonts BASS_MIDI_FontInit/User * Soundfont flag setting/retrieval BASS_MIDI_FontFlags * Retrieval of currently loading samples BASS_CONFIG_MIDI_SAMPLELOADING (BASS_GetConfig option) * Channel-specific soundfont configuration BASS_MIDI_FONT_EX2 (BASS_MIDI_StreamSetFonts/GetFonts flag) BASS_MIDI_FONTEX2 structure * MIDI port meta-event support (for more than 16 channels) BASS_MIDI_StreamCreateFile/User/URL BASS_MIDI_StreamEvents BASS_MIDI_ConvertEvents * Asynchronous processing of live events BASS_MIDI_ASYNC (BASS_MIDI_StreamCreate/Events/File/User/URL flag) BASS_MIDI_EVENTS_ASYNC (BASS_MIDI_StreamEvents flag) BASS_MIDI_EVENTS_FLUSH (BASS_MIDI_StreamEvents flag) SYNTH example updated * Filtering of live events BASS_MIDI_EVENTS_FILTER (BASS_MIDI_StreamEvents flag) * Improved reverb effect * Reverb/chorus levels raised (closer to Roland/Yamaha levels) * Current reverb/chorus type retrieval MIDI_EVENT_REVERB_MACRO (BASS_MIDI_StreamGetEvent) MIDI_EVENT_CHORUS_MACRO (BASS_MIDI_StreamGetEvent) * Treat soundfont reverb/chorus levels as minimums BASS_MIDI_FONT_MINFX (BASS_MIDI_FontInit/User/Flags flag) * Default per-drum reverb/chorus levels now apply in all modes and can be disabled BASS_MIDI_NODRUMPARAM (BASS_MIDI_StreamCreate/Events/File/User/URL flag) * Default drum channel configuration BASS_EVENT_DEFDRUMS (BASS_MIDI_StreamEvent/s and BASS_MIDI_StreamCreateEvents) * Support for master tuning MIDI_EVENT_MASTER_FINETUNE/COARSETUNE (BASS_MIDI_StreamEvent/s) * Omni-on/off (CC124/125) are treated as all-notes-off (CC123) BASS_MIDI_StreamCreateFile/User/URL BASS_MIDI_StreamEvents BASS_MIDI_ConvertEvents * 16 point sinc interpolation support on ARM platforms with NEON BASS_ATTRIB_MIDI_SRC (BASS_ChannelSetAttribute option) * Version number retrieval BASS_MIDI_GetVersion * BASS_CONFIG_MIDI_SFZHEAD value changed (was same as BASS_CONFIG_MIDI_SAMPLEREAD) BASS_CONFIG_MIDI_SFZHEAD (BASS_SetConfigPtr option) * MIDI implementation chart added to documentation 2.4.13 - 16/9/2020 ------------------ * Vibrato rate/depth/delay adjustment MIDI_EVENT_VIBRATO_RATE/DEPTH/DELAY (BASS_MIDI_StreamEvent/s) * Support for Key Number to initialAttenuation/initialFilterFc/pan and Key On Velocity to decayVolEnv/releaseVolEnv SF2 modulators BASS_MIDI_FontInit/User * Support for amp_keycenter/amp_keytrack/ampeg_vel2release/delay_beats/fil_keycenter/ fil_keytrack/locc67/hicc67/pan_keycenter/pan_keytrack/sw_default/sw_last/sw_lokey/ sw_lolast/sw_hikey/sw_hilast SFZ opcodes BASS_MIDI_FontInit/User * Support for global and master headers and #define directive in SFZ files BASS_MIDI_FontInit/User * SFZ files share memory for common sample files BASS_MIDI_FontInit/User * Partial sample loading and unloading BASS_MIDI_FontLoadEx SYNTH example updated * Non-interpolated resampling option BASS_ATTRIB_MIDI_SRC (BASS_ChannelSetAttribute option) * Tempo modification attribute BASS_ATTRIB_MIDI_SPEED (BASS_ChannelSetAttribute option) MIDITEST example updated * Mix level control BASS_ATTRIB_MIDI_VOL (BASS_ChannelSetAttribute option) * Reverb level modification BASS_ATTRIB_MIDI_REVERB (BASS_ChannelSetAttribute option) * Global SFZ headers BASS_CONFIG_MIDI_SFZHEAD (BASS_SetConfigPtr option) * Linear volume envelopes option BASS_MIDI_FONT_LINDECVOL (BASS_MIDI_FontInit/User flag) * Disabling of sample ramping-in BASS_MIDI_FONT_NORAMPIN (BASS_MIDI_FontInit/User flag) * Disabling of Creative/SoundBlaster hardware limit emulation BASS_MIDI_FONT_NOLIMITS (BASS_MIDI_FontInit flag) * Duplicate soundfonts will be reloaded instead of shared if modified in the meantime BASS_MIDI_FontInit * Memory-mapped support for default soundfont option BASS_CONFIG_MIDI_DEFFONT * Retrieval of total memory usage for sample data BASS_CONFIG_MIDI_SAMPLEMEM (BASS_GetConfig option) * Total sample data size available for SFZ files BASS_MIDI_FontGetInfo * Adjustable asynchronous sample loading chunks BASS_CONFIG_MIDI_SAMPLEREAD (BASS_SetConfig option) * CPU usage limiting is enabled by default during playback BASS_MIDI_StreamCreate/Events/File/User/URL BASS_ATTRIB_MIDI_CPU (BASS_ChannelSetAttribute option) * Option to limit sample loading waiting without killing voices BASS_ATTRIB_MIDI_CPU (BASS_ChannelSetAttribute option) * Tick-based timing for realtime event streams BASS_MIDI_StreamCreate BASS_MIDI_StreamEvents BASS_ATTRIB_MIDI_PPQN (BASS_ChannelSetAttribute option) * 48000 Hz soundfont data encoding option BASS_MIDI_PACK_48KHZ (BASS_MIDI_FontPack flag) * macOS examples rewritten in Objective-C/Cocoa 2.4.12 - 9/11/2018 ------------------ * Support for more than 16 MIDI channels in custom event sequences BASS_MIDI_StreamCreateEvents * Absolute timing option for custom events BASS_MIDI_EVENTS_ABSTIME (BASS_MIDI_StreamEvents flag) * Retrieval of note-on events MIDI_EVENT_NOTES (BASS_MIDI_StreamGetEvents/Ex filter) * Soundfont config can be modified without stopping currently playing notes BASS_MIDI_StreamSetFonts * Memory-mapped soundfonts can be preloaded/mapped BASS_MIDI_FontLoad * Support for Key On Velocity to initialAttenuation SF2 modulators BASS_MIDI_FontInit/User * Linear attack phase option for SF2 modulation envelopes BASS_MIDI_FONT_LINATTMOD (BASS_MIDI_FontInit/User flag) * The attack phase of SFZ pitch/filter envelopes is now linear instead of convex * Support for trigger/rt_decay/delay/amplfo_fade/fillfo_fade/pitchlfo_fade/pitch_random/ xfin_lokey/xfin_hikey/xfout_lokey/xfout_hikey/xf_keycurve/xfin_lovel/xfin_hivel/ xfout_lovel/xfout_hivel/xf_velcurve SFZ opcodes BASS_MIDI_FontInit/User * Support for separate amplifier/filter/pitch LFOs in SFZ BASS_MIDI_FontInit/User * Support for UTF-8 sample SFZ opcodes on Windows (already on other platforms) BASS_MIDI_FontInit/User * Support for #include directive in SFZ files BASS_MIDI_FontInit * SFZ files are no longer kept open/locked after being loaded BASS_MIDI_FontInit * Samples given more time to load asynchronously when CPU usage is low BASS_ATTRIB_MIDI_CPU (BASS_ChannelSetAttribute option) * BASS_MIDI_SINCINTER flag deprecated in favour of BASS_ATTRIB_MIDI_SRC attribute BASS_MIDI_StreamCreate/Events/File/User/URL * Smoother low-pass filter activation and deactivation * Fix for transpose/tune SFZ opcodes with encoded samples 2.4.11 - 30/3/2017 ------------------ * Event modification/filtering BASS_MIDI_StreamSetFilter MIDIFILTERPROC * Simpler tempo modification MIDI_EVENT_SPEED (BASS_MIDI_StreamEvent) MIDITEST example updated * Checking whether individual notes are playing MIDI_EVENT_NOTE (BASS_MIDI_StreamGetEvent) * Retrieval of total number of notes playing in a channel MIDI_EVENT_NOTES (BASS_MIDI_StreamGetEvent) * Retrieval of currently active voices in a channel MIDI_EVENT_VOICES (BASS_MIDI_StreamGetEvent) * Retrieval of currently in use presets BASS_MIDI_StreamGetPreset * SFZ filenames are used as preset names BASS_MIDI_FontGetPreset * Support for loop info in FLAC samples used with SFZ (requires BASSFLAC 2.4.3) * Faster loading of very large MIDI files BASS_MIDI_StreamCreateFile/User/URL * Faster unfiltered event counting BASS_MIDI_StreamGetEvents/Ex BASS_MIDI_ConvertEvents * 24-bit paramater passed to MIDI_EVENT_TEMPO event sync callbacks BASS_SYNC_MIDI_EVENT (BASS_ChannelSetSync type) * When getting the number of events, only those in the specified range are counted BASS_MIDI_StreamGetEventsEx * Invalid event types in custom sequences will give an error instead of being ignored BASS_MIDI_StreamCreateEvents 2.4.10 - 8/12/2016 ------------------ * 16 point sinc interpolation option BASS_ATTRIB_MIDI_SRC (BASS_ChannelSetAttribute option) * Support for lorand/hirand/locc1/hicc1/locc64/hicc64/off_mode/default_path SFZ opcodes BASS_MIDI_FontInit/User * Support for Key On Velocity to initialFilterFc/attackVolEnv SF2 modulators BASS_MIDI_FontInit/User * Conversion of raw MIDI data to BASS_MIDI_EVENT BASS_MIDI_ConvertEvents * Modulation (CC1) destination control MIDI_EVENT_MOD_VIBRATO/PITCH/FILTER/VOLUME (BASS_MIDI_StreamEvent/s) MIDI_EVENT_MODRANGE superseded by MIDI_EVENT_MOD_VIBRATO * Sostenuto MIDI_EVENT_SOSTENUTO (BASS_MIDI_StreamEvent/s) * Legato channel mode MIDI_EVENT_MODE (BASS_MIDI_StreamEvent) * Partial retrieval of events BASS_MIDI_StreamGetEventsEx * Bulk MIDI state retrieval/setting BASS_ATTRIB_MIDI_STATE (BASS_ChannelGet/SetAttributeEx option) * Support for delaying custom events, including delta-time info in raw MIDI data BASS_MIDI_EVENTS_TIME (BASS_MIDI_StreamEvents flag) * Cancellation of pending custom events BASS_MIDI_EVENTS_CANCEL (BASS_MIDI_StreamEvents flag) * Marker for the start of each track in SMF2 files BASS_MIDI_MARK_TRACKSTART (BASS_MIDI_StreamGetMark type) * Ignoring of soundfont effect levels BASS_MIDI_FONT_NOFX (BASS_MIDI_FontInit/Ex flag) * Maximum voice limit increased to 100000 BASS_CONFIG_MIDI_VOICES (BASS_SetConfig option) BASS_ATTRIB_MIDI_VOICES (BASS_ChannelSetAttribute option) * Unicode support for default soundfont option on Windows BASS_CONFIG_MIDI_DEFFONT * BASS_CONFIG_UNICODE option support for input device names BASS_MIDI_InGetDeviceInfo * Improved seeking with MIDI files that have events for a channel in multiple tracks BASS_ChannelSetPosition * Fix for 2GB size limit when unpacking a soundfont on Windows BASS_MIDI_FontUnpack 2.4.9 - 4/12/2014 ----------------- * SFZ soundfont support BASS_MIDI_FontInit/User * Support for XG drums in bank 127 of SF2 soundfonts BASS_MIDI_FONT_XGDRUMS (BASS_MIDI_FontInit/Ex flag) * Key pressure/aftertouch support MIDI_EVENT_KEYPRES (BASS_MIDI_StreamEvent/s) MIDI_EVENT_KEYPRES_VIBRATO/PITCH/FILTER/VOLUME (BASS_MIDI_StreamEvent/s) * 3rd effect path for custom processing BASS_MIDI_CHAN_USERFX (BASS_MIDI_StreamGetChannel option) MIDI_EVENT_USERFX (BASS_MIDI_StreamEvent/s) MIDI_EVENT_USERFX_LEVEL (BASS_MIDI_StreamEvent/s) MIDI_EVENT_USERFX_REVERB (BASS_MIDI_StreamEvent/s) MIDI_EVENT_USERFX_CHORUS (BASS_MIDI_StreamEvent/s) * Custom reverb/chorus effect processing BASS_MIDI_CHAN_CHORUS/REVERB (BASS_MIDI_StreamGetChannel options) * Custom channel processing output routed to reverb/chorus/custom effects BASS_MIDI_StreamGetChannel * Default drum reverb/chorus levels set to XG spec in XG mode (GS/GM modes too) MIDI_EVENT_DRUM_REVERB/CHORUS (BASS_MIDI_StreamEvent/s) * Decay time event MIDI_EVENT_DECAY (BASS_MIDI_StreamEvent/s) * Support for up to 65536 presets per bank BASS_MIDI_StreamSetFonts MIDI_EVENT_PROGRAM (BASS_MIDI_StreamEvent/s) * Input ports to receive MIDI data from other software on Linux BASS_MIDI_InInit BASS_CONFIG_MIDI_IN_PORTS (BASS_SetConfig option) SYNTH example updated * Single note releasing when there are overlapping instances of the same note BASS_MIDI_NOTEOFF1 (BASS_MIDI_StreamCreateFile/User/URL flag) * Ignoring of system resets with unchanged mode BASS_MIDI_NOSYSRESET (BASS_MIDI_StreamCreateFile/User/URL flag) MIDI_EVENT_SYSTEM (BASS_MIDI_StreamEvent/s) * Disabling of running status BASS_MIDI_EVENTS_NORSTATUS (BASS_MIDI_StreamEvents flag) * Maximum voice limit increased to 1000 BASS_CONFIG_MIDI_VOICES (BASS_SetConfig option) BASS_ATTRIB_MIDI_VOICES (BASS_ChannelSetAttribute option) * Reduction of 24-bit data to 16-bit when packing soundfont samples BASS_MIDI_PACK_16BIT (BASS_MIDI_FontPack flag) * Support for remaining SF2 generators: fixed key, fixed velocity, key to vol/mod envelope hold/decay * Fix for multi-track custom event sequence stream creation BASS_MIDI_StreamCreateEvents 2.4.8 - 2/5/2013 ---------------- * User file soundfont loading BASS_MIDI_FontInitUser * Retrieval of all of a soundfont's preset numbers BASS_MIDI_FontGetPresets * More flexible soundfont preset mapping BASS_MIDI_FONT_EX (BASS_MIDI_StreamSetFonts/GetFonts flag) BASS_MIDI_FONTEX structure * Bank LSB controller support MIDI_EVENT_BANK_LSB (BASS_MIDI_StreamEvent/s) BASS_MIDI_FONTEX structure * Modulation depth range control MIDI_EVENT_MODRANGE (BASS_MIDI_StreamEvent/s) * Channel pressure destination control MIDI_EVENT_CHANPRES_VIBRATO/PITCH/FILTER/VOLUME (BASS_MIDI_StreamEvent/s) * Unhandled controller event MIDI_EVENT_CONTROL (BASS_MIDI_StreamEvent/s) * Reverb send level default changed to 40 (was 0) MIDI_EVENT_REVERB (BASS_MIDI_StreamEvent/s) * Retrieval of events from all tracks at once BASS_MIDI_StreamGetEvents * Copyright/instrument/track name markers BASS_MIDI_MARK_COPY (BASS_MIDI_StreamGetMark type) BASS_MIDI_MARK_INST (BASS_MIDI_StreamGetMark type) BASS_MIDI_MARK_TRACK (BASS_MIDI_StreamGetMark type) * Retrieval of all markers at once BASS_MIDI_StreamGetMarks * New sync type that supports all marker types BASS_SYNC_MIDI_MARK (BASS_ChannelSetSync type) * Non-removal of empty space at the end of a MIDI file BASS_MIDI_NOCROP (BASS_MIDI_StreamCreateFile/User/URL flag) * Omission of a WAVE header when packing soundfont samples BASS_MIDI_PACK_NOHEAD (BASS_MIDI_FontPack flag) * Streams created via the plugin system use the output device's sample rate BASS_StreamCreateFile/etc * Automatic BASS_UNICODE flag use in C++ and Delphi BASS_MIDI_StreamCreateFile/URL BASS_MIDI_FontInit/Pack/Unpack 2.4.7 - 29/6/2012 ----------------- * Custom event sequence streams BASS_MIDI_StreamCreateEvents * Sinc interpolated sample mixing BASS_MIDI_SINCINTER (BASS_MIDI_StreamCreate/Events/File/User/URL flag) * Asynchronous sample loading BASS_ATTRIB_MIDI_CPU (BASS_ChannelSetAttribute option) * Preset unloading BASS_MIDI_FontUnload * Note stopping without sustain/decay BASS_EVENT_NOTE (BASS_MIDI_StreamEvent/s) * Syncing on all event types BASS_SYNC_MIDI_EVENT (BASS_ChannelSetSync type) * Marker tick position retrieval BASS_MIDI_MARK_TICK (BASS_MIDI_StreamGetMark flag) * Maximum voice limit increased to 500 BASS_CONFIG_MIDI_VOICES (BASS_SetConfig option) BASS_ATTRIB_MIDI_VOICES (BASS_ChannelSetAttribute option) * Default voice limit raised to 40 on Android/iOS BASS_CONFIG_MIDI_VOICES (BASS_SetConfig option) * Active voice count retrieval BASS_ATTRIB_MIDI_VOICES_ACTIVE (BASS_ChannelGetAttribute option) * Use of the device's current output rate BASS_MIDI_StreamCreate/Events/File/User/URL * Memory-mapped soundfont loading BASS_MIDI_FONT_MMAP (BASS_MIDI_FontInit flag) * Fix for applying multiple events in BASS_MIDI_EVENTS_STRUCT mode BASS_MIDI_StreamEvents * Marker sync compatibility (with mixer/splitter/tempo/reverse streams) fix BASS_SYNC_MIDI_MARKER/CUE/LYRIC (BASS_ChannelSetSync types) * MIDI sysex input compatibility fix for some drivers on Windows MIDIINPROC 2.4.6 - 30/3/2011 ----------------- * MIDI input device support BASS_MIDI_InGetDeviceInfo BASS_MIDI_InInit BASS_MIDI_InFree BASS_MIDI_InStart BASS_MIDI_InStop MIDIINPROC SYNTH example updated * Multiple event processing including support for raw MIDI data BASS_MIDI_StreamEvents * CPU usage limiting BASS_ATTRIB_MIDI_CPU (BASS_ChannelSetAttribute option) * Scale/octave tuning MIDI_EVENT_SCALETUNING (BASS_MIDI_StreamEvent/s) * Soft pedal event MIDI_EVENT_SOFT (BASS_MIDI_StreamEvent/s) * Random panning MIDI_EVENT_PAN (BASS_MIDI_StreamEvent/s) * System reset event MIDI_EVENT_SYSTEM/EX (BASS_MIDI_StreamEvent/s) * Resetting of overridden drum key pan/reverb/chorus back to normal MIDI_EVENT_DRUM_PAN/REVERB/CHORUS (BASS_MIDI_StreamEvent) * Retrieval of drum key event values BASS_MIDI_StreamGetEvent * All events initialized to a MIDI file's 1st tick values BASS_MIDI_StreamGetEvent * Adjustable MIDI channel count BASS_ATTRIB_MIDI_CHANS (BASS_ChannelSetAttribute option) * Adjustable voice limit BASS_ATTRIB_MIDI_VOICES (BASS_ChannelSetAttribute option) * Preloaded presets are not automatically compacted BASS_MIDI_FontLoad BASS_CONFIG_MIDI_COMPACT (BASS_SetConfig option) * Multiple instances of a soundfont BASS_MIDI_FontInit * Xcode examples project added for OSX 2.4.5 - 8/2/2010 ---------------- * Key signature retrieval BASS_MIDI_MARK_KEYSIG (BASS_MIDI_StreamGetMark type) BASS_SYNC_MIDI_KEYSIG (BASS_ChannelSetSync type) * Tempo event initialized to MIDI file's 1st tick value MIDI_EVENT_TEMPO (BASS_MIDI_StreamGetEvent) * UTF-16 support on OSX BASS_UNICODE (BASS_MIDI_StreamCreateFile/BASS_MIDI_FontInit/Pack/Unpack flag) 2.4.4 - 24/8/2009 ----------------- * Attack & release time events MIDI_EVENT_ATTACK/RELEASE (BASS_MIDI_StreamEvent) * Drum key level NRPN event MIDI_EVENT_DRUM_LEVEL (BASS_MIDI_StreamEvent) * MIDI file event retrieval BASS_MIDI_StreamGetEvents * Time signature retrieval BASS_MIDI_MARK_TIMESIG (BASS_MIDI_StreamGetMark type) BASS_SYNC_MIDI_TIMESIG (BASS_ChannelSetSync type) * Default soundfont configuration BASS_CONFIG_MIDI_DEFFONT (BASS_SetConfig option) 2.4.3 - 19/3/2009 ----------------- * Possibility of applying DSP/FX to individual MIDI channels BASS_MIDI_StreamGetChannel * Per-track volume control BASS_ATTRIB_MIDI_TRACK_VOL (BASS_ChannelSetAttribute option) * Support for all tracks in format 2 MIDI files BASS_MIDI_StreamCreateFile/User/URL 2.4.2 - 28/10/2008 ------------------ * Decaying of old sound when seeking BASS_MIDI_DECAYSEEK (BASS_MIDI_StreamCreateFile/User/URL flag) MIDITEST example updated (C version) * End decaying now also applies when looping BASS_MIDI_DECAYEND (BASS_MIDI_StreamCreateFile/User/URL flag) * Support for 28MBGM.SF2 and CT8MGM.SF2 as default soundfonts 2.4.1 - 9/7/2008 ---------------- * Ticks-per-beat retrieval BASS_ATTRIB_MIDI_PPQN (BASS_ChannelGetAttribute option) 2.4 - 2/4/2008 -------------- * Tick-based positioning BASS_POS_MIDI_TICK (BASS_ChannelGetLength/GetPosition/SetPosition mode) BASS_SYNC_MIDI_TICK (BASS_ChannelSetSync type) * Preset name retrieval BASS_MIDI_FontGetPreset * Text markers BASS_MIDI_MARK_TEXT (BASS_MIDI_StreamGetMark type) BASS_SYNC_MIDI_TEXT (BASS_ChannelSetSync type) * Individual marker retrieval BASS_MIDI_StreamGetMark BASS_MIDI_StreamGetMarks *removed* * Marker index passed to marker sync callbacks BASS_SYNC_MIDI_MARKER/CUE/LYRIC * Use of BASS_Init sample rate BASS_MIDI_StreamCreate/File/User/URL * Support for updated user file stream system BASS_MIDI_StreamCreateFileUser * 64-bit file positioning BASS_MIDI_StreamCreateFile * Callback "user" parameters changed to pointers BASS_MIDI_StreamCreateURL BASS_MIDI_StreamCreateFileUser 2.3.0.3 - 10/7/2007 ------------------- * Syncing on events BASS_SYNC_MIDI_EVENT (BASS_ChannelSetSync type) 2.3.0.2 - 26/2/2007 ------------------- * Reverb and chorus MIDI_EVENT_REVERB/CHORUS (BASS_MIDI_StreamEvent) MIDI_EVENT_REVERB_TIME/DELAY/LOCUTOFF/HICUTOFF/LEVEL (BASS_MIDI_StreamEvent) MIDI_EVENT_CHORUS_DELAY/DEPTH/RATE/FEEDBACK/LEVEL/REVERB (BASS_MIDI_StreamEvent) BASS_MIDI_NOFX (BASS_MIDI_StreamCreate/File/User/URL flag) * Resonant low-pass filters MIDI_EVENT_CUTOFF/RESONANCE (BASS_MIDI_StreamEvent) * Portamento MIDI_EVENT_PORTAMENTO/TIME/NOTE (BASS_MIDI_StreamEvent) * Fine-tuning MIDI_EVENT_FINETUNE/COARSETUNE (BASS_MIDI_StreamEvent) * Drum key specific parameters MIDI_EVENT_DRUM_FINETUNE/COARSETUNE/PAN/REVERB/CHORUS/CUTOFF/RESONANCE (BASS_MIDI_StreamEvent) * Support for mono channel mode MIDI_EVENT_MODE (BASS_MIDI_StreamEvent) * Support for master volume MIDI_EVENT_MASTERVOL (BASS_MIDI_StreamEvent) * Channel level control MIDI_EVENT_MIXLEVEL (BASS_MIDI_StreamEvent) * Channel transposing MIDI_EVENT_TRANSPOSE (BASS_MIDI_StreamEvent) * Retrieval of current event values BASS_MIDI_StreamGetEvent * Soundfont volume control BASS_MIDI_FontSetVolume/GetVolume * Track number added to markers and syncs BASS_MIDI_MARK (track member) BASS_SYNC_MIDI_MARKER/CUE/LYRIC 2.3.0.1 - 1/12/2006 ------------------- * Optionally apply matching soundfonts to all banks BASS_CONFIG_MIDI_AUTOFONT (BASS_SetConfig option) * Support for 0 length notes 2.3 - 14/11/2006 ---------------- * First release Bug reports, Suggestions, Comments, Enquiries, etc ================================================== If you have any of the aforementioned please visit the BASS forum at the website.