Recent

Author Topic: Extended Module Player  (Read 13366 times)

Lulu

  • Sr. Member
  • ****
  • Posts: 405
Re: Extended Module Player
« Reply #45 on: October 16, 2024, 07:47:00 pm »
Hi, I was able to compile libxmp.dll 32b with no libgcc dependancies  8-)
but size is now 759k

Code: Pascal  [Select][+][-]
  1.         ntdll.dll => /c/Windows/SYSTEM32/ntdll.dll (0x7ff8633d0000)
  2.         KERNEL32.DLL => /c/Windows/System32/KERNEL32.DLL (0x7ff862080000)
  3.         KERNELBASE.dll => /c/Windows/System32/KERNELBASE.dll (0x7ff861040000)
  4.         msvcrt.dll => /c/Windows/System32/msvcrt.dll (0x7ff8632f0000)
  5.         libxmp.dll => /c/Pascal/TestLibXmp/libxmp-libxmp-4.6.0/build/libxmp.dll (0x657c0000)
  6.  

Tested on Win7 32b
wishing you a nice life!
GitHub repositories https://github.com/Lulu04

Fred vS

  • Hero Member
  • *****
  • Posts: 3871
    • StrumPract is the musicians best friend
Re: Extended Module Player
« Reply #46 on: October 16, 2024, 08:30:05 pm »
Excellent!

Did you try to strip it' ?
Code: Bash  [Select][+][-]
  1. > strip.exe libxmp.dll
I use Lazarus 2.2.0 32/64 and FPC 3.2.2 32/64 on Debian 11 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt.

https://github.com/fredvs
https://gitlab.com/fredvs
https://codeberg.org/fredvs

Lulu

  • Sr. Member
  • ****
  • Posts: 405
Re: Extended Module Player
« Reply #47 on: October 16, 2024, 08:58:08 pm »
I didn't know the strip command. After some research I understand it remove some info from compiled file.
Thank you fred, I've learn something new!

After the 'strip', the size of the file is 642k
Attached the 'stripped' version.
wishing you a nice life!
GitHub repositories https://github.com/Lulu04

Fred vS

  • Hero Member
  • *****
  • Posts: 3871
    • StrumPract is the musicians best friend
Re: Extended Module Player
« Reply #48 on: October 16, 2024, 09:38:17 pm »
I didn't know the strip command. After some research I understand it remove some info from compiled file.
Thank you fred, I've learn something new!

After the 'strip', the size of the file is 642k
Attached the 'stripped' version.

Thank you Lulu.  ;D

Strip remove some unused data for the executable, mainly used for debugging
But it can also have bad result so it is better to test it deeply.
I use Lazarus 2.2.0 32/64 and FPC 3.2.2 32/64 on Debian 11 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt.

https://github.com/fredvs
https://gitlab.com/fredvs
https://codeberg.org/fredvs

Lulu

  • Sr. Member
  • ****
  • Posts: 405
Re: Extended Module Player
« Reply #49 on: October 17, 2024, 09:54:53 am »
Strip remove some unused data for the executable, mainly used for debugging
But it can also have bad result so it is better to test it deeply.

Thank for the precision. To be sure, I've re-tested the stripped dll on my 32b machine (because I applyed 'strip' command with my 64b machine).
All is ok with UOS SimplePlayer and the three music modules.  :)

wishing you a nice life!
GitHub repositories https://github.com/Lulu04

Fred vS

  • Hero Member
  • *****
  • Posts: 3871
    • StrumPract is the musicians best friend
Re: Extended Module Player
« Reply #50 on: October 17, 2024, 02:00:33 pm »
Strip remove some unused data for the executable, mainly used for debugging
But it can also have bad result so it is better to test it deeply.

Thank for the precision. To be sure, I've re-tested the stripped dll on my 32b machine (because I applyed 'strip' command with my 64b machine).
All is ok with UOS SimplePlayer and the three music modules.  :)

Hello Lulu,
Your libxmp-32.dll was added in uos.
Many thanks.
Fre;D
I use Lazarus 2.2.0 32/64 and FPC 3.2.2 32/64 on Debian 11 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt.

https://github.com/fredvs
https://gitlab.com/fredvs
https://codeberg.org/fredvs

