BASSZXTUNE - chiptune support for BASS

Started by ZXED, 15 Apr '14 - 15:18

ZXED

The new version (v2.4.4) of BASSZXTUNE is out!

Major improvements:
    - new formats: NSF, NSFE, GBS, SAP, HES, VGM, GYM, AHX
    - seek speed was increased dramatically for some formats
    - Android i686 build

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.4/

Quote from: ZXED on 30 Jul '15 - 22:01In the next version I'll probably try to disable the support for the formats that overlap with BASS-native formats.
This is not implemented yet.

Dhry

Is there a way to make this work with the 1by1 player? I extracted basszxtune.dll and basszxtune.lib into the 1by1 folder but it just crashes the player. Usually you can just extract a BASS extension into the folder and it will work fine by extending bass.dll automatically.

Cheers
DRS

haspor

Quote from: ZXED on 15 Nov '15 - 09:53The new version (v2.4.4) of BASSZXTUNE is out!

Major improvements:
    - new formats: NSF, NSFE, GBS, SAP, HES, VGM, GYM, AHX
    - seek speed was increased dramatically for some formats
    - Android i686 build

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.4/

Quote from: ZXED on 30 Jul '15 - 22:01In the next version I'll probably try to disable the support for the formats that overlap with BASS-native formats.
This is not implemented yet.


outstanding job :)

ZXED

Quote from: Dhry on 11 Dec '15 - 23:13I extracted basszxtune.dll and basszxtune.lib into the 1by1 folder but it just crashes the player.

Weird. Judging by the debug output, the crash happens outside of the plugin, before the plugin is even loaded. It seems like 1by1 can't load the plugin because of some binary incompatibility or something like that. Also, 1by1 provides no logs nor error messages, so I can't effectively locate the source of the problem. I tested the plugin with another music player - AIMP, and they work fine together. Currently, I have no idea why the plugin doesn't work with 1by1.

BTW, *.lib files are only needed for development, you don't have to copy these files alongside *.dll.

Jfarro

I'm working on a Windows UWP app using Bass, and was looking at adding .nsf and SID support.  This library looks like a much better avenue than my other plan (trying to shim in FMod somehow and then programmatically alter).

How tough would it be to have this work with a windows UWP app? I'm willing to help where I can.

Dhry

Quote from: ZXED on 20 Dec '15 - 14:25Weird. Judging by the debug output, the crash happens outside of the plugin, before the plugin is even loaded. It seems like 1by1 can't load the plugin because of some binary incompatibility or something like that. Also, 1by1 provides no logs nor error messages, so I can't effectively locate the source of the problem. I tested the plugin with another music player - AIMP, and they work fine together. Currently, I have no idea why the plugin doesn't work with 1by1.

No worries ZXED, thanks for looking at it. I might post on the 1by1 forum and see what they say about it.

Cheers
DRS

ZXED

Quote from: Jfarro on  5 Jan '16 - 09:46How tough would it be to have this work with a windows UWP app?

I'll look into it and contact you via PM when I have any ideas. Also, do you have a fully working UWP example (project source code) that uses some other BASS add-on? That could be a great help for me since I have no experience with UWP projects.

Jfarro

I do have Bass for Windows phone working, along with Midi support.  There were some changes Ian I believe had to do to Bass to use the Storage API's for file loading..and when I consumed them I had to use Task.Run to do loads on a background thread. Other than that I have the Midi addon working quite well with soundfont support and such.

Jfarro

#33
(PLEASE SEE EDIT BELOW)
ZXED followed up with me and let me know that he tested it...and this just worked! I wanted to share this with any other fellow UWP windows developers.  I've also verified it in my app..the integration was really smooth.  This is for x64/x86...I'll work to compile it for Arm and see if I can get that working as well.

Thanks a ton ZXED for sharing this with the community...tonight I got to hear some of my favorite c64 tunes (Legacy of the ancients and the Koronis Rift theme) in an app that I'd put together with help from your library!

EDIT: While this did indeed compile and run, it does not currently pass store certification.  There are a number of MSVCRT api's which are called which the store does not allow. I'll see if I can help ZXED out and if we can get this working.


ZXED

The new version (v2.4.5) of BASSZXTUNE is out!

This version has undergone a huge rewrite and all constants BASS_POS_ZXTUNE_*, BASS_TAG_ZXTUNE_* and other constants and their usage have been changed! See README file for more details if you use any of these constants. Hopefully, there will be no such major changes from now on.

