Re: wrap~ (Was: Re: [PD] wave morphing)

2007-01-31 Thread Denis Trapeznikoff

Sorry, "reply" instead of "reply all" again.

Well, it seemed impossible to me, but here what I found in d_math.c (pd
0.40.0 or something, I'm a bit lazy to look for version):

static t_int *sigwrap_perform(t_int *w)
{
   float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2);
   t_int n = *(t_int *)(w+3);
   while (n--)
   {
   float f = *in++;
   int k = f;
   if (f > 0) *out++ = f-k;
   else *out++ = f - (k-1);
   }
   return (w + 4);
}

Here it definitely says:
if f <= 0 then return f - ((int f) - 1) = f - (int f) + 1 = frac(f) + 1
which is 1 for each non-positive int, of course, and assumes float-to-int
conversions (int k = f) take 'neares to zero' which seems a dangerous
assumption for me (I guess, it should return frac(f) + 1, where 0<=frac<1
for each negative number; perhaps, some compiler flags fix it, it depends on
compiler, but for integers the result is always 1).
I think, the whole situation is worthy a bug report.
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: wrap~ (Was: Re: [PD] wave morphing)

2007-01-29 Thread Denis Trapeznikoff


That said. Why does wrap~ of fx. the signal -0.99 return 0.0099?
and wrap~ of fx. -5.99 return 0.012?



It seems that the precision is low: if wrap~ outputs the difference with the
signal and the greatest integer, not larger than it, for -0.99 it should
return 0.01.

BTW, if one wants to get frac part of the signal, then with the current
implementation of wrap~ (returning 1 for each non-positive integer)

[wrap~]
|
[wrap~]

should do the work: 0 for any integer and the frac part for any other
number.
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: wrap~ (Was: Re: [PD] wave morphing)

2007-01-29 Thread Steffen


On 29/01/2007, at 17.22, Denis Trapeznikoff wrote:


That said. Why does wrap~ of fx. the signal -0.99 return 0.0099?
and wrap~ of fx. - 5.99 return 0.012?

It seems that the precision is low: if wrap~ outputs the difference  
with the signal and the greatest integer, not larger than it, for  
-0.99 it should return 0.01.


Yes, exactly. I just wondered how-come  it wasn't precise.

BTW, if one wants to get frac part of the signal, then with the  
current implementation of wrap~ (returning 1 for each non-positive  
integer)


[wrap~]
|
[wrap~]

should do the work: 0 for any integer and the frac part for any  
other number.


Here it just swaps it, such that for non-positive integers returns 1,  
as it with one wrap~ object does for non-negative integers.


I still don't understand how warp~ of non-negative integers signals  
returns 1. The help files says one are to find the largest integer  
not exceeding the signal, which for integers are the given integer it  
self; then find the difference, which is 0; and then calculate  
difference mod 1, that is 0 mod 1, which is 0. What am i missing? 


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


wrap~ (Was: Re: [PD] wave morphing)

2007-01-17 Thread Steffen


On 15/01/2007, at 14.37, Steffen wrote:



On 15/01/2007, at 11.49, Roman Haefeli wrote:

exactly, and since [wrap~] gives you the difference between the  
largest
integer not exceeding X and X, it will always give you 0, when X  
is an

integer.


That's how i read it too. But following that: If 0 (zero) is an  
integer (it normally is, right?), then the largest integer not  
exceeding 0 is 0, and the difference is 0-0=0. Problem being that   
wrap~ of the signal 0 gives 1, not 0.


I'd like to know too, as i find the description from the help patch  
confusing (when the input is  integers). As i understand what wrap~  
does (again, on the integer domain), it's like a function f: Z ->  
{0,1} where f(N)=0 and f(Z\N)=1 (where N is the numbers 1,2,3,..  
and Z is the numbers ...,-1,0,1,...).



the output of [wrap~] is always => 0 and < 1.


Again, i agree that from the description it would make sense if  
that intact was the output domain.  But it doesn't match the  
experience using wrap~.


Can someone give an explanation of why wrap~ behaves as it does for 0  
and negative integer signals?


If it is meant do behave like it does, i think it would make sense to  
changed the help patch so it matches the behavior. - As the  
functionality is described now, i find it expected that it works on  
signals as wrap from zexy does on the numbers (when wrap from zexy is  
called without arguments).


That said. Why does wrap~ of fx. the signal -0.99 return 0.0099?  
and wrap~ of fx. -5.99 return 0.012?






wrap~tests.pd
Description: Binary data



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-15 Thread Steffen


On 15/01/2007, at 11.49, Roman Haefeli wrote:

exactly, and since [wrap~] gives you the difference between the  
largest

integer not exceeding X and X, it will always give you 0, when X is an
integer.


That's how i read it too. But following that: If 0 (zero) is an  
integer (it normally is, right?), then the largest integer not  
exceeding 0 is 0, and the difference is 0-0=0. Problem being that   
wrap~ of the signal 0 gives 1, not 0.


