Skip to main content
Fix typo
Source Link

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m awayaware of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can use the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m away of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can use the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m aware of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can use the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

Minor edit
Source Link

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m away of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can use the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m away of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m away of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can use the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

Post Undeleted by Nigel Redmon
deleted 702 characters in body
Source Link

I see two problems that you're hitting. First, theall of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. Second, the availableIf you want to use these routines can only up and down sample by integer factors.

Clearly, the above routines aren't suited to your purpose. For the first problem you reallyyou’ll need an object that can keep track of history as you send it additional "buffers" (arrays)some buffer management of data, not simply a function. For the second problem, you need an approach that isn't locked into integer factorsyour signal.

There must be Python libraries that do what you want Second, it's not difficult. I'll let you do a web search. I happenfor converting 611 to have seen this one, but I haven't used it: http://ajaxsoundstudio.com/software/pyo/.

The basic idea of conversion is that the conversion process produces one sample at a time100, given access to a certain amount of history. Your input maybe coming from buffers of a certain sizeusing these routines, your output may require youyou’d need to fill buffers of that size,upsample by 100 and the history requirements of the filter may be at a different size, so a good deal of the work is understanding the buffer managementdownsample by 611. You're

Since you’re looking for "a“a simple way"way”, so I think you'll be researchingyou’ll want to research Python DSP libraries. I don’t use any, but I’m away of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

I see two problems that you're hitting. First, the routines act on an array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. Second, the available routines can only up and down sample by integer factors.

Clearly, the above routines aren't suited to your purpose. For the first problem you really need an object that can keep track of history as you send it additional "buffers" (arrays) of data, not simply a function. For the second problem, you need an approach that isn't locked into integer factors.

There must be Python libraries that do what you want, it's not difficult. I'll let you do a web search. I happen to have seen this one, but I haven't used it: http://ajaxsoundstudio.com/software/pyo/.

The basic idea of conversion is that the conversion process produces one sample at a time, given access to a certain amount of history. Your input maybe coming from buffers of a certain size, your output may require you to fill buffers of that size, and the history requirements of the filter may be at a different size, so a good deal of the work is understanding the buffer management. You're looking for "a simple way", so I think you'll be researching Python DSP libraries.

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

First, all of these routines act on an input array. Your comment "values beyond the boundary of the signal are NOT zeros" implies that you want to process a continuous signal, or at least one that is longer than a single call and array. If you want to use these routines, you’ll need some buffer management of your signal. Second, for converting 611 to 100, using these routines, you’d need to upsample by 100 and downsample by 611.

Since you’re looking for “a simple way”, I think you’ll want to research Python DSP libraries. I don’t use any, but I’m away of this one, for instance: http://ajaxsoundstudio.com/software/pyo

But I'll elaborate on the integer factor issue. Converting rate by integer factors is easy to understand and implement—insert zeros to go up, discard samples to go down. DSP books often present this as the only option. But every sample in your source is an impulse. Filtering it with a linear phase FIR antialiasing filter produces a windowed sinc function. You can the windowed sinc functions of all the necessary points anywhere you want. There is no need to do it on integer multiples or divisions of the sample period.

Post Deleted by Nigel Redmon
Source Link
Loading