Major improvements:
    - new info can be retreived via tags: number of frames, loop frame, additional module strings (e.g. samples/instruments names) and more;
    - ability to set maximum allowed file size (can be somewhat useful on mobile devices with limited processing power), current max file size has been changed to 2 MiB;
    - fixed some crashes on Android.

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.5/

The project source code has been moved to:
https://bitbucket.org/z80maniac/zxtune

Previously the source code was split between SourceForge and Bitbucket. Now all the source code is on Bitbucket. Also, now you can find clear instructions on how to build the add-on yourself:
https://bitbucket.org/z80maniac/zxtune/src/master/apps/plugins/BUILD.TXT
https://bitbucket.org/z80maniac/zxtune/src/master/apps/plugins/bass/BUILD.TXT

There will be no UWP version for now. May be in the next release. Also, there will be no corresponding XMplay plugin release because there were almost no changes in it since the last release.

ZXED

The new version (v2.4.6) of BASSZXTUNE is out!

Major changes:
    - default maximum file size is now 256 MiB

New supported formats:
    - PlayStation 1&2 Sound Format (PSF,PSF2)
    - Nintendo Ultra64 Sound Format (USF)
    - GameBoy Advance Sound Format (GSF)
    - HivelyTracker (HVL)

Known bugs:
    - Crash when opening compressed USF files on 64-bit Windows

Additional notes:
    - This release added support to PSF-like formats. These formats are usually multi-file, i.e. they need several files at once for a single tune (e.g. *.minipsf + *.psflib). BASSZXTUNE supports only single-file formats, but it supports archived modules. So, to play multi-file formats you may archive all needed files into any supported archive (zip, 7z, tar, gz, rar) optionally changing the extension of the archive to a supported extension (e.g. *.psf).
    - *.lib files for MSVC are no longer shipped inside the release archives. You can still use *.lib files from the previous versions or create them yourself.

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.6/


Quote from: montoner0 on 28 Jul '15 - 01:53Is there a way to disable some formats? I would like to use standard BASS capabilities for some file formats, like .xm, .it and such.
It turned out to be harder than I thought, so disabling formats will not be implemented. Instead you may use some hack to achieve the similar result. The add-on will not open any file if its filesize is bigger than the allowed filesize (BASS_CONFIG_ZXTUNE_MAXFILESIZE setting). So you may try the following:
DWORD oldVal = BASS_GetConfig(BASS_CONFIG_ZXTUNE_MAXFILESIZE);
BASS_SetConfig(BASS_CONFIG_ZXTUNE_MAXFILESIZE, 0);
BASS_StreamCreateFile(...);
BASS_SetConfig(BASS_CONFIG_ZXTUNE_MAXFILESIZE, oldVal);

Of course, to only disable BASS-supported formats, it's still easier to just call BASS_MusicLoad before BASS_StreamCreateFile.

Quote from: ZXED on 30 Oct '16 - 09:04There will be no UWP version for now. May be in the next release.
I decided to completely drop UWP version for the time being due to much complicated build and test processes. However, the project is open source, so anyone willing to try to make UWP version can fork the project here:
https://bitbucket.org/z80maniac/zxtune

Davi

The BASSZXTUNE is incorrectly reporting length/seek position when "BASS_SAMPLE_FLOAT" is used to open stream.

ZXED

Thanks for a bug report! Yes, the bug is reproducible. I will try to fix it in the next version.

ZXED

The new version (v2.4.7) of BASSZXTUNE is out!

New supported formats:
    - Sega Dreamcast (DSF)
    - Sega Saturn (SSF)
    - Nintendo DS (2SF)
    - Startrekker (MOD)

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.7/

Quote from: Davi on 13 Mar '18 - 16:47The BASSZXTUNE is incorrectly reporting length/seek position when "BASS_SAMPLE_FLOAT" is used to open stream.
Fixed.

mccs

1by1 (V.1.90) plays fine with files/dll in 1by1 folder:
- bass.dll - 105 KB (107.584 Bytes) version 2.4.10.0
- in_bass.dll - 9,00 KB (9.216 Bytes) version 2.2.0.0
no other codex in 1by1 folder!  8)

ZXED

I'm not sure how it has anything to do with BASSZXTUNE.

However, for anyone who is interested: there's possibly a bug in 1by1 that crashes the player when this add-on is installed:
  • The player allocates a fixed amount of memory to store the add-on extension string (BASS_PLUGINFORM::exts).
  • BASSZXTUNE has a very long extension string that does not fit in that memory space.
  • Stack overflow...