I'd like to know too, as i find the description from the help patch  
confusing (when the input is  integers). As i understand what wrap~  
does (again, on the integer domain), it's like a function f: Z ->  
{0,1} where f(N)=0 and f(Z\N)=1 (where N is the numbers 1,2,3,.. and  
Z is the numbers ...,-1,0,1,...).



the output of [wrap~] is always => 0 and < 1.


Again, i agree that from the description it would make sense if that  
intact was the output domain.  But it doesn't match the experience  
using wrap~.


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-15 Thread Roman Haefeli
On Mon, 2007-01-15 at 11:49 +0100, Roman Haefeli wrote:

> 
>  the output of [wrap~] is always => 0 and < 1. 

which is wrong, when the input is 0. i din't read carefully, sorry.



___ 
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-15 Thread Roman Haefeli
On Mon, 2007-01-15 at 14:08 +0100, Frank Barknecht wrote:
> Hallo,
> Roman Haefeli hat gesagt: // Roman Haefeli wrote:
> 
> > i can't quite follow, what you mean hear. you CAN use [wrap~] to build
> > your own [int~] (see attached patch).
> 
> Well, the problem is, that this will give you "-1" if you apply it to
> [sig~ 0], whereas int(0) is 0 as is the equivalent message algorithm
> using [wrap] (see attached again).
 
ah, i see. thank you for making this clear. obviously i cannot count to
1 ;-). 

> >> sig~ 0
> >> wrap~
> >> print~
> >> -> 1
> > 
> > as i would expect, as well. where is the bug? am i missing
something?

of course, this looks also strange in my eyes. i was not reading
carefully.

roman






___ 
Der frühe Vogel fängt 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


Re: [PD] wave morphing

2007-01-15 Thread Frank Barknecht
Hallo,
Roman Haefeli hat gesagt: // Roman Haefeli wrote:

> i can't quite follow, what you mean hear. you CAN use [wrap~] to build
> your own [int~] (see attached patch).

Well, the problem is, that this will give you "-1" if you apply it to
[sig~ 0], whereas int(0) is 0 as is the equivalent message algorithm
using [wrap] (see attached again).

Ciao
-- 
 Frank Barknecht _ __footils.org_ __goto10.org__
#N canvas 754 157 470 377 10;
#X obj 86 242 wrap~;
#X obj 70 202 sig~;
#X obj 69 268 -~;
#X floatatom 110 86 5 0 0 0 - - -;
#X obj 129 308 print~;
#X obj 129 202 b;
#X obj 267 305 int;
#X floatatom 267 333 5 0 0 0 - - -;
#X obj 363 276 wrap;
#X obj 333 305 -;
#X obj 333 243 t a a;
#X floatatom 333 333 5 0 0 0 - - -;
#X msg 110 51 0;
#X msg 144 51 1;
#X msg 175 51 2;
#X floatatom 195 333 5 0 0 0 - - -;
#X obj 195 306 snapshot~;
#X obj 110 116 t a b a a;
#X obj 129 178 del 10;
#X connect 0 0 2 1;
#X connect 1 0 0 0;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 2 0 16 0;
#X connect 3 0 17 0;
#X connect 5 0 4 0;
#X connect 5 0 16 0;
#X connect 6 0 7 0;
#X connect 8 0 9 1;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 10 1 8 0;
#X connect 12 0 3 0;
#X connect 13 0 3 0;
#X connect 14 0 3 0;
#X connect 16 0 15 0;
#X connect 17 0 1 0;
#X connect 17 1 18 0;
#X connect 17 2 6 0;
#X connect 17 3 10 0;
#X connect 18 0 5 0;
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-15 Thread Roman Haefeli
On Mon, 2007-01-15 at 05:51 +, Claude Heiland-Allen wrote:
> Roman Haefeli wrote:
> > On Sun, 2007-01-14 at 15:01 +, Claude Heiland-Allen wrote:
> >> When writing it I found a bug in wrap~ in pd-0.40-2 from Miller's site:
> >>
> >> sig~ 1
> >> wrap~
> >> print~
> >> -> 0
> > 
> > as i would expect.
> > 
> >> sig~ 0
> >> wrap~
> >> print~
> >> -> 1
> > 
> > as i would expect, as well. where is the bug? am i missing something?
> 
> wrap~-help says:
> 
> 8<
> wrap~ gives the difference between the input and the
> largest integer not exceeding it (for positive numbers this
> is the fractional part).
> 8<
> 
> largest integer not exceeding 0 is 0, or?
> 
> largest integer not exceeding X is X when X is an integer, or?

exactly, and since [wrap~] gives you the difference between the largest
integer not exceeding X and X, it will always give you 0, when X is an
integer. the output of [wrap~] is always => 0 and < 1. 

> 
> it makes life simpler when
> 
> (x - (wrap~ x)) == x
> 
> when x is an integer, as there is no [int~] in Pd.

i can't quite follow, what you mean hear. you CAN use [wrap~] to build
your own [int~] (see attached patch).

