Trying to adapt smart_crossfade I would like to be able to change ALL 
parameters depending on the volumes in and out but in this version of me 
(number 16 in a week trial and error) I once again get errors. Perhaps 
somebody with a deeper knowledge of the language can help me out here 
because I am stuck?

def smart_crossfade (a,b,ma,mb,sa,sb,
                      ~start_next=2.0,~fade_in=0.,~fade_out=2.,
                      ~default=(fun (a,b) -> add([fade.out(a),b])),
                      ~high=-5., ~medium=-32., ~margin=4.,
                      ~width=2.5,~conservative=false,s)
   add = fun (a,b) -> add(normalize=false,[b, a])
   log = log(label="smart_cross80s")
   set("log.level",3)

     list.iter(fun(x)-> log(level=4,"Before: #{x}"),ma)
     list.iter(fun(x)-> log(level=4,"After : #{x}"),mb)


     if
       a <= medium and b <= medium and abs(a - b) <= margin
     then
       log("TRANSITION: A. crossed, fade-out 0.4.")
     smart_cross(width=width, duration=start_next, 
conservative=conservative,
               add(fade.out(sa,type="log",duration=0.4),sb),s)

     elsif
       b >= a + margin and a >= medium and b <= high
     then
       log("TRANSITION: B. crossed, fade-out 0.3.")
     smart_cross(width=width, duration=start_next, 
conservative=conservative,
add(fade.out(sa,type="log",duration=0.3),sb),s)

     elsif
       a >= b + margin and b >= medium and a <= high
     then
       log("TRANSITION: C. crossed, fade-out 0.4.")
     smart_cross(width=width, duration=start_next, 
conservative=conservative,
               add(fade.out(sa,type="log",duration=0.4),sb),s)

     elsif
       b >= a + margin and a <= medium and b <= high
     then
       log("TRANSITION: D. fade-out 0.2 fade-in 0.2 duration 0.5")
     smart_cross(width=width, duration=0.5, conservative=conservative,
add(fade.out(sa,duration=0.2),fade.in(sb,duration=0.2)),s)
     else
       log("TRANSITION: E. Using default set to : crossed, fade-out 0.1 
duration 0.5")
     smart_cross(width=width, duration=0.5, conservative=conservative,
add(fade.out(sa,type="log",duration=0.1),fade.in(sb,type="exp",duration=0.1)),s)
 

     end

end

------------------------------------------------------------------------------
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to