Implements Module Player working in Form
* Implements Embedding .xm music in Final Application
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user