Gigatron

  • Sr. Member
  • ****
  • Posts: 412
  • Amiga Rulez !!
    • Gigatron Shader Network Demo
Re: Extended Module Player
« Reply #51 on: July 12, 2025, 02:16:15 pm »
Hi

Since XMPlayer 4.6.0 this library was updated 3 times and reach now V 4.6.3.

https://xmp.sourceforge.net/

Regards

Change logs:

4.6.3 (20250511):
   Changes by Alice Rowan:
   - Fix crashes when xmp_set_position is used to set a negative position.
     Negative positions now correctly return -XMP_ERROR_INVALID.
   - Fix crashes when xmp_set_row is used to set a negative row.
     Negative positions now correctly return -XMP_ERROR_INVALID.
   - Fix hangs when xmp_prev_position is used on the first position of
     a sequence which is preceded by an S3M/IT skip marker.
   - Fix out-of-bounds reads when xmp_next_position is used at the end of
     a 256 position module.
   - Fix hangs when seeking to an end-of-module marker caused by these
     positions getting assigned a non-existent sequence.
   - Document xmp_set_position/xmp_next_position/xmp_prev_position
     interactions with xmp_stop_module/xmp_restart_module.
   - Fix stack underflow in Pha Packer loader (CVE-2025-47256).
   - Slight performance improvements for the Oktalyzer and SFX loaders.
   - Fix broken conversion of ProRunner 2.0 pattern data.
   - xmp_set_tempo_factor no longer alters frame time calculation for
     xmp_get_frame_info. Frame time is now updated to account for the
     new time factor after calling xmp_scan_module.
   - Fix loading XMs with some types of harmless pattern truncation.
     See: Jazztiz/ta-da-da-da.xm, Sonic (UK)/phuture.xm, et al.
   - Fix Poly Tracker pattern break hex parameter.
   - Fix Digital Tracker broken instrument finetune.
   - Fix Digital Tracker 2.03 position jump effect for 4 channel DTMs.
   - Fix pattern loop jump interactions with same row pattern jump/break:
     Scream Tracker 3.03b+; Impulse Tracker 1.00 to 1.06 IT;
     Impulse Tracker 2.00+ IT/S3M; Modplug Tracker 1.16 IT/XM/S3M;
     Imago Orpheus IMF/S3M; Liquid Tracker LIQ/S3M; Poly Tracker;
     Digital Tracker <=2.02 DTM/MOD; Digital Tracker 2.03 (partial);
     Digital Tracker 1.9 (partial); Octalyser.
   Changes by Thomas Neumann:
   - Fix the pattern loop effect in Astroidea XMF loader.
   - Fix loading of Extreme Pinball modules.

4.6.2 (20250224):
   Changes by Alice Rowan:
   - Fix MED effect 1Fxy (delay and retrigger). The new implementation
     supports both delay and retrigger at the same time and repeats.
   - Fix MED effect FF3 (revert change from 4.6.1). The buggy version
     of this effect prior to OctaMED v5 is not currently supported.
   - Fix MED3 and MED4 time factor and tempos 1-10.
   - Fix MED4 effect 9xx (set speed).
   - Add support for MED3 and MED4 song files.
   - Better MED MMD tracker version fingerprinting.
   - Fix loading external instruments from the current directory.
   Changes by Thomas Neumann:
   - Fix oxm modules with empty samples (e.g.: The Four Ages.oxm)
   - Fix some modules would be misidentified as Scream Tracker 2.
   - Handle IT modules with edit history but no midi configuration
   Changes by Ozkan Sezer:
   - Revert a bad CVE fix to the miniz inflate code
   - Add missing HAVE_DIRENT definition to Android makefile.

