Ich schreibe ein Programm auf einem Raspbian Pi welches als Metronom laufen soll.
Ich versuche den Sound mit uos abzuspielen, aber das will nicht so ganz und ich finde den Fehler auch nicht.
Hoffentlich könnt ihr mir da etwas weiter helfen

Code: Alles auswählen
program project1;
{$mode objfpc}{$H+}
{$DEFINE UseCThreads}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
cwstring, {$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1, Unit2, Unit3
{ you can add units after this };
{$R *.res}
begin
Application.Title:='ChanginDestiny';
//RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TSetlist, Setlist);
Application.CreateForm(TSong, Song);
Application.CreateForm(TMetronom, Metronom);
Application.Run;
end.
Code: Alles auswählen
procedure TMetronom.Timer1Timer(Sender: TObject);
var
In1Index, Out1Index, LibsLoaded: integer;
ordir: string;
begin
ordir := application.Location;
LibsLoaded := uos_LoadLib(
PChar('/home/pi/fredvs-uos-78045ce/examples/lib/Linux/32bit/LibPortaudio-32.so'),
PChar('/home/pi/fredvs-uos-78045ce/examples/lib/Linux/32bit/LibSndFile-32.so'),
PChar('/home/pi/fredvs-uos-78045ce/examples/lib/Linux/32bit/LibMpg123-32.so'),
PChar('/home/pi/fredvs-uos-78045ce/examples/lib/Linux/32bit/LibSoundTouch-32.so')
);
if LibsLoaded <> 0 then
begin
uos_CreatePlayer(1);
In1Index := uos_AddFromFile(1, PChar('/home/pi/Lazarus/Metronom/Sound/High.wav'), -1, 0, -1);
Out1Index := uos_AddIntoDevOut(1, -1, -1, uos_InputGetSampleRate(1, In1Index), -1, 0, -1);
uos_CreatePlayer(2);
In1Index := uos_AddFromFile(2, PChar('/home/pi/Lazarus/Metronom/Sound/Deep.wav'), -1, 0, -1);
Out1Index := uos_AddIntoDevOut(2, -1, -1, uos_InputGetSampleRate(1, In1Index), -1, 0, -1);
if Timer1.Tag=0 then
begin
Timer1.Interval:=t div beat;
uos_Play(1);
timer1.tag:=1;
Exit;
end;
if timer1.tag=1 then
begin
uos_Play(2);
timer1.tag:=2;
Exit;
end;
if timer1.tag=2 then
begin
uos_Play(2);
timer1.tag:=3;
Exit;
end;
if timer1.tag=3 then
begin
uos_Play(2);
timer1.tag:=0;
Exit;
end;
end
else
ShowMessage('Libs not loaded');
end;
Wie ihr seht sollen hier 2 verschiedene Audiodatein abgespielt werden.
Wundert euch dabei bitte nicht über die Befehle mit Timer1.Tag und so, das problem liegt nur an den Audios.
wenn ich versuche das programm zu starten läuft der Compiler.
Es wird jedoch angezeigt das Out1Index und ordir nicht verwendet werden und ich weis auch nicht wie ich diese verwenden soll.
wenn die Audios dann abgespielt werden sollen kommt die Meldung:
Project Project1 raised exception class 'External: SIGSEGV'.
Was bedeutet das und wie kann ich den Fehler beheben??
Danke schon mal für euer Interesse