audacious-media-player / audacious

A lightweight and versatile audio player
https://audacious-media-player.org
Other
814 stars 109 forks source link

ASAP plugin #586

Closed Audacious-Bot closed 4 months ago

Audacious-Bot commented 4 months ago

Author Name: Piotr Fusik Original Redmine Issue: https://redmine.audacious-media-player.org/issues/451 Original Date: 2014-07-01


Hello,

I am developer of Another Slight Atari Player (ASAP), which plays music from the Atari 8-bit computers. See http://asap.sourceforge.net/ for more information.

As part of my project, I've been maintaining a plugin for Audacious. It's compatible with Audacious 3.4 and earlier versions. While it's always been much work to update it for new Audacious releases without breaking backward compatibility, now the changes in Audacious are too big for me to maintain this plugin anymore.

Please take over the ASAP plugin into audacious-plugins. All you need from my code is: asap.c, asap.h and audacious/asapplug.c. My code is GPL 2+.

Thank you, Piotr

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: John Lindgren Original Date: 2014-07-01T16:10:24Z


Yes, Audacious has gone through a lot of refactoring over the years, and trying to maintain compatibility with both old and new releases would be difficult.

Can the core ASAP code (asap.c and asap.h, I guess) be built as a shared library? Linking to a shared library which will be updated separately would be better than embedding a copy of the emulator into audacious-plugins, where it would likely get out of date relative to the current ASAP version.

Also, do you have a test file you could attach or email? Just so I can make sure that I don't break anything in the course of updating the plugin.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Piotr Fusik Original Date: 2014-07-01T18:13:37Z


Structures are opaque, but I plan to make breaking changes in the interface (although it didn't happen in the last three years).

There are about two releases of ASAP a year. If we go with copy of ASAP in audacious-plugins, I can notify you of new releases.

For sample files, see the "Input formats" section of http://asap.sourceforge.net/ ASMA is a huge archive of SAP files and http://asap.sourceforge.net/examples.zip is a tiny set of files in different formats.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: John Lindgren Original Date: 2014-07-04T17:21:38Z


Apparently asap.c and asap.h are code generator output (http://cito.sourceforge.net/)? I don't want to include machine generated code in audacious-plugins, especially if the code generator is not well-known and commonly available.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Piotr Fusik Original Date: 2014-07-06T15:11:56Z


What's wrong with generated C code? To re-generate it, you'd need:

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: John Lindgren Original Date: 2014-07-11T17:29:49Z


Releasing machine-generated code means it is not maintainable (by me or anyone else) without going to extra effort to download, compile, and install the code generator. The overhead will easily double the time it takes to fix a bug in the code, even ignoring the possibility that the code generator itself has bugs in it.

C++ is a well-known, standardized, and extensively used language, and there are industry-grade compilers readily available on every version of UNIX around. In my opinion, that's a good enough reason to choose it over the latest "new and improved" language or language variant. You can use whatever language you want in your own projects, but if it's going to be included with audacious-plugins, it should be in C++.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Ariadne Conill Original Date: 2014-07-12T05:53:29Z


I don't see why this plugin is necessary. The Game_Music_Box-based plugin I made ages ago supports SAP files natively. If there is a fault with the emulation, myself or blargg would like to know about it.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Piotr Fusik Original Date: 2014-07-12T11:51:19Z


It's the first time I hear about Game_Music_Box. Apparently it bases on Game_Music_Emu, which is well known to me.

Let me list some differences between GME and ASAP:

Please correct me if I'm wrong.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Piotr Fusik Original Date: 2014-07-12T11:56:44Z


John: I understand your point. Can we go the shared library way? The interface would be asap.h and the ASAP shared library will be maintained and distributed by me.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: John Lindgren Original Date: 2014-07-12T20:39:33Z


Piotr Fusik wrote:

John: I understand your point. Can we go the shared library way? The interface would be asap.h and the ASAP shared library will be maintained and distributed by me.

That would be fine with me.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Ariadne Conill Original Date: 2014-07-12T23:04:31Z


I added TIME tag support very recently.

If you would like to go into more detail as to how Boremloza.sap is different, then I would be willing to hear you out there.

I think adding DigiMusic support would not be very difficult, it is something I could likely do in an afternoon. I am also not convinced on why providing an NTSC clock is important, although we already track scanlines, so I am pretty sure we could add this feature if proven useful.

Thusly, I do not think this is really worth our time vs. improving the current plugin.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: Piotr Fusik Original Date: 2014-07-21T10:26:32Z


I keep my fingers crossed for better SAP playback in GME.

Boremloza has unusual bass line. Two divisors are joined into 16-bit one, but the volume is set on both channels.

Audacious-Bot commented 4 months ago

Original Redmine Comment Author Name: John Lindgren Original Date: 2014-09-07T18:28:49Z


I submitted a patch to update the plugin source within ASAP: https://sourceforge.net/p/asap/patches/4/

Closing this ticket for now. Audacious 3.6 will bring further changes since we are moving to C++, but the plugin API changes have not been finalized yet.