How did I assume that? It's because when I shorten the list of the supported extensions (making it 2 extensions, for example), 1by1 is able to load the add-on and use it correctly.

I've mailed this bug report to 1by1 developer.

ZXED

The new version (v2.4.8) of BASSZXTUNE is out!

This version adds a partial support for RASTER Music Tracker (RMT) files (some *.rmt files still cannot be played). Also, see README.TXT for a list of upstream ZXTune changes/fixes.

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.8/

ZXED

The new version (v2.4.9) of BASSZXTUNE is out!

Notable changes:
    - Support for a new extension: *.kss (previous versions supported KSS files too, but now KSS support in ZXTune is more stable, so it's added to BASSZXTUNE supported extensions).

    - Added support for 64-bit Android (arm64-v8a and x86_64). Note that android-x86_64 lib was not tested at all (by me).

    - All Android libs now require dynamic linking to libc++ runtime (libc++_shared.so).

    - Windows libs now have two versions:
        a) Stand-alone, with built-in runtime (the usual libs).
        b) Linked to shared MSYS2 runtime (read more in the README about this one; basically it's for those who already use shared MSYS2 runtime in their projects).

    - All tags information about patterns is removed (PATTERNS tag in BASS_ChannelGetTags), because the corresponding functionality was removed from ZXTune.

    - Build process is moderately changed:
        a) Added Docker support for Linux and Android.
        b) Android builds now use official NDK.
        c) OSX build does not require MacPorts anymore.
        d) A user can choose what Boost version to use.
      for more info, see BUILD.TXT (https://bitbucket.org/z80maniac/zxtune/src/master/apps/plugins/BUILD.TXT)

There are also a lot of bugfixes (mostly from the upstream ZXTune code; see full changelog for details).

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.9/

ZXED

A new version (v2.4.10) of BASSZXTUNE is out!

Notable changes:
    - Support for Farbrausch V2 Synthesizer System file format (*.v2m)
    - Support for Sound 98 file format (*.s98)

Downloads, details & full changelog:
https://sourceforge.net/projects/basszxtune/files/basszxtune/v2.4.10/

r0ger

is there a way i can load the zxtune plug on MASM32 ? i am coding on WinASM and i actually need it , mostly for V2M's .
i use MagicH's v2m player for the v2 playback , and some V2m's (especially the newer ones) don't work.

sorry if i double post this, i've posted in a wrong topic , i meant to post it here actually.

ZXED

Quote from: r0ger on  2 Nov '20 - 16:56some V2m's (especially the newer ones) don't work
Are you sure that ZXTune can play these tracks?

Quote from: r0ger on  2 Nov '20 - 16:56is there a way i can load the zxtune plug on MASM32 ?
I guess it can be loaded like any other BASS add-on, via BASS_PluginLoad. Did you try it? There's MASM API for BASS: https://www.un4seen.com/bass.html#apis

Quote from: r0ger on  2 Nov '20 - 16:56i use MagicH's v2m player for the v2 playback
I don't know your use case, but there's also the original V2M library/player from farbrausch: http://www.farbrausch.de/prod&which=86.py

r0ger

#47
Quote from: ZXED on  2 Nov '20 - 17:50Are you sure that ZXTune can play these tracks?

Well it depends on some plugin version used on every v2m (either 1.0 or 1.5).
can you tell me what version of the v2 plugin you've used on the ZXTune?

ZXED

Quote from: r0ger on  2 Nov '20 - 20:06can you tell me what version of the v2 plugin you've used on the ZXTune?

ZXTune is using this sources for V2M: https://github.com/jgilje/v2m-player with some modifications: https://bitbucket.org/zxtune/zxtune/commits/?search=v2m

You need to keep in mind that BASSZXTUNE is just a wrapper around ZXTune library. ZXTune itself is not developed by me. I only wrote a small glue code between BASS and ZXTune, and applied some patches to ZXTune core to make it all work. I know some basic ZXTune internals, but in general case, especially regarding decoding techinical details, it's better to ask the author of ZXTune.

Here's the official ZXTune website: https://zxtune.bitbucket.io. You can download ZXTune player and try to play your v2m files.

drummingdemon

Hi!

Thanks for your hard work - any chance you'll do an Apple Silicon dylib (osx-arm64)?

Cheers!