hello everyone
while this topic is coming up again from time to time, i made a little set of abstractions, that generate bandlimited standard waveforms using table look-up. they work at any samplingrate and the tables are created dynamically. also, they switch to the raw waveforms for low frequencies in order to keep the full spectrum of the waveform without the need to create an enormous number of tables. as for now, there are three waveforms available: saw, square (unofortunately no pwm possible) and triangle. they shouldn't be much more expensive than the corresponding non-bandlimited methods of generating the waveforms. when working in the bandlimited range, they are even cheaper (if i am not totally mistaken; in that range only a [phasor~] and a [tabosc4~] per voice are running dsp-objects).
the set consists of:
blsaw~ generates a bandlimited saw blsquare~ generates a bandlimited square bltriangle~ generates a bandlimited triangle
blsaw_tables generates n tables containing 1 to n harmonics of the saw-waveform blsquare_tables generates n tables containing 1 to (2n-1) harmonics of the square-waveform blsquare_triangle generates n tables containing 1 to (2n-1) harmonics of the triangle-waveform
see the help-files for a more detailed description.
download at: http://romanhaefeli.net/software/pd/bandlimited_oscillators.tar.gz
cheers roman
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
i forgot to mention: these abstraction are made in plain pd, but require pd>=40, since they make use of the settable [send].
roman
On Sun, 2007-03-18 at 02:07 +0100, Roman Haefeli wrote:
hello everyone
while this topic is coming up again from time to time, i made a little set of abstractions, that generate bandlimited standard waveforms using table look-up. they work at any samplingrate and the tables are created dynamically. also, they switch to the raw waveforms for low frequencies in order to keep the full spectrum of the waveform without the need to create an enormous number of tables. as for now, there are three waveforms available: saw, square (unofortunately no pwm possible) and triangle. they shouldn't be much more expensive than the corresponding non-bandlimited methods of generating the waveforms. when working in the bandlimited range, they are even cheaper (if i am not totally mistaken; in that range only a [phasor~] and a [tabosc4~] per voice are running dsp-objects).
the set consists of:
blsaw~ generates a bandlimited saw blsquare~ generates a bandlimited square bltriangle~ generates a bandlimited triangle
blsaw_tables generates n tables containing 1 to n harmonics of the saw-waveform blsquare_tables generates n tables containing 1 to (2n-1) harmonics of the square-waveform blsquare_triangle generates n tables containing 1 to (2n-1) harmonics of the triangle-waveform
see the help-files for a more detailed description.
download at: http://romanhaefeli.net/software/pd/bandlimited_oscillators.tar.gz
cheers roman
___________________________________________________________ Der frhe Vogel fngt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
On 18/03/2007, at 2.24, Roman Haefeli wrote:
i forgot to mention: these abstraction are made in plain pd,
<~ is zexy, isn't it?
but require pd>=40, since they make use of the settable [send].
Can you (or some one else) point to some info on this new feature?
Thanks for making these. I look forward to have a closer look.
Best, Steffen
On Sun, 2007-03-18 at 03:21 +0100, Steffen wrote:
On 18/03/2007, at 2.24, Roman Haefeli wrote:
i forgot to mention: these abstraction are made in plain pd,
<~ is zexy, isn't it?
oops, you are right. then i should say: 'it was my plan to use only internals'. however, i am sure, that a raw square-wave can be generated without [>~]. i'll change that. thanks for notifying me.
but require pd>=40, since they make use of the settable [send].
Can you (or some one else) point to some info on this new feature?
it's actually quite simple: when instantiating a [send] without an argument, it gets two inlets. the right one can be used to change the sendsymbol. i stumbled across this feature by accident, but it is documented in doc/1.manual/x5.htm .
cheers roman
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
Hi Roman,
Roman Haefeli wrote:
oops, you are right. then i should say: 'it was my plan to use only internals'. however, i am sure, that a raw square-wave can be generated without [>~]. i'll change that. thanks for notifying me.
I've had several students on both windows and OS X that had trouble with the [>~] object for various reasons. It can be replaced with [expr~ $v1
$v2], which is what the [>~] abstraction uses.
best, d.
On 18/03/2007, at 11.37, Derek Holzer wrote:
I've had several students on both windows and OS X that had trouble
with the [>~] object for various reasons. It can be replaced with
[expr~ $v1 > $v2], which is what the [>~] abstraction uses.
I saw that in the help patch for the abstraction. That help patches
says also that "you *cannot* use arguments with this version, like
[>~ 2.7]". Now i wonder if there is are Pd-technicalities that limits
to such behavior, since it's not implemented?
[expr~ $v1> $v2] is expecting a vector for the second number, and in this abstraction it will not be passed from a creation argument. If you wanted to use a creation argument, just use the [expr~] object by itself, i.e.:
[expr~ $v1> 2.7]
or whatever. [expr] and [expr~] don't seem to be able to handle dollar-sign creation arguments, so you'd have to figure out another way to pass an argument, like:
[loadbang] | [f $1]
or something like that.
BTW, one thing that makes this a nice way to make a raw (but aliased) square wave is that by changing the value of the second vector between 0 and 1, you can get pulse width modulation:
[phasor~] [numberbox
| |
[expr~ $v1 > $v2]
|
[-~ 0.5]
|
[*~ 2]
best, d.
Steffen wrote:
On 18/03/2007, at 11.37, Derek Holzer wrote:
I've had several students on both windows and OS X that had trouble with the [>~] object for various reasons. It can be replaced with [expr~ $v1 > $v2], which is what the [>~] abstraction uses.
I saw that in the help patch for the abstraction. That help patches says also that "you *cannot* use arguments with this version, like [>~ 2.7]". Now i wonder if there is are Pd-technicalities that limits to such behavior, since it's not implemented?
Steffen wrote:
On 18/03/2007, at 11.37, Derek Holzer wrote:
I've had several students on both windows and OS X that had trouble
with the [>~] object for various reasons. It can be replaced with
[expr~ $v1 > $v2], which is what the [>~] abstraction uses.I saw that in the help patch for the abstraction. That help patches
says also that "you *cannot* use arguments with this version, like
[>~ 2.7]". Now i wonder if there is are Pd-technicalities that limits
to such behavior, since it's not implemented?
it is a problem with the use of [expr~] which allows either a signal on an inlet or a float. you have to decide which one to use at creation time. in zexy's [>~] abstraction, the decision has been made towards the former case.
i currently do not know of a solution for this problem... ..., since the arguments of [expr~] cannot be changed dynamically; ..., since there is no way to tell from within an abstraction whether there are arguments at all (my $@-patch fixes this); ..., since there is no way to change the abstraction's interface dynamically based on arguments (my [initbang]-patch fixes this);
since zexy relies only on vanilla-pd, it cannot solve this problem in it's abstraction set. for this very reason it still provides a binary version of [>~].
but of course you can/should implement both [>~] and [>~ 0] directly with [expr~], and then you have the freedom of choice.
mfga.sdr IOhannes
On 18/03/2007, at 10.21, Roman Haefeli wrote:
it's actually quite simple: when instantiating a [send] without an argument, it gets two inlets. the right one can be used to change the sendsymbol. i stumbled across this feature by accident, but it is documented in doc/1.manual/x5.htm .
Doh. I didn't think of checking the "release note". Unfortunately the
help patch for send has not been correspondingly updated - that's
what i checked. I've altered the subject so others like me can spot
this directly.
There are other quite interesting new features. Like [declare], which
i think is really useful especially for distributing
"programs"/"instruments". It is mainly the [list length] and the
symbol building feature ($1-$2.$3) that has gotten attention.
Questions. "Support for large (>2G) soundfiles, in operating systems
that offer it" for [readfs~], i suspect it's not [soundfiler]? Also i
wonder what "6 or so patches" that have been adopted?
Thanks for bringing this forward.
Hallo, Roman Haefeli hat gesagt: // Roman Haefeli wrote:
oops, you are right. then i should say: 'it was my plan to use only internals'. however, i am sure, that a raw square-wave can be generated without [>~]. i'll change that. thanks for notifying me.
See attached patch for the usual approach.
Frank Barknecht _ ______footils.org_ __goto10.org__
On Mon, 2007-03-19 at 09:47 +0100, Frank Barknecht wrote:
Hallo, Roman Haefeli hat gesagt: // Roman Haefeli wrote:
oops, you are right. then i should say: 'it was my plan to use only internals'. however, i am sure, that a raw square-wave can be generated without [>~]. i'll change that. thanks for notifying me.
See attached patch for the usual approach.
cool. thx
roman
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
Hallo, Roman Haefeli hat gesagt: // Roman Haefeli wrote:
while this topic is coming up again from time to time, i made a little set of abstractions, that generate bandlimited standard waveforms using table look-up.
Maybe you want to rip apart the [singleton] abstraction that's part of [sssad] to automatically create the table-abstractions once and only once per running Pd? it's in the CVS at /abstractions/footils/sssad/_sssad/ and you need these files: list_argument.pd singleton-help.pd singleton.pd
Frank Barknecht _ ______footils.org_ __goto10.org__
On Sun, 2007-03-18 at 09:47 +0100, Frank Barknecht wrote:
Maybe you want to rip apart the [singleton] abstraction that's part of [sssad] to automatically create the table-abstractions once and only once per running Pd? it's in the CVS at /abstractions/footils/sssad/_sssad/ and you need these files: list_argument.pd singleton-help.pd singleton.pd
oh yes, i'd like to do so. actually i thought about implementing a singleton design pattern in pd, but i was too lazy. nice, that it already exists. if you don't mind, i'll 'steal' it.
un updated version will of bandlimited_oscillators will follow.
cheers roman
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
Hallo, Roman Haefeli hat gesagt: // Roman Haefeli wrote:
On Sun, 2007-03-18 at 09:47 +0100, Frank Barknecht wrote:
Maybe you want to rip apart the [singleton] abstraction that's part of [sssad] to automatically create the table-abstractions once and only once per running Pd? it's in the CVS at /abstractions/footils/sssad/_sssad/ and you need these files: list_argument.pd singleton-help.pd singleton.pd
oh yes, i'd like to do so. actually i thought about implementing a singleton design pattern in pd, but i was too lazy. nice, that it already exists. if you don't mind, i'll 'steal' it.
Feel free to do so. singleton.pd is not GPL, though, it's a mailing list community project, so I suppose it's "public domain".
Frank Barknecht _ ______footils.org_ __goto10.org__
here an easier-to-user and updated (doesn't use zexy anymore) version of bandlimited oscillators:
http://www.romanhaefeli.net/software/pd/bandlimited_oscillators.tar.gz
the oscillatores can now be instantiated directly, without the need to create the table-abs first.
roman
On Sun, 2007-03-18 at 13:06 +0100, Frank Barknecht wrote:
Hallo, Roman Haefeli hat gesagt: // Roman Haefeli wrote:
On Sun, 2007-03-18 at 09:47 +0100, Frank Barknecht wrote:
Maybe you want to rip apart the [singleton] abstraction that's part of [sssad] to automatically create the table-abstractions once and only once per running Pd? it's in the CVS at /abstractions/footils/sssad/_sssad/ and you need these files: list_argument.pd singleton-help.pd singleton.pd
oh yes, i'd like to do so. actually i thought about implementing a singleton design pattern in pd, but i was too lazy. nice, that it already exists. if you don't mind, i'll 'steal' it.
Feel free to do so. singleton.pd is not GPL, though, it's a mailing list community project, so I suppose it's "public domain".
Ciao
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de