I have this working but not reliably.

The guts of the thing is:

# make a "variable" to switch on
breakz = ref ["COOL"]


# the main stream to play
# this is an icecast server on the local lan
stream = input.http("http://192.168.86.224:8002/rockriv.mp3";)

# set up some "playlists" currently just single files to switch to based on
the "variable" above
break1 = mksafe(single("/var/audio/traffic/break1.mp3"))
break2 = mksafe(single("/var/audio/traffic/break2.mp3"))
break3 = mksafe(single("/var/audio/traffic/break3.mp3"))
break4 = mksafe(single("/var/audio/traffic/break4.mp3"))

# set up a failover
failover = mksafe(single("/var/audio/emergency/peepinyou128.mp3"))


# the next section sets the "variable" above based on the metadata in the
main stream above
# the print statements are for testing. Can I put them in the switch
statement itself?

def f(x) =
    (snd(x))
end

def on_meta (meta)

    breakz := list.map(f,meta)
    print (!breakz)
    print (!breakz == ["Break1 - "])
    print (!breakz == ["Break2 - "])
    print (!breakz == ["Break3 - "])
    print (!breakz == ["Break4 - "])
end

# this next bit is what triggers the setting of the "variable" above when
the metadata in stream
# changes
stream = on_metadata(on_meta, stream)

#  this next section is where the switch happens
# radiostream is either a break playlist (single) if the "variable"
indicates
# or it is the main stream (music)
radiostream = switch ([
  ({ (!breakz == ["Break1 - "]) }, break1),
  ({ (!breakz == ["Break2 - "]) }, break2),
  ({ (!breakz == ["Break3 - "]) }, break3),
  ({ (!breakz == ["Break4 - "]) }, break4),
  ({ (true) }, stream)
])


There is a bit more, but this is the guts of it.

It works. But not all the time.

Sometimes, the switch plays the "playlist" indicated by the "variable" but
other times I get silence. (I am not wanting to go to failover on this
condition while testing, that is reserved for stream failure.)

 I did some testing with a friend last night and it got even more confusing
/ interesting.

We set him up with a liquidsoap and pointed him at stream as well (via port
forwarding)

It worked for him too. But also unreliably as well. Here is the interesting
though.

Sometimes, when I got silence, his "break" played as it should have.
Sometimes when he got silence, I got the correct "break" playing. Sometimes
we both got the correct "break" playing... etc.

How do I go about troubleshooting a switch that is behaving this way? Am I
configuring something wrong? Is there something I can look for in the logs?
Something else?

all the best,

drew
-- 
http://nakedghosts.blogspot.com/
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to