roman
#N canvas 754 157 222 270 10;
#X obj 58 138 wrap~;
#X obj 42 51 sig~;
#X obj 41 164 -~;
#X obj 41 197 avg~;
#X floatatom 41 219 5 0 0 0 - - -;
#X floatatom 42 25 5 0 0 0 - - -;
#X connect 0 0 2 1;
#X connect 1 0 0 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 5 0 1 0;
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-14 Thread Claude Heiland-Allen

Roman Haefeli wrote:

On Sun, 2007-01-14 at 15:01 +, Claude Heiland-Allen wrote:

When writing it I found a bug in wrap~ in pd-0.40-2 from Miller's site:

sig~ 1
wrap~
print~
-> 0


as i would expect.


sig~ 0
wrap~
print~
-> 1


as i would expect, as well. where is the bug? am i missing something?


wrap~-help says:

8<
wrap~ gives the difference between the input and the
largest integer not exceeding it (for positive numbers this
is the fractional part).
8<

largest integer not exceeding 0 is 0, or?

largest integer not exceeding X is X when X is an integer, or?


it makes life simpler when

(x - (wrap~ x)) == x

when x is an integer, as there is no [int~] in Pd.



roman



Claude

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-14 Thread Roman Haefeli
On Sun, 2007-01-14 at 15:01 +, Claude Heiland-Allen wrote:
> When writing it I found a bug in wrap~ in pd-0.40-2 from Miller's site:
> 
> sig~ 1
> wrap~
> print~
> -> 0

as i would expect.

> sig~ 0
> wrap~
> print~
> -> 1

as i would expect, as well. where is the bug? am i missing something?

roman




___ 
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-14 Thread Claude Heiland-Allen

Malte Steiner wrote:
I didnt looked into your patch yet but usually these waveforms are 
stored in one table as one sample. Your tabread object should run 
through one waveform at a time, I have to look up how much bytes they 
are but assume 256, so it runs from 0 to 255 and to switch to another 
waveform you add n*256 where n is the waveformnumber. When you switch 
with a line object over several waveforms, you get the wonderful crude 
ppg sound but you should make sure that it goes only whole numbers 
without fractions so it really jumps a whole waveform each step. It can 
be done by sending the moving number through an int object.


Here's a patch that does exactly this.  256 waveforms each 256 samples long.


When writing it I found a bug in wrap~ in pd-0.40-2 from Miller's site:

sig~ 1
wrap~
print~
-> 0

sig~ 0
wrap~
print~
-> 1


Claude
--
http://claudiusmaximus.goto10.org
#N canvas 10 18 454 378 10;
#N canvas 0 0 293 526 \$0-make-wavetables 0;
#X obj 29 26 inlet;
#X obj 29 59 bang;
#X msg 29 88 256;
#X obj 29 118 until;
#X obj 29 147 f 0;
#X obj 61 147 + 1;
#X obj 60 169 mod 256;
#X msg 29 225 256;
#X obj 29 255 until;
#X obj 29 284 f 0;
#X obj 61 284 + 1;
#X obj 60 306 mod 256;
#X obj 29 422 pack f f;
#X obj 29 198 t b f f;
#X obj 29 332 t f f;
#X obj 191 315 * 256;
#X obj 171 416 +;
#X obj 29 499 tabwrite \$0-wavetable;
#X obj 125 305 / 255;
#X obj 29 359 / 256;
#N canvas 523 553 450 300 \$0-waveform 0;
#X obj 27 33 inlet;
#X obj 27 57 unpack f f;
#X obj 27 262 outlet;
#X text 34 105 phase;
#X text 286 102 morph;
#X obj 28 127 expr cos((1-$f2) * 5*tanh(1-$f1*2) + ($f2) * 5*cos(5*(1-$f1*2)))
;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 1 1 5 1;
#X connect 5 0 2 0;
#X restore 29 468 pd \$0-waveform;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 0 13 0;
#X connect 5 0 6 0;
#X connect 6 0 4 1;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 9 0 14 0;
#X connect 10 0 11 0;
#X connect 11 0 9 1;
#X connect 12 0 20 0;
#X connect 13 0 7 0;
#X connect 13 1 18 0;
#X connect 13 2 15 0;
#X connect 14 0 19 0;
#X connect 14 1 16 0;
#X connect 15 0 16 1;
#X connect 16 0 17 1;
#X connect 18 0 12 1;
#X connect 19 0 12 0;
#X connect 20 0 17 0;
#X restore 78 65 pd \$0-make-wavetables;
#X obj 76 99 table \$0-wavetable 65536;
#X obj 56 37 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 78 37 loadbang;
#X obj 85 258 +~;
#X obj 85 309 hip~ 5;
#X obj 84 333 *~ 0.1;
#X obj 85 355 dac~;
#X obj 260 60 metro 2000;
#X obj 260 37 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 260 106 vline~;
#X obj 273 134 wrap~;
#X obj 259 155 -~;
#X obj 141 236 samphold~;
#X msg 290 273 \; pd dsp \$1;
#X obj 290 252 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 83 126 loadbang;
#X obj 259 210 *~ 256;
#X obj 260 176 max~ 0;
#X text 321 135 bug: wrap~ 0 -> 1;
#X text 313 177 bug workaround;
#X obj 85 283 tabread4~ \$0-wavetable;
#X obj 84 203 phasor~;
#X obj 84 184 mtof;
#X floatatom 83 166 5 0 0 0 - - -;
#X msg 83 146 48;
#X obj 85 235 *~ 256;
#X obj 143 330 / 100;
#X floatatom 143 312 5 0 0 0 - - -;
#X msg 260 83 255 1500 \, 0 300 1600;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 4 0 21 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 0 7 1;
#X connect 8 0 29 0;
#X connect 9 0 8 0;
#X connect 10 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 12 1;
#X connect 12 0 18 0;
#X connect 13 0 4 1;
#X connect 15 0 14 0;
#X connect 16 0 25 0;
#X connect 17 0 13 0;
#X connect 18 0 17 0;
#X connect 21 0 5 0;
#X connect 22 0 13 1;
#X connect 22 0 26 0;
#X connect 23 0 22 0;
#X connect 24 0 23 0;
#X connect 25 0 24 0;
#X connect 26 0 4 0;
#X connect 27 0 6 1;
#X connect 28 0 27 0;
#X connect 29 0 10 0;
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-14 Thread Patco

