about LoadSound()

Just starting out? Need help? Post your questions and find answers here.
morosh
Posts: 33
Joined: Mon Feb 02, 2015 7:48 pm

about LoadSound()

Post by morosh »

hello:
I'm writing a custom count down timer with sound alert at some intervals, it runs OK on Laptop (web app), but on android I got (in the debugger):
LoadSound(0, "./data/beep2s.wav"): Loading error
LoadSound(1, "./data/beep5s.wav"): Loading error
I always thought that sound files will be embedded in the final apk file, isn't true?
Also the timer events seems stopping when screen is off, no count down happens.

Any help is appreciated
Thanks

Code: Select all

XIncludeFile "E:\install\dvd1\dev_soft\SpiderBasic\extra\Preferences-master\Preferences.sbi"

Enumeration
  #Button=0
  #CheckBox=#Button+100
  #Text=#CheckBox+6
  #Radio=#Text+20
  #Image=#Radio+50
  #String=#Image+10
  #Frame3D0=#String+20
  #Editor=#Frame3D0+5
EndEnumeration

InitSound()

Global x.i=0, flag.a=0, xst.u, flags=1, k.b=1
Declare disp()
UseModule Preferences

Procedure save1()
  If OpenPreferences("chrono.ini")
    WritePreferenceInteger("t1", x)
    Debug "success save1: "+Str(x)
  Else
    Debug "failure save1"
  EndIf
  ClosePreferences()
EndProcedure

Procedure save2()
  If OpenPreferences("chrono.ini")
    WritePreferenceInteger("t2", x)
    Debug "success save1: "+Str(x)
  Else
    Debug "failure save1"
  EndIf
  ClosePreferences()  
EndProcedure

Procedure save3()
  If OpenPreferences("chrono.ini")
    WritePreferenceInteger("t3", x)
    Debug "success save1: "+Str(x)
  Else
    Debug "failure save1"
  EndIf
  ClosePreferences()
EndProcedure

Procedure save4()
  If OpenPreferences("chrono.ini")
    WritePreferenceInteger("t4", x)
    Debug "success save1: "+Str(x)
  Else
    Debug "failure save1"
  EndIf
  ClosePreferences()  
EndProcedure

Procedure rec1()
  If flag=0
    If OpenPreferences("chrono.ini")
      x = ReadPreferenceInteger("t1", 0)
      Debug "success recall1: "+Str(x)
    Else
      Debug "failure recall1"
    EndIf
    ClosePreferences()
  EndIf  
EndProcedure

Procedure rec2()
  If flag=0
    If OpenPreferences("chrono.ini")
      x = ReadPreferenceInteger("t2", 0)
      Debug "success recall1: "+Str(x)
    Else
      Debug "failure recall1"
    EndIf
    ClosePreferences()  
  EndIf  
EndProcedure

Procedure rec3()
  If flag=0
    If OpenPreferences("chrono.ini")
      x = ReadPreferenceInteger("t3", 0)
      Debug "success recall1: "+Str(x)
    Else
      Debug "failure recall1"
    EndIf
    ClosePreferences()
  EndIf  
EndProcedure

Procedure rec4()
  If flag=0
    If OpenPreferences("chrono.ini")
      x = ReadPreferenceInteger("t4", 0)
      Debug "success recall1: "+Str(x)
    Else
      Debug "failure recall1"
    EndIf
    ClosePreferences()
  EndIf  
EndProcedure

Procedure.s str2(x.a)
  ProcedureReturn Right("0"+Str(x),2)
EndProcedure

