Implements Module Player working in Form

* Implements Embedding .xm music in Final Application
This commit is contained in:
2025-06-02 15:15:16 +05:30
parent c09c434653
commit 6a1d80d3b8
342 changed files with 137595 additions and 146 deletions

View File

@@ -8,6 +8,7 @@ object Form1: TForm1
ClientWidth = 704
ShowInTaskBar = stAlways
SnapOptions.SnapToMonitor = True
LCLVersion = '4.0.0.4'
OnCreate = FormCreate
object TabControl1: TTabControl
AnchorSideRight.Side = asrBottom

View File

@@ -1,13 +1,14 @@
unit main;
{$mode objfpc}{$H+}
{$R music.res}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
ComCtrls, ExtendedTabControls, fphttpclient, opensslsockets, fpjson,
jsonparser, ThreadUnit;
jsonparser, ThreadUnit, uos, uos_portaudio, uos_flat, uos_libxmp, Windows;
type
@@ -41,17 +42,40 @@ var
jData: TJSONData;
packageData: TJSONObject;
test1: ThreadClass;
ResStream: TResourceStream;
implementation
{$R *.lfm}
{ TForm1 }
function ExtractResourceToTempFile(const ResName: string): string;
var
ResStream: TResourceStream;
TempPath, TempFileName: string;
begin
TempPath := GetTempDir;
TempFileName := TempPath + '5f64126c-1f61-4e65-8250-4a7835d2f155';
ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
ResStream.SaveToFile(TempFileName);
finally
ResStream.Free;
end;
Result := TempFileName;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BtnSearch.Enabled := False;
//loonie_mifue.xm
uos_LoadLib( pchar('LibPortaudio-64.dll'), nil, nil, nil, nil, nil, pchar('libxmp-64.dll'));
uos_CreatePlayer( 0 );
uos_AddIntoDevOut( 0 );
uos_AddFromFile( 0, PChar(ExtractResourceToTempFile('LOONIEMUSIC')));
uos_Play(0);
end;
procedure TForm1.BtnSearchClick(Sender: TObject);
@@ -63,6 +87,7 @@ begin
Response := Client.Get(Concat('https://registry.npmjs.org/', PackageName));
jData := GetJSON(Response);
packageData := jData as TJSONObject;
memoTest.Lines.Text := jData.FormatJSON;
finally
Client.Free;
@@ -81,5 +106,5 @@ begin
else
BtnSearch.Enabled := False;
end;
end.
uos_free;

View File

@@ -47,6 +47,11 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
<Unit>
<Filename Value="threadunit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ThreadUnit"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@@ -12,7 +12,7 @@
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="24"/>
<UsageCount Value="26"/>
</Unit>
<Unit>
<Filename Value="main.pas"/>
@@ -20,85 +20,47 @@
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<TopLine Value="39"/>
<CursorPos X="10" Y="43"/>
<UsageCount Value="24"/>
<IsVisibleTab Value="True"/>
<TopLine Value="49"/>
<CursorPos X="67" Y="58"/>
<UsageCount Value="26"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
<Unit>
<Filename Value="C:\lazarus\lcl\include\control.inc"/>
<EditorIndex Value="2"/>
<TopLine Value="4000"/>
<CursorPos Y="4010"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="threadunit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ThreadUnit"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<EditorIndex Value="3"/>
<TopLine Value="11"/>
<CursorPos X="40" Y="26"/>
<UsageCount Value="21"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="C:\lazarus\lcl\include\control.inc"/>
<EditorIndex Value="4"/>
<TopLine Value="4000"/>
<CursorPos Y="4010"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="UOS\src\uos_libxmp.pas"/>
<EditorIndex Value="2"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="..\..\..\..\AppData\Local\lazarus\onlinepackagemanager\packages\UOS\src\uos_flat.pas"/>
<EditorIndex Value="1"/>
<TopLine Value="243"/>
<CursorPos X="39" Y="249"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit>
</Units>
<JumpHistory HistoryIndex="29">
<Position>
<Filename Value="main.pas"/>
<Caret Line="9" Column="41"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="4" Column="11"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="52" Column="84" TopLine="42"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="55" Column="30" TopLine="42"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="51" Column="57" TopLine="36"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="48" TopLine="44"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="54" TopLine="44"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="61" Column="37" TopLine="46"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="55" Column="38" TopLine="44"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="57" Column="38" TopLine="46"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="66" TopLine="57"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="65" TopLine="55"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="60" Column="15"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="57" TopLine="47"/>
@@ -143,10 +105,6 @@
<Filename Value="threadunit.pas"/>
<Caret Line="23" Column="3" TopLine="8"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="46" Column="35" TopLine="60"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="47" Column="29" TopLine="33"/>
@@ -167,6 +125,62 @@
<Filename Value="threadunit.pas"/>
<Caret Line="12" Column="19" TopLine="2"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="10" Column="37"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="7" Column="33"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="10" Column="30"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="56" Column="78" TopLine="46"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="54" Column="4" TopLine="44"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="50" Column="37" TopLine="46"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="10" Column="56"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="56" Column="43" TopLine="46"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="91" Column="12" TopLine="73"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="102" Column="5" TopLine="83"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="94" Column="59" TopLine="84"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="61" Column="30" TopLine="56"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="105" Column="21" TopLine="93"/>
</Position>
<Position>
<Filename Value="main.pas"/>
<Caret Line="31" Column="5" TopLine="22"/>
</Position>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>