Malte Steiner a écrit :
I didnt looked into your patch yet but usually these waveforms are 
stored in one table as one sample.
Oops, fortunately you didn't looked into the patch, there was, again, a 
missing abstraction which is attached.
It's a kind of autorange but that outputs values between zero and one 
for a given pair of input range.
This abstraction permits to slide between waveforms by adding them 
progressively

Your tabread object should run through one waveform at a time,
So the functionning seems different because my patch is about getting 
the average between to successive waveshapes,

instead of passing from one to another without transition.
I have to look up how much bytes they are but assume 256, so it runs 
from 0 to 255 and to switch to another waveform you add n*256 where n 
is the waveformnumber.
Good, then the amount of samples won't get truncated with using one 
hundred of different waveforms.




http://en.wikipedia.org/wiki/Wavetable


thanks,
PC.

Cheers,

Malte


#N canvas 0 0 339 233 10;
#N canvas 29 318 179 311 fade-morph 0;
#X obj 42 8 inlet;
#X obj 41 267 outlet;
#X obj 42 114 change;
#X obj 41 245 /;
#X obj 42 157 -;
#X obj 109 50 \$2;
#X obj 127 118 / 2;
#X obj 42 178 abs;
#X obj 42 200 -;
#X obj 42 222 abs;
#X obj 42 135 - \$1;
#X obj 42 30 t a b;
#X obj 80 72 + \$1;
#X obj 42 91 clip \$1;
#X connect 0 0 11 0;
#X connect 2 0 10 0;
#X connect 3 0 1 0;
#X connect 4 0 7 0;
#X connect 5 0 6 0;
#X connect 5 0 12 0;
#X connect 6 0 4 1;
#X connect 6 0 3 1;
#X connect 6 0 8 1;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 9 0 3 0;
#X connect 10 0 4 0;
#X connect 11 0 13 0;
#X connect 11 1 5 0;
#X connect 12 0 13 2;
#X connect 13 0 2 0;
#X restore 163 121 pd fade-morph;
#X text 161 47 \$2 = ending fade out;
#X text 161 26 \$1 = begining fade in;
#X text 148 66 \$2/2 = top level;
#X text 86 44 inlet;
#X text 72 189 outlet = value between 0 and 1;
#X obj 163 94 inlet;
#X obj 163 145 outlet;
#X connect 0 0 7 0;
#X connect 6 0 0 0;
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-14 Thread Malte Steiner

Hello,

I didn't try this freeware, but it looks like very good, the info.html 
is explicitly show the fonctionning,then we could deduce how to proceed 
for doing something similar with this.
Also I am not sure how one hundred of waveforms would be stored into the 
patch.


I didnt looked into your patch yet but usually these waveforms are 
stored in one table as one sample. Your tabread object should run 
through one waveform at a time, I have to look up how much bytes they 
are but assume 256, so it runs from 0 to 255 and to switch to another 
waveform you add n*256 where n is the waveformnumber. When you switch 
with a line object over several waveforms, you get the wonderful crude 
ppg sound but you should make sure that it goes only whole numbers 
without fractions so it really jumps a whole waveform each step. It can 
be done by sending the moving number through an int object.


Even in the boring rompler 'synthesizers' of the 90s all samples are 
usually stored in one big memorychunk. The Emu line of Proteus and 
Morpheus Synthesizers even let you change the wavestart, -end and loop 
settings beyond one sample borders so you can create rather sick material.


http://en.wikipedia.org/wiki/Wavetable

Cheers,

Malte
--
Malte Steiner
media art + development
-www.block4.com-

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-14 Thread Patco

Malte Steiner a écrit :
I do something simular with wavetables in the spirit of PPG or Waldorf 
synthesizers (stepping through a bunch of single cycle waves), its 
great in combination with the moog~ filter and it sounded well on a 
concert yesterday. There are two windows applications out there which 
can generate wavetables and I managed to run them on my Linuxbox with 
Wine.