4.6.1 (20250101):
   Changes by Claudio Matsuoka:
   - The full library is now under MIT license
   Changes by Alice Rowan:
   - Add stereo sample loading support for IT, S3M, XM, MED, LIQ, and
     Digital Tracker (partial).
   - Add sample preamplification to filter mixers for high sample rates.
   - Add support for Ultra Tracker tempo commands.
   - Load Ultra Tracker comments instead of skipping them.
   - Implement support for Protracker instrument swapping.
   - Implement retrigger effects for MED, OctaMED, and Liquid Tracker
     where only one retrigger occurs. Liquid Tracker (new format) and
     Digital Symphony now allow retrigger values larger than 15.
   - Fix XM envelope sustain points that exist on a zero-length loop.
   - Fix XM extra fine portamento effect memory.
   - Fix XM portamento up and portamento down memory (only for modules
     where FT2 bug compatibility is enabled, for now).
   - Fix loading edge case STMs with an EOF byte of 2.
   - Fix loading Imago Orpheus modules with null instrument magic
     strings, bidirectional samples, and disabled default panning.
   - Faster IT loading by buffering pattern, sample, and comment reads.
   - Fix loop detection edge cases broken by S3M/IT marker scan bugs.
   - Add fix for IT break to module scan (was missed in libxmp 4.5.0.)
   - Fix restart position for >64k sample and Digital Tracker MODs.
   - Reset Invert Loop position when a new instrument is encountered.
   - MOD: make presence of invert loop override tracker ID guesses.
     M.K. modules within Amiga limits which use EFx invert loop are
     now IDed as Protracker.
   - Multiple Digital Tracker bug fixes:
     * Support for loading Digital Tracker 2.03 DTMs (MOD patterns).
     * Support for loading Digital Tracker 1.9 DTMs (VERS/SV19).
     * Better Digital Tracker version fingerprinting.
     * Fix Digital Tracker 2.03 global sample rate and bit depth fields.
     * Fix Digital Tracker 2.04 pattern note loading (was off-by-one).
     * Fix Digital Tracker instrument loops (loop end was off-by-one).
     * Allow patterns up to 396 rows in Digital Home Studio DTMs.
     * Support for Digital Tracker 1.9 "MIDI note" transpose.
     * Simulate Digital Tracker effects bugs where possible.
     * Fix loading of Digital Tracker module names (not always 32 bytes).
   - Liquid Tracker bug fixes:
     * [Old] Fix loading of module and instrument names (fixes the old
       format version of WASTETIM.LIQ).
     * [Old] Fix loading of instrument lengths/loops (32-bit, not 16-bit).
     * [Old] Fix loading of pattern notes and volumes (off-by-one).
     * [Old] Fix initial panning.
     * [Old] Most effects are now supported. H70/H6A is not yet supported.
       Fxx, if it was ever implemented, is not yet supported.
     * [New] Fixed Pan Control, Retrigger, Global Volume effects, and
       vibrato/tremolo waveform 3. P70/P6A is not yet supported.
     * [New] Fix incorrect bounding of notes that caused several LIQs
       to fail to load.
     * [New] Fix loading of pattern volumes (off-by-one).
     * [New] 16-bit samples with loops no longer cause a failed load.
     * [New] Fix loading of instrument global volumes.
     * [New] Add support for ping pong loops.
     * [New] Fix initial channel volume/pan tables for 0.00 LIQs.
     * [New] Support channel volume and instrument global volume gain
       functionality by doubling the mix volume once for each (4x total).
     * [Both] Stopped incorrectly applying QUIRK_S3MLOOP, QUIRK_VOLPDN,
       QUIRK_S3MRTG, and QUIRK_MARKER.
   - Fix loading of Poly Tracker (PTM) empty sample names.
   - Fix Real Tracker loader on targets where char is unsigned by default.
   - Fix out-of-bounds reads in His Master's Noise Mupp instruments.
   - Fix slow ProWizard testing.
   - Fix Paula mixer state leak after changing XMP_PLAYER_MODE.
   - Replace rand() with a built-in reentrant alternative.
   - xmp_set_tempo_factor now returns -XMP_ERROR_STATE when called prior
     to xmp_start_player (instead of causing crashes).
   - Fix mixer crashes caused by previously valid tempo factors after
     sample rate or BPM changes.
   - Passing NULL to xmp_set_instrument_path() now unsets the instrument
     path instead of crashing.
   - Merge song file instrument path detection routines.
   - Fix module scan pattern delay counting.
   - Add compatibility for non-standard Pattern Loop implementations:
     Scream Tracker 3.01b; Scream Tracker 3.03b+; Impulse Tracker 1.00;
     Impulse Tracker 1.04 to 2.09; Modplug Tracker 1.16; Digital Tracker
     <=2.04; Digital Tracker 1.9; Octalyser; Imago Orpheus; Liquid Tracker;
     Poly Tracker. (MOD, FT2, and IT 2.10+ were already supported.)
   - Fixed numerous defects found by fuzzing.
   Changes by Thomas Neumann:
   - Fix XM envelope handling
   - Bug fixes to DSMI loader
   - Fix 16-bit sample check in MultiTracker loader
   - Fix finetune in MultiTracker loader
   - Fix XM restart position, so that it is possible to play
    "10 Days Of Abstinence.xm"
   Changes by Saga Musix:
   - S3M: Detect PlayerPRO, Velvet Studio and old MPT versions
   Changes by ds-sloth:
   - Optimize scan code for common case of no effects
   Changes by Misty De Méo:
   - Filter off html files when reading archives.
   Changes by Ozkan Sezer:
   - Change lha depacker to use a stripped down version of lhasa.
   - Merge several CVE fixes to depackers stb_vorbis backend.
   - Make the lite version buildable from git or full distribution.
   - Build system fixes and clean-ups. Misc code clean-ups.




