Forums > MaxMSP

Convolution reverb

December 21, 2006 | 7:37 pm

Hi all,

Has anyone implemented a convolution reverb in MaxMSP that would be
willing to share their patch(es)/code with me? I’m putting together a
project assignment for a MaxMSP class next semester, and would love
to have some good examples to share with the students. I need
something that only uses ‘standard’ MaxMSP objects/externals.

Thanks,

Steven

—-
Steven M. Miller

Associate Professor of Contemporary Music
College of Santa Fe
Contemporary Music Program
1600 St. Michaels Drive
Santa Fe NM 87505
http://pubweb.csf.edu/~smill
(505) 473-6197

~~~~~~~~~~~~~~~~~~~~~
SFIFEM
Atrium Sound Space
OVOS
*opportunities for composers & sound artists*


December 21, 2006 | 9:36 pm


December 21, 2006 | 10:45 pm

Most probably the technique you want here is partitioned convolution, which basically is that rather than doing the entire convolution in one go (which would be a problem anyway for larger impulses given limitations on the pfft~ FFT size), you take smaller nibbles through the impulse, thus giving you realtime output on the reverb. Unfortunately I do not have a patch to do this, but I strongly suspect it should be quite feasible as a pfft~ subpatch.

There are a couple patents out on this technique (see http://tinyurl.com/ygokmh ) though in some views these patents are disparaged on the basis of the technique being super-obvious and/or the existence of prior art. IANAL but it seems at least remotely possible that posting a solution might infringe one of these patents. Please please please someone tell me I’m wrong about that.

Eric


December 22, 2006 | 4:00 am

On 12/21/06, Eric Lyon wrote:
>
>
> There are a couple patents out on this technique (see
> http://tinyurl.com/ygokmh ) though in some views these patents are
> disparaged on the basis of the technique being super-obvious and/or the
> existence of prior art. IANAL but it seems at least remotely possible that
> posting a solution might infringe one of these patents. Please please please
> someone tell me I’m wrong about that.

IANAL either, but i believe it’s only an issue if you plan on selling
something that makes use of the patented material.

-j


December 22, 2006 | 7:06 am

Hi Steven,

you can find snapshots of some patches here:

http://www.pescadoo.net/annexe/max/

I never managed to get this fully working when trying to reproduce from
the images, but if you do, please post the patches on the list. In
addition you can find an external for convolution here:

http://www.zippernoise.net/data/

Best,
Trond

>
> Thanks for your message. Convolution of two soundfiles or two live
> input sources, for example, is pretty straightforward with the
> existing fft objects. What I’m looking for is someone who has used an
> impulse response file and convolved audio files or live input with it.
> The trick there is that each new input sample gets convolved and added
> to each past input sample convolved with the corresponding impulse
> sample; i.e. each input sample ‘steps through’ the impulse response
> file for convolution and gets added with the current input sample.
> (This is a generalized description of the process, mind you).
>
> At any rate, any thing you have that I could look at would be helpful
> and appreciated. Thanks!
>


December 22, 2006 | 1:35 pm

>
>
> IANAL either, but i believe it’s only an issue if you plan on selling
> something that makes use of the patented material.
>
>

I’m sure it’s fine to make it just for yourself. But I suspect that distributing it irrespective of price (including free) could be construed as a violation.

Eric


December 22, 2006 | 1:58 pm

Depending on your jurisdiction, even using patented material for your
own personal use may be an infringement.

There is plenty of information on the web regarding patent & other
intellectual property law. Just make sure you read about the country
you’re in, because what pertains to US law can be different in UK or
Germany or Papua New Guinea or wherever. (quel surpris)

PS to Eric: you’ll find UK IP legislation a bit more restrictive than
what you were used to in the US. OTOH, at least they recognize the
notion of moral rights, which the US hasn’t implemented despite
signing on to Berne.

– P.

On 22-Dec-2006, at 13:35, Eric Lyon wrote:

>> IANAL either, but i believe it’s only an issue if you plan on selling
>> something that makes use of the patented material.
>>
>>
>
> I’m sure it’s fine to make it just for yourself. But I suspect that
> distributing it irrespective of price (including free) could be
> construed as a violation.

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de


December 22, 2006 | 2:16 pm

On Dec 22, 2006, at 1:35 PM, Eric Lyon wrote:
> I’m sure it’s fine to make it just for yourself. But I suspect that
> distributing it irrespective of price (including free) could be
> construed as a violation.

An honest question:
Could teaching the technique in a classroom be considered a form of
"distribution"? That’s how it was "distributed" to me. Heck, I even
had to program it for an assignment (as I am sure Eric and others did
once as well). How does patent law come into play in this situation?

—–
Nathan Wolek
nw@nathanwolek.com

http://www.nathanwolek.com


December 22, 2006 | 4:38 pm

Thanks Trond, much appreciated/ I’ll have a look on the links!

Best,

Steven

On Dec 22, 2006, at 12:06 AM, Trond Lossius wrote:

> Hi Steven,
>
> you can find snapshots of some patches here:
>
> http://www.pescadoo.net/annexe/max/
>
> I never managed to get this fully working when trying to reproduce
> from the images, but if you do, please post the patches on the
> list. In addition you can find an external for convolution here:
>
> http://www.zippernoise.net/data/
>
> Best,
> Trond
>

—-
Steven M. Miller

Associate Professor of Contemporary Music
College of Santa Fe
Contemporary Music Program
1600 St. Michaels Drive
Santa Fe NM 87505
http://pubweb.csf.edu/~smill
(505) 473-6197

~~~~~~~~~~~~~~~~~~~~~
SFIFEM
Atrium Sound Space
OVOS
*opportunities for composers & sound artists*


December 22, 2006 | 5:51 pm

Quote: Peter Castine wrote on Fri, 22 December 2006 13:58
—————————————————-
> Depending on your jurisdiction, even using patented material for your
> own personal use may be an infringement.
>

Back in the 1980s Chris Penrose and I were working on a concept called "pay-per-think" for collecting royalties on our music. Looks like were getting there :(

Eric


December 22, 2006 | 5:58 pm

>
> An honest question:
> Could teaching the technique in a classroom be considered a form of
> "distribution"?

My IANAL guess is that at least in the US that would be okay since you’re not distributing a tool that uses the patented technique. In the good old days, I might have even ventured a guess that such teaching is protected as free speech under the first amendment to the American constitution. Today, it might be just one more thought crime of the 21st century.

Cheers,
Eric


December 23, 2006 | 12:32 am

> An honest question:
> Could teaching the technique in a classroom be considered a form of
> "distribution"? That’s how it was "distributed" to me. Heck, I even
> had to program it for an assignment (as I am sure Eric and others did
> once as well). How does patent law come into play in this situation?
>
> —–
> Nathan Wolek
> nw@nathanwolek.com
> http://www.nathanwolek.com

a _patend is for sure not taught anywhere, patended code
is usually not even published anywhere, except for those
who licensed it.

and if someone reinvents a C++ altivec optimized
deconcolution audio DSP which is patended by lake
technology thats bad luck for one of them. :)


December 23, 2006 | 9:36 am

Hi Steven,

I was talking about discrete convolution (http://en.wikipedia.org/
wiki/Convolution) in the mathematical sense, not the practical
approach of multiplying two spectra generated via fft.

Here is the patch I made some some years ago, I didn´t check it
nowdays, but it should give the right output, please tell me if there
is a mistake.

I think this is ok for teaching since it gives trial and error
approach for the formula (sorry for this little attachment)
It should be possible to make an MSP Patch with peek~s and Uzis doing
convolution in this way. For realtime this approach is not good.

cheers

Falk

p.s. sorry for the delayed feedback, this message has been held back
by cyclings mail system, because it was greater than 40kb. Pasting
the Text below in the same font than above made it much smaller

#P window setfont "Sans Serif" 18.;
#P window linecount 1;
#P comment 418 463 70 196626 output;
#P comment 662 177 167 196626 Impulse Response;
#P window setfont "Sans Serif" 9.;
#P message 627 102 63 196617 -1 -1 -1 -1;
#P message 215 49 43 196617 1 1 1 1;
#P message 743 142 47 196617 size 1 , 1;
#P message 293 33 23 196617 1 0;
#P newex 618 171 27 196617 t b l;
#P comment 337 582 19 196617 -1;
#P comment 340 535 19 196617 0;
#P comment 342 497 14 196617 1;
#P comment 543 298 19 196617 -1;
#P comment 546 251 19 196617 0;
#P comment 548 213 14 196617 1;
#P comment 340 159 19 196617 -1;
#P comment 343 112 19 196617 0;
#P message 835 100 41 196617 1 0.5 1;
#P message 334 32 28 196617 1 -1;
#P message 693 103 41 196617 1 0 0 0;
#P message 897 140 41 196617 0 0 0 1;
#P message 779 99 41 196617 0 0 1 0;
#P message 736 100 41 196617 0 1 0 0;
#P message 448 36 59 196617 0.5 0 1 0.5;
#P newex 370 186 69 196617 t b l l b clear;
#P newex 570 328 27 196617 t l l;
#P user multiSlider 360 499 193 103 -1. 1. 7 2937 15 0 3 2 2 0 1;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P user multiSlider 591 210 193 103 -1. 1. 4 2937 47 0 3 2 2 0 1;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P message 371 30 47 196617 size 1 , 1;
#P message 790 141 80 196617 1 0.75 0.5 0.25;
#P user multiSlider 370 71 193 103 -1. 1. 4 2937 47 0 3 2 2 0 1;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P newex 407 331 27 196617 – 1;
#P newex 371 293 30 196617 uzi;
#P newex 360 466 39 196617 laccum;
#P newex 360 358 27 196617 lbuf;
#P newex 360 410 30 196617 lmult;
#P newex 360 432 151 196617 lpad;
#P newex 501 411 27 196617 – 1;
#P newex 501 389 27 196617 +;
#P newex 587 365 32 196617 zl len;
#P newex 501 267 32 196617 zl len;
#P comment 345 74 14 196617 1;
#P window linecount 4;
#P comment 220 131 100 196617 The sliders are the samples of one
vectorin the soundfile;
#P window setfont "Sans Serif" 18.;
#P window linecount 1;
#P comment 240 80 75 196626 Input;
#P connect 10 0 17 0;
#P connect 24 0 35 0;
#P connect 21 0 35 0;
#P connect 22 0 35 0;
#P connect 23 0 35 0;
#P connect 26 0 35 0;
#P connect 14 0 35 0;
#P connect 37 0 35 0;
#P connect 18 1 4 0;
#P connect 16 0 18 0;
#P fasten 19 3 16 0 417 211 596 211;
#P connect 35 1 16 0;
#P fasten 4 0 5 1 592 386 523 386;
#P connect 6 0 7 3;
#P connect 5 0 6 0;
#P fasten 3 0 11 1 506 290 396 290;
#P connect 3 0 5 0;
#P fasten 19 2 3 0 403 263 506 263;
#P fasten 12 0 9 0 412 355 365 355;
#P connect 12 0 7 1;
#P fasten 11 2 12 0 396 325 412 325;
#P fasten 18 0 8 1 575 379 385 379;
#P fasten 19 1 9 1 389 269 355 269 355 319 382 319;
#P connect 19 0 11 0;
#P connect 13 0 19 0;
#P connect 15 0 13 0;
#P connect 20 0 13 0;
#P connect 25 0 13 0;
#P fasten 35 0 13 0 617 188 580 188 580 56 375 56;
#P connect 36 0 13 0;
#P connect 38 0 13 0;
#P fasten 19 4 10 0 431 206 450 206 450 177 332 177 332 458 365 458;
#P connect 7 0 10 0;
#P connect 8 0 7 0;
#P connect 9 0 8 0;
#P connect 39 0 35 0;
#P window clipboard copycount 42;

Am 21.12.2006 um 22:36 schrieb Steven Miller:

> Hi Falk,
>
> Thanks for your message. Convolution of two soundfiles or two live
> input sources, for example, is pretty straightforward with the
> existing fft objects. What I’m looking for is someone who has used
> an impulse response file and convolved audio files or live input
> with it. The trick there is that each new input sample gets
> convolved and added to each past input sample convolved with the
> corresponding impulse sample; i.e. each input sample ‘steps
> through’ the impulse response file for convolution and gets added
> with the current input sample. (This is a generalized description
> of the process, mind you).
>
> At any rate, any thing you have that I could look at would be
> helpful and appreciated. Thanks!
>
> Best,
>
> Steven
>
> On Dec 21, 2006, at 1:39 PM, Falk Grieffenhagen wrote:
>
>> Hi Steven,
>>
>> Ages ago I once made a patch showing how convolution works, but it
>> ´s no reverb, I have it somewhere and could look for it if you´re
>> interested. I think the only object doing convolution is rtconv~
>> which belongs to the IRCAM Spat distribution.
>>
>> Falk
>>
>
> —-
> Steven M. Miller
>
> Associate Professor of Contemporary Music
> College of Santa Fe
> Contemporary Music Program
> 1600 St. Michaels Drive
> Santa Fe NM 87505
> http://pubweb.csf.edu/~smill
> (505) 473-6197
>
> ~~~~~~~~~~~~~~~~~~~~~
> SFIFEM
> Atrium Sound Space
> OVOS
> *opportunities for composers & sound artists*
>
>


December 23, 2006 | 7:34 pm

Thanks Falk, I’ll have a look at this over the holiday break, and get
back to you if I have any questions, comments, etc. Much appreciated.

On Dec 23, 2006, at 2:36 AM, Falk Grieffenhagen wrote:

> Hi Steven,
>
> I was talking about discrete convolution (http://en.wikipedia.org/
> wiki/Convolution) in the mathematical sense, not the practical
> approach of multiplying two spectra generated via fft.
>

—-
Steven M. Miller

Associate Professor of Contemporary Music
College of Santa Fe
Contemporary Music Program
1600 St. Michaels Drive
Santa Fe NM 87505
http://pubweb.csf.edu/~smill
(505) 473-6197

~~~~~~~~~~~~~~~~~~~~~
SFIFEM
Atrium Sound Space
OVOS
*opportunities for composers & sound artists*


December 27, 2006 | 6:23 am

Eric Lyon wrote:
> IANAL but it seems at least remotely possible that posting a solution
> might infringe one of these patents. Please please please someone
> tell me I’m wrong about that.

The principal of patents is, that it is public. You can’t infringe any
patent with showing how to do it, as that is done by the publishing of a
patent anyway…
You just can’t base a business on it without getting a license…

Peter Castine wrote:
> Depending on your jurisdiction, even using patented material for your
> own personal use may be an infringement.

Which contry? It would be the opposite of the original idea of patents,
to encourage the inventor to open and publish the technology for
everybody in exchange for the protection.

Roman Thilenius wrote:
> a _patend is for sure not taught anywhere, patended code is usually
> not even published anywhere, except for those who licensed it.

The principal of any patent, and the first aim is to get it published
for anybody to access. (Thats why many claim copyright instead of
patenting it, then they don’t need to show it…)

http://www.patentstorm.us/

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


December 27, 2006 | 12:10 pm

Stefan,

Thanks for posting that. Here are the patents that seem most relevant to this discussion:

http://www.patentstorm.us/patents/6625629-fulltext.html

http://www.patentstorm.us/patents/6421697-fulltext.html

Also, check out this discussion of patent infringement:

http://tinyurl.com/ymrt2j

>>>
35 U.S.C. 271 defines infringement as "whoever without authority makes, uses, or sells any patented invention, within the United States during the term of the patent therefor, infringes the patent."
>>>

The above seems to support Peter’s contention – you don’t have to sell an invention to infringe on a patent.

>>>
Infringement can be direct, indirect, or contributory. Anyone who makes, uses, or sells the patented invention is a direct infringer. If a person actively encourages another to make, use, or sell the invention, the person so inducing is liable for indirect infringement. Contributory infringement can be committed by knowingly selling or supplying an item for which the only use is in connection with a patented invention.
>>>

That last bit also makes me nervous.

Eric


December 27, 2006 | 8:28 pm

Thanks Falk for sharing.

(for any other newbies liek me you need to add
max v2;
#N vpatcher 10 59 414 293;
at the begining and
#P pop;
at the end.)

This seems to use some optional blocks.

The L blocks are part of the freeware Lobjects library from

http://arts.ucsc.edu/ems/music/research/lobjects.readme.html

Is that correct ?

Thanks.


December 28, 2006 | 3:30 am

On 27-Dec-2006, at 1:23, Stefan Tiedje wrote:
> Peter Castine wrote:
>> Depending on your jurisdiction, even using patented material for your
>> own personal use may be an infringement.
>
> Which contry? It would be the opposite of the original idea of
> patents,

Well, I would never generalize *any*thing to all countries. However,
you are right that the general point of patents is to publish the
information (as opposed to trade secrets, like the magic formula for
Coca-Cola).

However & IMS, the original question was about *using* a patented
technology. USING. Not teaching or publishing. There is a difference.
And in some jurisdictions personal use (regardless of whether for
immediate commercial gain) may be regarded as a violation of patent law.

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Universal Binaries on the way
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
http://www.dspaudio.com/ http://www.castine.de


December 28, 2006 | 11:29 pm

> The principal of any patent, and the first aim is to get it published
> for anybody to access. (Thats why many claim copyright instead of
> patenting it, then they don’t need to show it…)

does not mean you publish _anything about it!
you only publish you idea/your product, not
a full descripton about how to produce it (or
in the case of software, the full source code.)

in german it is called patentbeschreibung, i guess
patent description would be the right translation.

that publishing something means there is no copyright
must be a french law. :)

*absichtlich falsch versteh*

-110


December 30, 2006 | 9:05 am

Peter Castine wrote:
> However & IMS, the original question was about *using* a patented
> technology. USING. Not teaching or publishing. There is a difference.
> And in some jurisdictions personal use (regardless of whether for
> immediate commercial gain) may be regarded as a violation of patent law.

That would mean you can post a patch with a disclaimer that using it
would violate a patent if you are in the US (software patents are not so
easily possible in Europe, though the industry tries to change it…)

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


January 4, 2007 | 11:11 am


January 5, 2007 | 10:44 am


Viewing 22 posts - 1 through 22 (of 22 total)