Its the freeware Tranzilon

http://www.xs4all.nl/~avg/tranzilon/info.html

I didn't try this freeware, but it looks like very good, the info.html 
is explicitly show the fonctionning,then we could deduce how to proceed 
for doing something similar with this.
Also I am not sure how one hundred of waveforms would be stored into the 
patch.

Using one hundred of tables woild be the basic solution,
but also a single table for storing them all could be enough.
In all cases, DS will be usefull for manipulating waves by hand.
Ciao,
PC.
#N canvas 0 0 618 280 10;
#X obj 85 115 noise~;
#X text 121 13 waveshape morphing;
#X obj 134 82 nbx 5 14 -1e+037 1e+037 0 1 empty empty Frequency 0 -6
0 10 -262144 -1 -1 1017 256;
#X floatatom 131 183 5 0 0 0 - - -;
#X obj 173 181 hsl 128 15 0 127 0 0 empty empty WaveShape -2 -6 0 8
-262144 -1 -1 0 1;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-lfo3 1 float 2;
#X coords 0 1 1 -1 100 50 1;
#X restore 332 176 graph;
#X obj 179 208 t b;
#X obj 209 211 t b;
#X obj 195 237 tabwrite~ \$0-lfo3;
#X msg 155 122 63;
#X msg 157 103 0;
#X msg 155 143 127;
#N canvas 508 62 468 391 module3 0;
#X obj 139 23 inlet~;
#X obj 176 343 outlet~;
#X obj 233 71 osc~;
#X obj 232 50 / 100;
#X obj 140 122 samphold~;
#X obj 232 24 inlet;
#X obj 283 23 inlet;
#X obj 315 55 fade-morph 63 128;
#X obj 176 234 +~;
#X obj 176 267 +~;
#X obj 324 106 fade-morph 0 126;
#X obj 325 157 fade-morph -63 126;
#X obj 242 160 *~ 0;
#X obj 177 151 *~ 0;
#X obj 234 209 *~ 1;
#X text 327 36 Random;
#X text 336 87 Square;
#X text 335 136 Sinus;
#X obj 252 264 t b;
#X obj 220 144 -~;
#X obj 216 120 <~ 0;
#X obj 247 120 >~ 0;
#X obj 248 295 tabwrite~ \$0-lfo3-square;
#X connect 0 0 4 0;
#X connect 2 0 14 0;
#X connect 2 0 20 0;
#X connect 2 0 21 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 5 0 3 0;
#X connect 6 0 7 0;
#X connect 6 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 18 0;
#X connect 7 0 13 1;
#X connect 8 0 9 0;
#X connect 9 0 1 0;
#X connect 10 0 12 1;
#X connect 11 0 14 1;
#X connect 12 0 8 1;
#X connect 12 0 22 0;
#X connect 13 0 8 0;
#X connect 14 0 9 1;
#X connect 18 0 22 0;
#X connect 19 0 12 0;
#X connect 20 0 4 1;
#X connect 20 0 19 0;
#X connect 21 0 19 1;
#X restore 111 208 pd module3;
#X msg 317 82 \; pd dsp 1;
#X obj 319 47 loadbang;
#X connect 0 0 12 0;
#X connect 2 0 3 0;
#X connect 3 0 12 1;
#X connect 3 0 6 0;
#X connect 4 0 7 0;
#X connect 4 0 12 2;
#X connect 4 0 8 0;
#X connect 6 0 8 0;
#X connect 7 0 8 0;
#X connect 9 0 4 0;
#X connect 10 0 4 0;
#X connect 11 0 4 0;
#X connect 12 0 8 0;
#X connect 14 0 13 0;
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2007-01-01 Thread Patco

[EMAIL PROTECTED] a écrit :



> I was planning to do something similar in some uncertain future, but
> filling tables with voice formants.
> PC.

Have a play with this. It's something I stumbled on thinking about
cheap voice synthesis algorithms, notice the two [mod] units
that make a zoom/out on a line of ever increasing phasor cycles -
that gives you the number of "formants" - when used with the fm synth
on the right you get voicey effects. Downside - you can't nicely change
formants without somehow syncing each cycle.

andy

Waw, thanks I want to make an instrument with it!
the BP~ filter is cracking so I've just lowered the frequency to get a 
better sounding.
 This is not really what I imaginated, but it gives vowels, that's fine 
I'll just have to find out how to put

consonants, with some enveloppes and white noise I guess.
I allready have an idea about how to link all phonemes together,
maybe one netpd singer will born soon...
Pc






___ 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses 
http://fr.answers.yahoo.com



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


RE: Re: [PD] wave morphing

2006-12-30 Thread padawan12

> I was planning to do something similar in some uncertain future, but
> filling tables with voice formants.
> PC.

Have a play with this. It's something I stumbled on thinking about
cheap voice synthesis algorithms, notice the two [mod] units
that make a zoom/out on a line of ever increasing phasor cycles -
that gives you the number of "formants" - when used with the fm synth
on the right you get voicey effects. Downside - you can't nicely change
formants without somehow syncing each cycle. 

