######################################### # A/B queue-setup daypart ######################################### # a/b queue setup daypart_q0 = request.queue(conservative=true,length=600.,id="daypart_q0") daypart_q1 = request.queue(conservative=true,length=600.,id="daypart_q1") daypart_q0 = audio_to_stereo(daypart_q0) daypart_q1 = audio_to_stereo(daypart_q1) daypart_active = ref 0 daypart_queue = ref 1 daypart_q0_enabled = ref false daypart_q1_enabled = ref false # push function, enqueues file in inactive queue (does not start automatically) def daypart_push(s) list.hd(server.execute("daypart_q#{!daypart_queue}.push #{s}")) print('push to #{!daypart_queue} - #{s}') "Done" end # flips the queues def daypart_flip() # set a/b-queue corresponding to active, see fallback below if !daypart_active==1 then daypart_q0_enabled:=true else daypart_q0_enabled:=false end if !daypart_active==0 then daypart_q1_enabled:=true else daypart_q1_enabled:=false end # get playing (active) queue and flush it l = list.hd(server.execute("daypart_q#{!daypart_active}.queue")) l = string.split(separator=" ",l) list.iter(fun (rid) -> ignore(server.execute("daypart_q#{!daypart_active}.ignore #{rid}")), l) # skip the playing item # source.skip(if !daypart_active==0 then daypart_q0 else daypart_q1 end) # flip variables daypart_active := 1-!daypart_active daypart_queue := 1-!daypart_active "Done" end # print status def daypart_status() print('daypart_active: #{!daypart_active}') print('daypart_queue : #{!daypart_queue}') "Done" end # register for telnet access server.register(namespace="daypart","push", daypart_push) server.register(namespace="daypart","flip", fun (_) -> daypart_flip()) server.register(namespace="daypart","status", fun (_) -> daypart_status()) # activate / deactivate queues, needed for fallback to work daypart_q0 = switch(track_sensitive=true, [({!daypart_q0_enabled},daypart_q0)]) daypart_q1 = switch(track_sensitive=true, [({!daypart_q1_enabled},daypart_q1)]) daypart_q_holder = fallback(track_sensitive=true, [daypart_q0, daypart_q1]) # finally the resulting daypart source daypart = fallback(track_sensitive=false, [daypart_q_holder, default])