Trimming/cropping buffer~

Oct 11, 2007 at 6:15pm

Trimming/cropping buffer~

I am using mxj buf.OP with very good results but I have run into a problem.
I am recording quad files into buffer~s. I set the buffers to an initial
size that is larger than the length I’ll be intending to record. This
results in a period of silence at the end of the buffer and possibly anoth
at the beginning if I delay the start of sound for a time after turning
record~ on. I think searching the buffer for zero value samples at the
begin and end and then copying to another buffer would crop it. Has anyone
done this or made a utility to do this?

Cheers
Gary Lee Nelson
Oberlin College
http://www.timara.oberlin.edu/GaryLeeNelson

#34137
Oct 11, 2007 at 7:15pm

I’ve done this in the past using the bufcpy~ external (http://www.publicbeta.cx/maxx/). It can copy any part of a buffer given 2 arguments for start and end time.

Hope that helps
Dan

Quote: Gary Lee Nelson wrote on Thu, 11 October 2007 12:15
—————————————————-
> I am using mxj buf.OP with very good results but I have run into a problem.
> I am recording quad files into buffer~s. I set the buffers to an initial
> size that is larger than the length I’ll be intending to record. This
> results in a period of silence at the end of the buffer and possibly anoth
> at the beginning if I delay the start of sound for a time after turning
> record~ on. I think searching the buffer for zero value samples at the
> begin and end and then copying to another buffer would crop it. Has anyone
> done this or made a utility to do this?
>
> Cheers
> Gary Lee Nelson
> Oberlin College
> http://www.timara.oberlin.edu/GaryLeeNelson
>
>
>
—————————————————-

#114763
Oct 11, 2007 at 8:55pm

bufcpy~ is not yet UB. Besides, the biggest part of this job is getting the
2 arguments. After that, buf.OP can do the copy.

- search from the beginning of the buffer until a non-zero sample is found
in any channel. Set argument 1
- search from the end of the buffer until a non-zero sample is found in any
channel. Set argument 1

On 10/11/07 3:15 PM, “Dan”

wrote:

>
> I’ve done this in the past using the bufcpy~ external
> (http://www.publicbeta.cx/maxx/). It can copy any part of a buffer given 2
> arguments for start and end time.
>
> Hope that helps
> Dan
>
> Quote: Gary Lee Nelson wrote on Thu, 11 October 2007 12:15
> —————————————————-
>> I am using mxj buf.OP with very good results but I have run into a problem.
>> I am recording quad files into buffer~s. I set the buffers to an initial
>> size that is larger than the length I’ll be intending to record. This
>> results in a period of silence at the end of the buffer and possibly anoth
>> at the beginning if I delay the start of sound for a time after turning
>> record~ on. I think searching the buffer for zero value samples at the
>> begin and end and then copying to another buffer would crop it. Has anyone
>> done this or made a utility to do this?
>>
>> Cheers
>> Gary Lee Nelson
>> Oberlin College
>> http://www.timara.oberlin.edu/GaryLeeNelson
>>
>>
>>
> —————————————————-
>
>

Cheers
Gary Lee Nelson
Oberlin College
http://www.timara.oberlin.edu/GaryLeeNelson

#114764
Oct 12, 2007 at 1:10am

On 12 oct. 07, at 05:55, Gary Lee Nelson wrote:

> bufcpy~ is not yet UB. Besides, the biggest part of this job is
> getting the
> 2 arguments. After that, buf.OP can do the copy.
>
> – search from the beginning of the buffer until a non-zero sample
> is found
> in any channel. Set argument 1
> – search from the end of the buffer until a non-zero sample is
> found in any
> channel. Set argument 1

This deosn’t seem very difficult to achieve in Java with something
like that (not tested):

public void inteligentCrop(int channel)
{
float[] samps = MSPBuffer.peek(bufname, channel);
int start, end = 0;

for (int i = 0; i < samps.length; i++) {
if (Math.abs(samps[i]) > 0) {
start = i;
break;
}
}

for (int i = (samps.length – 1); i >= 0; i–) {
if (Math.abs(samps[i]) > 0) {
end = i;
break;
}
}

//
doCopy(channel, start, end);
}

ej

#114765
Oct 12, 2007 at 12:51pm

Thanks ej,

Yes, that looks like exactly the thing. I guess I can’t put off learning
java anymore. I’ll have a look through the buf.OP to see if I can add a
crop message.

Cheers
Gary Lee Nelson
Oberlin College
http://www.timara.oberlin.edu/GaryLeeNelson

On 10/11/07 9:10 PM, “Emmanuel Jourdan” wrote:

> On 12 oct. 07, at 05:55, Gary Lee Nelson wrote:
>
>> bufcpy~ is not yet UB. Besides, the biggest part of this job is
>> getting the
>> 2 arguments. After that, buf.OP can do the copy.
>>
>> – search from the beginning of the buffer until a non-zero sample
>> is found
>> in any channel. Set argument 1
>> – search from the end of the buffer until a non-zero sample is
>> found in any
>> channel. Set argument 1
>
> This deosn’t seem very difficult to achieve in Java with something
> like that (not tested):
>
> public void inteligentCrop(int channel)
> {
> float[] samps = MSPBuffer.peek(bufname, channel);
> int start, end = 0;
>
> for (int i = 0; i < samps.length; i++) {
> if (Math.abs(samps[i]) > 0) {
> start = i;
> break;
> }
> }
>
> for (int i = (samps.length – 1); i >= 0; i–) {
> if (Math.abs(samps[i]) > 0) {
> end = i;
> break;
> }
> }
>
> //
> doCopy(channel, start, end);
> }
>
>
> ej
>
>

#114766

You must be logged in to reply to this topic.