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

 Verein
Verein 
 Links
Links Suche
Suche