andy

moduloformants-experiment.pd
Description: Binary data
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2006-12-30 Thread Malte Steiner
I do something simular with wavetables in the spirit of PPG or Waldorf 
synthesizers (stepping through a bunch of single cycle waves), its great 
in combination with the moog~ filter and it sounded well on a concert 
yesterday. There are two windows applications out there which can 
generate wavetables and I managed to run them on my Linuxbox with Wine.

Its the freeware Tranzilon

http://www.xs4all.nl/~avg/tranzilon/info.html

and the shareware wave256
http://www.sonicspot.com/wave256/wave256.html

Opensource solutions would be cool but I dont know any, I guess a pd 
patch should be possible and I tried something in csound some years ago.


Cheers,

Malte

--
Malte Steiner
media art + development
-www.block4.com-


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


RE: Re: [PD] wave morphing

2006-12-29 Thread padawan12

I studied the solution to what you were trying to achieve and I
understand it now. I also missed the context of your earlier post
explaining that you
wanted a single fader to shift between several sources, sorry. 
Kyle, here's the patch again, or for anyone else who wants a play.
cheers,
Andy



 Hi Andy~
 
Did I miss this post?  I'd like to take a gander at your useage of wavecycles too!
 
~Kyle 
On 12/28/06, Patco <[EMAIL PROTECTED]> wrote:
[EMAIL PROTECTED] a écrit :> Couldn't quite follow what you were doing there Pat.
I forgot to put the comments in my first commit,so it make the patch hard to understand with all mistakes there wasinside...>  Here's my take on> a way of fading between two waveshapes stored in tables that might
> help.What I am looking for is a little bit more complicated because it'sabout fading between more than two waveshapes,but the principle is the same.>  It isn't very well commented but in a few words:
>Neat composition!I finally enjoy my mistakes,which has driven my hears to listen to this piece.> there's two tables, the crossfader exchanges back and forth between> the two, each one is written randomly with a wavecycle (a random set
> of values times a curve to smooth the ends) when it has zero volume> - so we get a continuously morphing pad sound.>>>This is a way very interesting to study, for generating waves, very
astonishing.I was planning to do something similar in some uncertain future, butfilling tables with voice formants.PC.___
D�couvrez une nouvelle fa�on d'obtenir des r�ponses � toutes vos questions !Profitez des connaissances, des opinions et des exp�riences des internautes sur Yahoo! Questions/R�ponses
http://fr.answers.yahoo.com___PD-list@iem.at mailing listUNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list-- http://theradioproject.comhttp://perhapsidid.blogspot.com
(()()()(()))()()())((())(())()((())(___())(()))___
(((000)))oOO 


tablemod-experiment.pd
Description: Binary data
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2006-12-29 Thread David Powers

Yes, please post the patch, Andy. This is something I've wanted to do
for some time.

I got something nice with an additive synth made up of individual
[osc~] objects, by constantly shifting the levels of the harmonics.
Even doing random harmonic values generated pretty cool results.

But, doing this with a wavetable would be MUCH more CPU efficient, not
to mention that I could calculate, say 64 partials instead of the much
lower number I was using.

~David

On 12/29/06, Kyle Klipowicz <[EMAIL PROTECTED]> wrote:

Hi Andy~

Did I miss this post?  I'd like to take a gander at your useage of
wavecycles too!

~Kyle


On 12/28/06, Patco <[EMAIL PROTECTED]> wrote:
> [EMAIL PROTECTED] a écrit :
> > Couldn't quite follow what you were doing there Pat.
> I forgot to put the comments in my first commit,
> so it make the patch hard to understand with all mistakes there was
> inside...
> >  Here's my take on
> > a way of fading between two waveshapes stored in tables that might
> > help.
> What I am looking for is a little bit more complicated because it's
> about fading between more than two waveshapes,
> but the principle is the same.
> >  It isn't very well commented but in a few words:
> >
> Neat composition!
> I finally enjoy my mistakes,
> which has driven my hears to listen to this piece.
> > there's two tables, the crossfader exchanges back and forth between
> > the two, each one is written randomly with a wavecycle (a random set
> > of values times a curve to smooth the ends) when it has zero volume
> > - so we get a continuously morphing pad sound.
> >
> >
> >
> This is a way very interesting to study, for generating waves, very
> astonishing.
> I was planning to do something similar in some uncertain future, but
> filling tables with voice formants.
> PC.
>
>
>
>
>
>
___
> D�couvrez une nouvelle fa�on d'obtenir des r�ponses � toutes vos questions
!
> Profitez des connaissances, des opinions et des exp�riences des
internautes sur Yahoo! Questions/R�ponses
> http://fr.answers.yahoo.com
>
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
>



--

http://theradioproject.com
http://perhapsidid.blogspot.com

(()()()(()))()()())(
(())(())()(((
))(__
_())(()))___
 (((000)))oOO
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2006-12-29 Thread Kyle Klipowicz

Hi Andy~

Did I miss this post?  I'd like to take a gander at your useage of
wavecycles too!

~Kyle


On 12/28/06, Patco <[EMAIL PROTECTED]> wrote:


[EMAIL PROTECTED] a écrit :
> Couldn't quite follow what you were doing there Pat.
I forgot to put the comments in my first commit,
so it make the patch hard to understand with all mistakes there was
inside...
>  Here's my take on
> a way of fading between two waveshapes stored in tables that might
> help.
What I am looking for is a little bit more complicated because it's
about fading between more than two waveshapes,
but the principle is the same.
>  It isn't very well commented but in a few words:
>
Neat composition!
I finally enjoy my mistakes,
which has driven my hears to listen to this piece.
> there's two tables, the crossfader exchanges back and forth between
> the two, each one is written randomly with a wavecycle (a random set
> of values times a curve to smooth the ends) when it has zero volume
> - so we get a continuously morphing pad sound.
>
>
>
This is a way very interesting to study, for generating waves, very
astonishing.
I was planning to do something similar in some uncertain future, but
filling tables with voice formants.
PC.






___
D�couvrez une nouvelle fa�on d'obtenir des r�ponses � toutes vos questions
!
Profitez des connaissances, des opinions et des exp�riences des
internautes sur Yahoo! Questions/R�ponses
http://fr.answers.yahoo.com


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list





--

http://theradioproject.com
http://perhapsidid.blogspot.com

(()()()(()))()()())(
(())(())()(((
))(__
_())(()))___
(((000)))oOO
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2006-12-28 Thread Patco

[EMAIL PROTECTED] a écrit :

Couldn't quite follow what you were doing there Pat.

I forgot to put the comments in my first commit,
so it make the patch hard to understand with all mistakes there was 
inside...

 Here's my take on
a way of fading between two waveshapes stored in tables that might
help.
What I am looking for is a little bit more complicated because it's 
about fading between more than two waveshapes,

but the principle is the same.

 It isn't very well commented but in a few words:
  

Neat composition!
I finally enjoy my mistakes,
which has driven my hears to listen to this piece.

there's two tables, the crossfader exchanges back and forth between
the two, each one is written randomly with a wavecycle (a random set
of values times a curve to smooth the ends) when it has zero volume
- so we get a continuously morphing pad sound.


  
This is a way very interesting to study, for generating waves, very 
astonishing.
I was planning to do something similar in some uncertain future, but 
filling tables with voice formants.

PC.





___ 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses 
http://fr.answers.yahoo.com



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] wave morphing

