Forum Discussion

manuelalvarez's avatar
15 years ago

Help with AudioApp

Hi All,

I have modified AudioApp to play three different MP3 streams from the internet. Now I want to add a new item to the poster to show some text (as in the paragraph example). Yet I don't understand how to accomplish this. I could post some code, but it will probably be useless. :?

How can I accomplish this?

Thanks,

Manuel.-

7 Replies

  • Ok, some more info. I've managed to get my aboutUs.brs called from the poster screen. But I get errors in the debugger.

    Here is the code for aboutUs.brs:
    Function preShowParagraphScreen(breadA=invalid, breadB=invalid) As Object
    print "In preShowParagraphScreen"
    port=CreateObject("roMessagePort")
    screen = CreateObject("roParagraphScreen")
    screen.SetMessagePort(port)
    return screen
    End Function

    Function ShowParagraphScreen() As Void
    print "In ShowParagraphScreen"
    port = CreateObject("roMessagePort")
    screen = CreateObject("roParagraphScreen")
    screen.SetMessagePort(port)
    screen.SetTitle("[Screen Title]")
    screen.AddHeaderText("[Header Text]")
    screen.AddParagraph("[Paragraph text 1 - Text in the paragraph screen is justified to the right and left edges]")
    screen.AddParagraph("[Paragraph text 2 - Multiple paragraphs may be added to the screen by simply making additional calls]")
    screen.AddButton(1, "[button text 1]")
    screen.AddButton(2, "[button text 2]")
    screen.Show()
    while true
    msg = wait(0, screen.GetMessagePort())
    if type(msg) = " roParagraphScreenEvent"
    exit while
    endif
    end while
    End Function

    Sub DoAboutUs(from as string)
    print "In AboutUs.brs!"
    screen=preShowParagraphScreen("Paragraph", "")
    if screen=invalid then
    print "unexpected error in preShowHomeScreen"
    return
    end if
    ShowParagraphScreen(screen)
    End Sub


    And this is the error in the debugger when I select the poster that calls aboutUs.brs:
    list selected:  3
    In AboutUs.brs!
    In preShowParagraphScreen
    BrightScript Micro Debugger.
    Enter any BrightScript statement, debug commands, or HELP.

    Current Function:
    029: Sub DoAboutUs(from as string)
    030: print "In AboutUs.brs!"
    031: screen=preShowParagraphScreen("Paragraph", "")
    032: if screen=invalid then
    033: print "unexpected error in preShowHomeScreen"
    034: return
    035: end if
    036: ShowParagraphScreen(screen)
    037: End Sub
    /tmp/plugin/HKAAAAVJD8RP/pkg:/source/AboutUs.brs(36): runtime error f1: Wrong number of function parameters.

    036: ShowParagraphScreen(screen)

    Backtrace:
    Function doaboutus(from As String) As Void
    Function main() As Void

    Local Variables:
    from &h44 String val:Categories
    global &h07 rotINTERFACE:ifGlobal
    m &h06 bsc:roAssociativeArray, refcnt=3
    screen &h16 bsc:roParagraphScreen, refcnt=1
    BrightScript Debugger>


    Any ideas?

    Thanks,

    Manuel.-
  • The debugger is your friend... It will tell you what's wrong with your syntax:

    In this case:

    037: End Sub
    /tmp/plugin/HKAAAAVJD8RP/pkg:/source/AboutUs.brs(36): runtime error f1: Wrong number of function parameters.

    036: ShowParagraphScreen(screen)

    Tells you that the ShowParagraphScreen() definition does not match the call. You called it with one argument and your definition has none.

    --Kevin
  • Thanks Kevin,

    I had figured that one out! I also placed a close button on the About page in order to close it.

    Now on to my next task!

    Right now, with the AudioApp SDK example, the audio stops playing immediately after returning to the poster screen. Is it possible to keep the audio running and only stop it when entering a different stream?

    Thanks,

    Manuel.-
  • It is possible to keep the audio running and display different screens. You need to share the port for the audioplayer and the screens and service the events both components could send in your event loop.

    Please see the audioapp in the SDK examples for some sample source on how to do that.

    --Kevin
  • Hi Kevin,

    I took a look at the audioapp example, but it isn't much help, as the audio stops when I exit the current screen that is playing it. Could you post some sample code?

    Regards,

    Manuel.-
  • I haven't looked at the code, but make sure the audioplayer component itself is passed back, or saved globally. If it goes out of scope (you return from the function you defined it in, and have not passed it back or saved it to some other location that won't be cleaned up), it will be cleaned (garbage collected) by the VM and stop playing.
  • If you want audio to continue playing while navigating to other screens, you must be sure your audio player does not go out of scope as kbenson points out.

    You must also be sure all your event loops handle both audio player events and the screen events for the top level screen. A good code organization might be a global event loop.

    --Kevin