The API remains a flat C-style DLL export, making it trivial to call from C, C++, Delphi, C#, VB.NET, Python, or even PureBasic.
// Sync when a song ends BASS_ChannelSetSync(stream, BASS_SYNC_END, 0, MyEndSyncProc, 0); // Sync at 30 seconds exactly BASS_ChannelSetSync(stream, BASS_SYNC_POS, BASS_ChannelSeconds2Bytes(stream, 30.0), MyTimeSyncProc, 0); bass.dll v2.4
Released: Mid-2000s (Iterative updates through 2020s) Developer: Ian Luck (Un4seen Developments) License: Shareware (Free for non-commercial, paid for commercial distribution) The API remains a flat C-style DLL export,
Version 2.4 didn't just add features; it represented a complete architectural shift that ensured BASS would survive the transition from Windows XP to Windows 11, from 32-bit to 64-bit, and from native code to managed wrappers. BASS has always distinguished itself from monolithic frameworks like DirectShow or FMOD by adhering to a simple promise: You give it a file or stream; it gives you raw PCM data. There is no GUI, no heavy scripting engine, and no bloat. There is no GUI, no heavy scripting engine, and no bloat
is perhaps the most elegant part of the API. You can attach a callback to fire at specific byte positions, times, or metadata changes.