2006-12-28 Thread Patco

Patco a écrit :

Hi list,

I am trying to fade beetween waveshapes, doesn't find how to get an 
average of the morphed signal between 0 and 1,



Anyway, I've resolved this, it's attached
#N canvas 0 0 793 557 10;
#X obj 115 76 noise~;
#X obj 301 79 hsl 128 15 0 127 0 0 empty empty WaveShape -2 -6 0 8
-262144 -1 -1 3800 1;
#X text 121 13 waveshape morphing;
#X obj 192 59 nbx 5 14 -1e+037 1e+037 0 1 empty empty Frequency 0 -6
0 10 -262144 -1 -1 2000 256;
#N canvas 0 0 450 300 graph123 0;
#X array \$0-lfo1 1 float 2;
#X coords 0 1 1 -1 100 50 1;
#X restore 491 18 graph;
#X obj 219 170 tabwrite~ \$0-lfo1;
#X obj 299 97 t b a;
#X obj 192 99 t b a;
#X text 389 103 the square signal is between 0 - 1 \, the sin and random
signal is between -1 and 1;
#N canvas 454 176 526 442 module1 0;
#X obj 139 23 inlet~;
#X obj 176 343 outlet~;
#X obj 233 71 osc~;
#X obj 232 50 / 100;
#X obj 239 93 >~ 0;
#X obj 140 122 samphold~;
#X obj 232 24 inlet;
#X obj 283 23 inlet;
#X obj 315 55 fade-morph 63 128;
#X obj 176 234 +~;
#X obj 176 267 +~;
#X obj 324 106 fade-morph 0 126;
#X obj 325 157 fade-morph -63 126;
#X obj 195 173 *~ 0;
#X obj 177 151 *~ 0;
#X obj 234 209 *~ 1;
#X text 327 36 Random;
#X text 336 87 Square;
#X text 335 136 Sinus;
#X connect 0 0 5 0;
#X connect 2 0 4 0;
#X connect 2 0 15 0;
#X connect 3 0 2 0;
#X connect 4 0 5 1;
#X connect 4 0 13 0;
#X connect 5 0 14 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 11 0;
#X connect 7 0 12 0;
#X connect 8 0 14 1;
#X connect 9 0 10 0;
#X connect 10 0 1 0;
#X connect 11 0 13 1;
#X connect 12 0 15 1;
#X connect 13 0 9 1;
#X connect 14 0 9 0;
#X connect 15 0 10 1;
#X restore 141 137 pd module1;
#N canvas 508 62 444 466 module2 0;
#X obj 139 23 inlet~;
#X obj 176 343 outlet~;
#X obj 233 71 osc~;
#X obj 232 50 / 100;
#X obj 140 122 samphold~;
#X obj 232 24 inlet;
#X obj 283 23 inlet;
#X obj 315 55 fade-morph 63 128;
#X obj 176 234 +~;
#X obj 176 267 +~;
#X obj 324 106 fade-morph 0 126;
#X obj 325 157 fade-morph -63 126;
#X obj 216 97 *~ 0;
#X obj 177 151 *~ 0;
#X obj 234 209 *~ 1;
#X text 327 36 Random;
#X text 336 87 Square;
#X text 335 136 Sinus;
#X obj 252 264 t b;
#X obj 248 295 tabwrite~ \$0-lfo2-square;
#X obj 218 162 -~;
#X obj 216 120 <~ 0;
#X obj 247 120 >~ 0;
#X connect 0 0 4 0;
#X connect 2 0 14 0;
#X connect 2 0 12 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 5 0 3 0;
#X connect 6 0 7 0;
#X connect 6 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 18 0;
#X connect 7 0 13 1;
#X connect 8 0 9 0;
#X connect 9 0 1 0;
#X connect 10 0 12 1;
#X connect 11 0 14 1;
#X connect 12 0 21 0;
#X connect 12 0 22 0;
#X connect 13 0 8 0;
#X connect 14 0 9 1;
#X connect 18 0 19 0;
#X connect 20 0 8 1;
#X connect 20 0 19 0;
#X connect 21 0 4 1;
#X connect 21 0 20 0;
#X connect 22 0 20 1;
#X restore 116 268 pd module2;
#X floatatom 136 243 5 0 0 0 - - -;
#X obj 178 241 hsl 128 15 0 127 0 0 empty empty WaveShape -2 -6 0 8
-262144 -1 -1 0 1;
#N canvas 0 0 450 300 graph123 0;
#X array \$0-lfo2 1 float 2;
#X coords 0 1 1 -1 100 50 1;
#X restore 337 236 graph;
#X obj 200 297 tabwrite~ \$0-lfo2;
#X obj 184 268 t b;
#X obj 214 271 t b;
#X msg 283 22 63;
#X msg 285 3 0;
#X msg 283 43 127;
#X text 321 5 sin;
#X text 316 23 square;
#X text 315 41 random;
#N canvas 0 0 450 300 graph123 0;
#X array \$0-lfo2-square 1 float 2;
#X coords 0 1 1 -1 100 50 1;
#X restore 475 240 graph;
#X floatatom 105 387 5 0 0 0 - - -;
#X floatatom 84 465 5 0 0 0 - - -;
#X obj 84 442 unsig~ 50;
#X obj 147 385 hsl 128 15 0 127 0 0 empty empty WaveShape -2 -6 0 8
-262144 -1 -1 6300 1;
#N canvas 0 0 450 300 graph123 0;
#X array \$0-lfo3 1 float 2;
#X coords 0 1 1 -1 100 50 1;
#X restore 306 380 graph;
#X obj 153 412 t b;
#X obj 183 415 t b;
#N canvas 0 0 450 300 graph123 0;
#X array \$0-lfo3-square 1 float 2;
#X coords 0 1 1 -1 100 50 1;
#X restore 444 384 graph;
#X obj 169 441 tabwrite~ \$0-lfo3;
#X text 42 141 wrong;
#X text 43 271 wrong;
#X text 27 420 right;
#X obj 135 481 + 1;
#X obj 135 502 / 2;
#X floatatom 135 523 5 0 0 0 - - -;
#X msg 114 336 63;
#X msg 116 317 0;
#X msg 114 357 127;
#X text 179 519 mission accomplished;
#N canvas 508 62 452 474 module3 0;
#X obj 139 23 inlet~;
#X obj 176 343 outlet~;
#X obj 233 71 osc~;
#X obj 232 50 / 100;
#X obj 140 122 samphold~;
#X obj 232 24 inlet;
#X obj 283 23 inlet;
#X obj 315 55 fade-morph 63 128;
#X obj 176 234 +~;
#X obj 176 267 +~;
#X obj 324 106 fade-morph 0 126;
#X obj 325 157 fade-morph -63 126;
#X obj 242 160 *~ 0;
#X obj 177 151 *~ 0;
#X obj 234 209 *~ 1;
#X text 327 36 Random;
#X text 336 87 Square;
#X text 335 136 Sinus;
#X obj 252 264 t b;
#X obj 220 144 -~;
#X obj 216 120 <~ 0;
#X obj 247 120 >~ 0;
#X obj 248 295 tabwrite~ \$0-lfo3-square;
#X connect 0 0 4 0;
#X connect 2 0 14 0;
#X connect 2 0 20 0;
#X connect 2 0 21 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 5 0 3 0;
#X connect 6 0 7 0;
#X connect 6 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 18 0;
#X connect 7 0 13 1;
#X connect 8 0 9 0;