
sid.hwp
=======

This plugin allows Hollywood to load and play SID files. It is based on cRSID by
Hermit (Mihaly Horvath).

Once this plugin is installed, OpenMusic() will "automagically" be able to open
SID music files. You can also query the number of subsongs in a SID file by using
GetAttribute() with #MUSIC and #ATTRNUMSUBSONGS. Individual subsongs can be played
using PlaySubsong().

A demo applet is also included. You can run this applet using the freely available
Hollywood Player.

There are a few commands that can be used to configure the SID replayer:

sid.SetPlayingTime(ms): This function can be used to set the duration of the music
in milliseconds. If you don't set a duration, the SID file will play forever
(exception: before Hollywood 9 the SID file will play for 10 minutes if no duration
is set; starting with Hollywood 9, the SID file will play forever if no duration
is set).

sid.SetModel(model): This command can be used to set the SID model the replayer
should emulate. This can be set to either #SID_6581 or #SID_8580.

sid.SetStereo(on): This command can be used to enable/disable stereo mode. By
default, stereo mode is disabled.

sid.SetLightMode(on): This command can be used to enable/disable cRSID's light
mode. Light mode is faster but has a slightly lower audio quality. By default,
light mode is disabled which means that the SID replayer uses high-quality 7.4x
oversampled wave-generators which take their toll on the CPU so if you're on a
slower system (e.g. 68k) you might want to enable light mode to disable the high-
quality wave-generators to make the SID replayer less heavy on the CPU.

If you're using Hollywood 10 or better, you can also configure the SID replayer
by passing the desired options directly to OpenMusic() via user tags. The following
user tags are recognized by the SID plugin:

- PlayingTime: does the same as sid.SetPlayingTime()
- Model: does the same as sid.SetModel()
- Stereo: does the same as sid.SetStereo()
- LightMode: does the same as sid.SetLightMode()

Here is an example:

OpenMusic(1, "test.sid", {UserTags = {Model = #SID_8580, LightMode = True}})

The code above opens "test.sid" and tells the replayer to emulate a 8580 SID
and enable light mode for faster playback.


History
=======

Version 2.0:    (20-Sep-24)
- Change: Amiga installer will now also copy the plugins for all platforms to
  the linker plugins directory so that they can be easily linked to executables
- Change [iOS]: Added arm64 build for the iOS simulator and removed x86 build
  for the iOS simulator because the iOS simulator is no longer compatible with
  x86
- Change [Android]: Removed build for 32-bit softfloat ARM; nobody uses this
  any longer these days
- New [macOS]: Added support for the macOS arm64 platform
- Change [OS3]: Removed build for the OS3 fpu architecture (m68881/2); this is
  no longer necessary because the new replayer is fully integer-based now
- New: Added sid.SetLightMode() command; this command can be used to
  enable/disable cRSID's light mode; light mode is faster but has a slightly
  lower audio quality; by default, light mode is disabled which means that the
  SID replayer uses high-quality 7.4x oversampled wave-generators which take
  their toll on the CPU so if you're on a slower system (e.g. 68k) you might want
  to enable light mode to disable the high-quality wave-generators to make the
  SID replayer less heavy on the CPU; when using Hollywood 10 you can also set
  this option directly in your OpenMusic() call through the "UserTags" table
  argument by using the "LightMode" user tag
- New: Added sid.SetStereo() command; this command can be used to
  enable/disable stereo mode (by default, stereo mode is disabled); when using
  Hollywood 10 you can also set this option directly in your OpenMusic() call
  through the "UserTags" table argument by using the "Stereo" user tag
- New: Added sid.SetModel() command; this command can be used to set the SID
  model the replayer should emulate; this can be set to either #SID_6581 or
  #SID_8580; when using Hollywood 10 you can also pass the SID model directly to
  OpenMusic() through the "UserTags" table argument by using the "Model" user tag
- New: Changed SID replayer core from TinySID to cRSID by Hermit (Mihaly
  Horvath); this replayer core has a much better compatibility in comparison to
  TinySID and also supports the RSID format (real SID) which means that SIDs that
  are multi-speed and/or contain samples and/or use additional interrupt sources
  or do busy looping should work correctly now (with the old TinySID core they
  often led to a program freeze); of course, the increased compatibility comes at
  the cost that the new replayer is a bit slower than the old TinySID-based one
  but not that much; there's also a light mode which you can enable on slower
  systems like 68k (see above)
- New: Plugin supports Hollywood 10's user tag interface for file adapters now;
  all user tags will be forwarded to the corresponding file adapters now
- New: Alternatively to calling sid.SetPlayingTime() you can now also just pass
  the desired duration to OpenMusic() or LoadSample() in the new "PlayingTime"
  tag in the optional "UserTags" table argument of those functions; this is
  possible by Hollywood 10's new user tag interface so Hollywood 10 is required
  for this feature   
- Change: Plugin supports Hollywood 9.0's infinite looping mode now; if
  sid.SetPlayingTime() hasn't been used to set a specific playing time, all
  modules played by the plugin will now automatically loop forever if Hollywood
  9.0 or better is used

Version 1.0:    (25-Feb-18)
- First release


Copyright
=========

This plugin was written by Andreas Falkenhahn <andreas@airsoftsoftwair.de>
See the COPYING file in this package for conditions concerning distribution
of this plugin. Visit http://www.hollywood-mal.com/ for more information
on Hollywood and more plugins.