Procedure disp()
  Define min.a, sec.a
  Debug "inside disp: x="+Str(x)
  Debug "inside disp: xst="+Str(xst)
  If x < 0
    x=0
  EndIf
  min=x/60
  sec=x % 60
  Debug "inside disp: min="+Str(min)
  Debug "inside disp: sec="+Str(sec)
  SetGadgetText(#Text, str2(min)+":"+str2(sec))
  If (x = xst/2) And (flag=1)
    PlaySound(0)
  EndIf
  If x=0
    flag=0
  EndIf
EndProcedure

Procedure add1()
  x=x+k*10*60
  disp()
EndProcedure

Procedure add2()
  x=x+k*5*60
  disp()
EndProcedure

Procedure add3()
  x=x+k*1*60
  disp()
EndProcedure

Procedure add4()
  x=x+k
  disp()
EndProcedure

Procedure start()
  If x> 0
    flag=1
    xst=x  
  EndIf
EndProcedure

Procedure stop()
  flag=0
EndProcedure

Procedure clear()
  flag=0
  x=0  
EndProcedure

Procedure setplus()
  k=1  
  SetGadgetState(#Button+7,1)
  SetGadgetState(#Button+8,0)
EndProcedure

Procedure setminus()
  k=-1  
  SetGadgetState(#Button+7,0)
  SetGadgetState(#Button+8,1)
EndProcedure

Procedure TimerEvents()
  If flag=1
    If x > 0
      x=x-1
    EndIf
  EndIf
  disp()
EndProcedure

Procedure Loading(Type, Filename$, ObjectId)
  Static NbLoadedElements
  
  Debug Filename$ + " loaded (id = " + ObjectId + ")"
  
  NbLoadedElements+1
  If NbLoadedElements = 2 ; Finished the loading of all sounds, we can start the application
    Start()
  EndIf
  If OpenPreferences("chrono.ini")
    Debug "chrono.ini exists"
    t1 = ReadPreferenceInteger("t1", 0)
    t2 = ReadPreferenceInteger("t2", 0)
    t3 = ReadPreferenceInteger("t3", 0)
    t4 = ReadPreferenceInteger("t4", 0)
  Else
    Debug "chrono.ini doesn't exists"
    WritePreferenceInteger("t1", 0)
    WritePreferenceInteger("t2", 0)
    WritePreferenceInteger("t3", 0)
    WritePreferenceInteger("t4", 0)
    ClosePreferences()
  EndIf
EndProcedure

Procedure LoadingError(Type, Filename$)
  Debug Filename$ + ": loading error"
EndProcedure

OpenWindow(0,100,100,350,400,"CHRONO", #PB_Window_SizeGadget | #PB_Window_BorderLess)    
SetGadgetFont(#PB_Default, LoadFont(0, "Arial", 50))
TextGadget(#Text,10,10,200,75,"00:00",#PB_Text_Border )
SetGadgetFont(#PB_Default, LoadFont(0, "Arial", 24))

ButtonGadget(#Button,20, 100,50,30,"10")
BindGadgetEvent(#Button, @add1())

ButtonGadget(#Button+1,90, 100,50,30,"5")
BindGadgetEvent(#Button+1, @add2())

ButtonGadget(#Button+2,160, 100,50,30,"1")
BindGadgetEvent(#Button+2, @add3())

ButtonGadget(#Button+6,230, 100,50,30,"1s")
BindGadgetEvent(#Button+6, @add4())

ButtonGadget(#Button+3,20, 150,100,30,"START")
BindGadgetEvent(#Button+3, @start())

ButtonGadget(#Button+4,120, 150,100,30,"STOP")
BindGadgetEvent(#Button+4, @stop())

ButtonGadget(#Button+5,220, 150,100,30,"CLEAR")
BindGadgetEvent(#Button+5, @clear())

ButtonGadget(#Button+7,220, 10,70,30,"+",#PB_Button_Toggle)
BindGadgetEvent(#Button+7, @setplus())

ButtonGadget(#Button+8,220, 50,70,30,"-",#PB_Button_Toggle)
BindGadgetEvent(#Button+8, @setminus())
SetGadgetState(#Button+7,1)

ButtonGadget(#Button+9,20, 200,70,30,"RC1")
BindGadgetEvent(#Button+9, @rec1())
ButtonGadget(#Button+10,100, 200,70,30,"RC2")
BindGadgetEvent(#Button+10, @rec2())
ButtonGadget(#Button+11,180, 200,70,30,"RC3")
BindGadgetEvent(#Button+11, @rec3())
ButtonGadget(#Button+12,260, 200,70,30,"RC4")
BindGadgetEvent(#Button+12, @rec4())

ButtonGadget(#Button+13,20, 250,70,30,"S1")
BindGadgetEvent(#Button+13, @save1())
ButtonGadget(#Button+14,100, 250,70,30,"S2")
BindGadgetEvent(#Button+14, @save2())
ButtonGadget(#Button+15,180, 250,70,30,"S3")
BindGadgetEvent(#Button+15, @save3())
ButtonGadget(#Button+16,260, 250,70,30,"S4")
BindGadgetEvent(#Button+16, @save4())

AddTimer(0, 1000)
BindEvent(#PB_Event_Timer, @TimerEvents())

BindEvent(#PB_Event_Loading, @Loading())
BindEvent(#PB_Event_LoadingError, @LoadingError())

LoadSound(0, "./data/beep2s.wav")
LoadSound(1, "./data/beep5s.wav")

UnuseModule Preferences

;CreateFile(0,"preferences.txt",@SaveFileCallback(),#PB_LocalStorage)

Quin
Posts: 128
Joined: Wed Nov 08, 2023 4:38 pm

Re: about LoadSound()

Post by Quin »

Because of the way sound works in your web browser, you have to click a button before attempting to load/play the sounds, or you'll get an error.
I didn't actually think that applied to loading, but it definitely does to playback. You need a user action.
morosh
Posts: 33
Joined: Mon Feb 02, 2015 7:48 pm

Re: about LoadSound()

Post by morosh »

Resolved:
using AI, I should specify the path of sound files in the resource field of "create app", that's all

Thank you
Post Reply