# [chuck-users] How can I filter silence?

Graham Coleman gc at gehennom.net
Sun Sep 24 15:50:44 EDT 2006

```I came up with some cheesy code to implement the idea.
It speeds up the tape when it hits silence. You'll need to
tune the time constants and the threshold for best results:

sndbuf buf => dac;
buf.pos( 0 );

0.05 => float tresh;
0.01 => float rt; //release const
0.4 => float at; //attack const
float xd;

while(true) {

math.fabs( buf.last() )-xd => float a; //amp diff
if ( a < 0 ) 0=>a; //non-negative
xd*(1-rt)+at*a => xd; //the attack/release exponential filter

if ( xd<tresh ) {
buf.pos( buf.pos()+6 ); //skip ahead
}

1::samp=>now;
}

To compute the time constants, use this formula:
//AT = 1 - e ^ (-2.2T/t<AT)

or this if t is in samples:

time const = 1.0 - exp( -2.2 / t );

best,

Graham

On Sun, 24 Sep 2006, Graham Coleman wrote:

> I'm not sure if there's anything in chuck that will currently do this,
> but I think you could write something like a noise gate, that tracks the
> amplitude of samples coming from a SndBuf and skips ahead until the level
> rises above a threshold.
>
> Not sure how well this would run in real time.
>
> Better, would be something that preprocesses the file with in/out points
> so the skips are quick.
>
> Graham
>
> On Sun, 24 Sep 2006, Jim Hinds wrote:
>
> > I want to scan some audio for dropped out sections.  It's long and
> > talky with 'significant' pauses between question and answers.  These
> > sections are filled with background noise, and often several seconds
> > long.  I'd like to shorten these empty sections (there are a lot of
> > them).
> >
> > I'd like to keep the files more or less intact (not sliced up into a
> > zillion intermediate files)
> >
> > Is there a unit in chuck that will be able to delete samples as they
> > pass through?
> >
> > Jim
> > _______________________________________________
> > chuck-users mailing list
> > chuck-users at lists.cs.princeton.edu
> > https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
> >
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
```