Thank you David. I am very missed with ocaml language :-( Can you help 
me where I need to change the source?

Here is the smart-crossfade function. I need to crossfade only the 
playlist named "tangos".

def smart_crossfade (~start_next=5.,~fade_in=3.,~fade_out=3.,
                      ~default=(fun (a,b) -> sequence([a, b])),
                      ~high=-15., ~medium=-32., ~margin=4.,
                      ~width=2.,~conservative=false,s)
   fade.out = fade.out(type="sin",duration=fade_out)
   fade.in  = fade.in(type="sin",duration=fade_in)
   add = fun (a,b) -> add(normalize=false,[b, a])
   log = log(label="smart_crossfade")

   def transition(a,b,ma,mb,sa,sb)

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

     if
       # If A and B are not too loud and close, fully cross-fade them.
       a <= medium and b <= medium and abs(a - b) <= margin
     then
       log("Old <= medium, new <= medium and |old-new| <= margin.")
       log("Old and new source are not too loud and close.")
       log("Transition: crossed, fade-in, fade-out.")
       add(fade.out(sa),fade.in(sb))

     elsif
       # If B is significantly louder than A, only fade-out A.
       # We don't want to fade almost silent things, ask for >medium.
       b >= a + margin and a >= medium and b <= high
     then
       log("new >= old + margin, old >= medium and new <= high.")
       log("New source is significantly louder than old one.")
       log("Transition: crossed, fade-out.")
       add(fade.out(sa),sb)

     elsif
       # Opposite as the previous one.
       a >= b + margin and b >= medium and a <= high
     then
       log("old >= new + margin, new >= medium and old <= high")
       log("Old source is significantly louder than new one.")
       log("Transition: crossed, fade-in.")
       add(sa,fade.in(sb))

     elsif
       # Do not fade if it's already very low.
       b >= a + margin and a <= medium and b <= high
     then
       log("new >= old + margin, old <= medium and new <= high.")
       log("Do not fade if it's already very low.")
       log("Transition: crossed, no fade.")
       add(sa,sb)

     # What to do with a loud end and a quiet beginning ?
     # A good idea is to use a jingle to separate the two tracks,
     # but that's another story.

     else
       # Otherwise, A and B are just too loud to overlap nicely,
       # or the difference between them is too large and overlapping would
       # completely mask one of them.
       log("No transition: using default.")
       default(sa, sb)
     end
   end

   smart_cross(width=width, duration=start_next, conservative=conservative,
               transition,s)
end

Thanks!

Normando

El 19/12/2010 01:06 p.m., David Baelde escribió:
> Hi,
>
> On Thu, Dec 16, 2010 at 9:02 AM, Normando Hall<[email protected]>  wrote:
>> If I using smart-crossfade only for the playlist then never run the
>> switches. If I using smart-crossfade after the switches, then all is ok
>> and runnig.
> This is normal: crossing merges tracks, so you can't switch (I presume
> your switch is track sensitive).
>
>> But I want only apply smart-crossfade to the playlist.
> You're in luck because you're already using smart_cross(). The
> solution is to apply the smart_cross after the switch (so the switch
> can occur) but tweak the transition function so that it only applies
> on tracks of the right souce (take the code from smart_crossfade in
> utils.liq and tweak it to use the "source" metadata field).
>
> Good luck,


------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to