I have compiled this .dll with VS 2022 for Win X64.

Coding faster than Light !

Gigatron

  • Sr. Member
  • ****
  • Posts: 412
  • Amiga Rulez !!
    • Gigatron Shader Network Demo
Re: Extended Module Player
« Reply #52 on: July 12, 2025, 02:27:09 pm »
In addition

Here's a equalizer demo project with fastcanvas library V1.052;

tuf4.zip is a soundtracker module.
tex.zip  include Copper_23.png   to run this projet;

Regards

** Edit Forgot the module .. now it's ok tuf4.zip
« Last Edit: July 12, 2025, 04:42:39 pm by Gigatron »
Coding faster than Light !

Gigatron

  • Sr. Member
  • ****
  • Posts: 412
  • Amiga Rulez !!
    • Gigatron Shader Network Demo
Re: Extended Module Player
« Reply #53 on: March 11, 2026, 11:33:54 pm »
Hi

This player was updated to  stable version 4.7.0 and compiled with mingw64 for windows64 system. This .dll is full version with all players(90) and Packers, not light version.

The full changes ;

4.7.0 (20260225):
   Changes by Alice Rowan:
   - Increase maximum sampling rate (XMP_MAX_SRATE) to 768000.
     This increases XMP_MAX_FRAMESIZE to 384000. The tick buffers are now
     allocated using the player-provided rate instead of XMP_MAX_FRAMESIZE:
     the frame info buffer may also be much smaller than XMP_MAX_FRAMESIZE.
     In case of existing software misusing the old XMP_MAX_FRAMESIZE, the
     minimum value for mixer_data->total_size is the old XMP_MAX_FRAMESIZE
     for now.
   - xmp_seek_time now always seeks (even if the position is the same
     as the current position) and uses the start row detected by the scan.
   - New function: xmp_seek_time_frame, which attempts to seek to the time
     requested by the caller within frame precision. This is achieved by
     using xmp_seek_time then repeatedly calling xmp_play_frame until the
     *next* frame contains the caller-requested time. The caller can then
     use xmp_play_frame/xmp_play_buffer to render the requested frame.
     WARNING: this is more computationally expensive than xmp_seek_time.
   - New function: xmp_set_tempo_factor_relative, to set a relative
     tempo factor without clobbering the module's tempo factor.
   - New function: xmp_get_tempo_factor, to get the base tempo factor
     set by loading a module or by xmp_set_tempo_factor.
   - New function: xmp_get_tempo_factor_relative, to get the relative
     tempo factor set by xmp_start_player/xmp_set_tempo_factor_relative.
   - New API define: XMP_FORMAT_32BIT for xmp_start_player to enable
     32-bit integer output.
   - New API define: XMP_INST_NO_DEFAULT_PAN for xmp_subinstrument::pan
   - New API defines: XMP_MARK_SKIP and XMP_MARK_END for xmp_module::xxo
   - Add support for Pack-Ice ("Ice!", "ICE!") depacking.
   - Add support for Software Visions DMF (Apocalypse Abyss MOD variant).
   - Replace kernel list helper in iff.c with custom list management
     to fix numerous otherwise unfixable KallistiOS redefinition warnings.
   - All internal module time/duration calculations are now in doubles
     (fixes off-by-one module time on final tick of some modules).
   - IFF format loading is now more permissive toward errors in the IFF
     tag structure, fixing some broken modules that would load for 64-bit
     Linux builds but not for Windows.
   - Fix sample name, restart position, note 0 loading, and pattern count
     calculation for Images Music System modules.
   - Fix XM volume effects cxx/dxx accidentally having effects memory.
   - Fix FAR volume and note edge cases (Prescience/aurora.far pos. 16).
   - Fix Real Tracker RTM maximum pattern row count, various effects
     translations, initial panning and sample panning, sample base volume,
     non-delta coded samples, and instrument flags.
   - Correct default of sample default panning values to -1 (no default
     panning) for most module formats.
   - Fix DigiBooster Pro sample default panning.
   - Fix DigiBooster Pro note 0x1f (key off) and misc. other tidying.
   - Fix Funktracker sample default panning.
   - Fix FunkTracker Fk** and DOS32 initial channel panning.
   - Fix FunkTracker notes 0x3d (partial fix) and 0x3e.
   - Fix FunkTracker injecting sample default volume into events, causing
     most notes to play at slightly wrong volumes.
   - Fix Galaxy Music System 4.0 sample default panning.
   - Fix Imago Orpheus IMF sample default panning.
   - Fix Imago Orpheus IMF note 255 (no note, not key off).
   - Fix Imago Orpheus IMF Ixx/Jxx/Kxx/Lxx memory, Axy when x and y != 0.
   - Fix Liquid Tracker LIQ sample default panning.
   - Simplify read_event_mod, read_event_st3, read_event_ft2,
     read_event_med sample default volume handling.
   - MED "hold symbols" now apply the referenced instrument's default
     volume for modules from OctaMED 3.00+ and don't apply any default
     volume for modules from prior versions.
   - Fix MED hold/decay implementation and add support for command 8.
   - Fix MED synthetic instrument waveform table speeds.
   - Fix MED module duration for modules using command 1E (pattern delay).
   - Fix MED loading of InstrExt data when s_ext_entrsz is 2.
   - MED: only load long repeat fields for MMD3 modules.
   - Anticlick decay curves are now applied after IT note cut, DCA note
     cut, IT effect S70 (etc.), and API-requested position changes.
   - XM, MOD: remove QUIRK_FINEFX from QUIRKS_FT2.
   - XM: channel fade rate is only copied from the instrument on rows
     with note + ins. + no toneporta/K00.
   - XM: zero-length samples cut the channel like invalid instruments.
   - XM: do not cut on a no-instrument key off note if the preceding
     instrument was invalid.
   - XM: previous instrument's sample default volume is now applied for
     invalid instrument numbers beside a key off note.
   - XM: previous instrument's sample default panning is now applied for
     invalid instrument numbers.
   - XM: apply default volume, panning, and instrument fade rate for
     active invalid instruments.
   - XM: invalid instrument numbers now reset the envelope positions.
   - XM: valid instrument numbers with no note no longer set xc->ins,
     which would cause notes to play with the wrong instrument envelopes
     and could cause subsequent no-note instruments or invalid
     instruments to apply the wrong instrument's volume/panning.
   - XM: rows with an instrument number and K00 no longer reset fadeout.
   - XM: apply QUIRK_FT2BUGS to Fasttracker II clone modules.
   - XM: reimplement Fasttracker II note delay effect.
   - XM: FT2 tremor now resets on all delay rows, does not reset on
     instrument number + K00 rows, and is suppressed by instrument default
     volume and Cxx in cases where it is not reset. FT2 tremor no longer
     updates on note delay events before the delayed event is processed.
   - XM: load all keyoff notes as XMP_KEY_OFF (fixes keyoff + ins rows).
   - XM: keyoff without delay always immediately initiates fadeout, even
     if there is a volume envelope. The old implementation would sometimes
     delay the start of fadeout.
   - XM: keyoff without volume envelope sets the channel volume to 0
     instead of setting fadeout to 0. This is now performed on the tick
     where keyoff takes effect only (fixes volume effects not cancelling
     the volume cut when they should have).
   - XM: fix volume column set volume effects resetting fadeout
     (fixes Comic Bakery Remix position 35).
   - XM: fix Kxx persisting between rows and pattern delay interaction.
   - XM: fix note without ins# resetting fadeout position and state.
   - XM: detect more Modplug Tracker XMs via large unused instruments.
   - XM: handle out-of-range notes more closely to FT2.
   - XM: fix setting toneporta target with an active invalid instrument.
   - XM: implement FT2-style offset effect memory (QUIRK_FT2BUGS only).
   - Sum toneporta rates when toneporta is present in both effects slots
     in an event; FT2 bug emulation for double toneporta now zeroes the
     parameter of 3xx in the player instead of using a loader hack. This
     doesn't affect Ultra Tracker toneporta.
   - XM: fix slow loads/OoMs caused by not verifying the MPT text length.
   - XMF: toneporta is identical to Ultra Tracker toneporta (slightly
     affects max.xmf pos 13+, but the notes are out-of-tune either way).
   - Fix time tracking bugs in some complex pattern loop cases.
   - Fix time tracking bugs when Bxx+Dxx jumps within the same position.
   - Dxx (S3M/IT: Cxx) followed by Byy on the same row now jumps to pos Y
     row X for S3M, IT, ModPlug XM, and Skale Tracker XM modules.
   - IT: fix importing channel initial panning for muted channels.
   - IT: fix playing instruments with samples >=120 in the key map.
   - MTM: fix pattern break hex parameter.
   - PTM: actually fix pattern break hex parameter.
   - STM: always use 0 for pattern break parameter (ST2 ignores it).
   - STM: import ST2 tempo values as both speed and BPM.
   - GDM: don't zero channel volume for muted channels.
   - Fix xmp_start_player not unmuting non-muted channels (regression
     introduced in 4.5.0).
   Changes by Alice Rowan and ds-sloth:
   - Minor Impulse Tracker loader performance improvements.

Demo included with 1 modules and Equalizer all were compressed with gzip;

Regards Gigatron
« Last Edit: March 11, 2026, 11:37:04 pm by Gigatron »
Coding faster than Light !

Gigatron

  • Sr. Member
  • ****
  • Posts: 412
  • Amiga Rulez !!
    • Gigatron Shader Network Demo
Re: Extended Module Player
« Reply #54 on: March 14, 2026, 05:32:06 pm »
Hi

I separated the audio rendering from unit1, the result is a clean and short unit1.
(file missing is not controlled, the module name must be exact).

Regards

Main unit;
Code: Pascal  [Select][+][-]
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, Forms, Controls, Graphics, ExtCtrls, ComCtrls, libxmp, xmp_audio;
  9.  
  10. type
  11.   { TForm1 }
  12.   TForm1 = class(TForm)
  13.     procedure FormCreate(Sender: TObject);
  14.     procedure FormDestroy(Sender: TObject);
  15.     procedure FormShow(Sender: TObject);
  16.   private
  17.   public
  18.   end;
  19.  
  20. var
  21.   Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.lfm}
  26.  
  27. procedure TForm1.FormCreate(Sender: TObject);
  28. begin
  29.   XmpCtx := xmp_create_context;
  30.   xmp_load_module(XmpCtx, PChar('stk.theknomes'));
  31. end;
  32.  
  33. procedure TForm1.FormShow(Sender: TObject);
  34. begin
  35.   playing := True;
  36.   xmp_start_player(XmpCtx, SampleRate, 0);
  37.   xmp_set_player(XmpCtx, XMP_PLAYER_AMP, 2);   // amplification 0-3
  38.   xmp_set_player(XmpCtx, XMP_PLAYER_MIX, 0);   // stereo mixing 0-100
  39.   InitAudio;
  40. end;
  41.  
  42. procedure TForm1.FormDestroy(Sender: TObject);
  43. begin
  44.   playing := False;
  45.   xmp_end_player(XmpCtx);
  46.   xmp_release_module(XmpCtx);
  47.   xmp_free_context(XmpCtx);
  48.   CloseAudio;
  49. end;
  50.  
  51. end.

Coding faster than Light !

 

TinyPortal © 2005-2018