Subject: MAX Digest - 22 Apr 1999 to 23 Apr 1999 (#1999-124)
Date: Sat, 24 Apr 1999 00:00:05 -0400
From: Automatic digest processor 
Reply-To: MAX - Interactive Music/Multimedia Standard Environments
     
To: Recipients of MAX digests 

There are 8 messages totalling 429 lines in this issue.

Topics of the day:

  1. FSR's
  2. OT - rob henke
  3. Force Sensitive Resistors
  4. digiclick
  5. FSR
  6. Digital click removal
  7. Scrubbing
  8. Dumber DSP

----------------------------------------------------------------------

Date:    Fri, 23 Apr 1999 04:02:27 EDT
From:    RBMengMail@AOL.COM
Subject: FSR's

In a message dated 4/22/99 4:02:41 AM, LISTSERV@LISTS.MCGILL.CA writes:

<< I'm looking for a source of FSR & linear potentiometers ( ribbon
controllers).  I did a search but only found some large industrial
mnaufacturers.
Any help would be appreciated. >>

Check the Windsynth.org  technical library.  Several of the guys that run
the
windlist (wind synthesizer) maillist have developed a few projects using
FSR's with MIDI.  I believe they list sources for small quantities or
development kits.

R B Meng

------------------------------

Date:    Fri, 23 Apr 1999 09:26:58 +0100
From:    david stevens 
Subject: OT - rob henke

sorry everyone for this way off-topic message, but i think that rob may have
moved from his imbalance email address, and i remember he posted here a week
or
so back, but i didn't keep that digest. so if anyone knows his current
email, or
if you see this rob, could you email me privately.

again, my apologies for the OT, but i can't think of any other way to do
this

thanks

david

------------------------------

Date:    Fri, 23 Apr 1999 09:31:03 +0100
From:    Martin Robinson 
Subject: Re: Force Sensitive Resistors

I'v built some FSRs using carbon loaded foam but as a previous posting
indicated, it returns to 'normal' quite slowly. I then experimented with
carbon loaded plastic bags, the ones in which PC cards and hard drives are
sometimes shipped (not the shiny silver ones). Here's the recipe:

You need:
* Two 1" squares of foil backed card (I cut mine from a burgular alarm mat
  but you could make your own)
* One 1" square of regular stiff card with a square cut from the middle
  (about 5/8" square will do)
* One 1" square cut from a carbon plastic bag
* 100k Ohm resistor (the value was arrived at by experiment)
* Some stranded equipment wire
* Some electrical tape

Method:
* Take two pieces of wire and strip the ends
* Tape one these (the stripped bit) to each of the foil backed squares, tape
  it right on the very edge (yes, on the foil side)
* Tape the regular piece of card, the 'window' on top of one of these pieces
  of foil backed card so you can see the foil through the window
* Tape the carbon plastic over the window; tape it by the edges since you
  don't want to cover the carbon!!
* Put the remaining foil backed square (with the wire attached) on top of
  the carbon plastic

The electronics:
* One wire should go to a supply (I'm using an iCube so this is 5V for me)
* The other is the signal
* The 100kOhm resistor goes between the signal and the ground

I get a full range of values from the iCube (MIDI 0-127) so I'm presuming
that I'm getting the full range from 0-5V. The carbon plastic is advertised
(?) as being unaffected by age (unlike the foam which deteriorates very
rapidly) so should last.

Total cost: 25 UK pennies! (0.15 USD?)
Infusion Systems 'Touch' sensor: 30 USD (OK, OK it's sexier and more
reliable)

Jamie, you can buy carbon bags from Maplin in the UK order code AS23A gets
you nearly 2 square metres of carbon plastic for under 2 GBP. They sell the
burgular alarm mats too. Good luck!

>>>>>>Martin Robinson :: (Ex)tractor :: &&             ________
>>><<<_sonicArts.at(middlesexUniversity.london.uk);      ______
<><><>__this.liveElectronics.interFaces.diffusion          ____
<<<<<<___Extractor at Off-Centre 333 Old Street, London UK.  __
<<<>>>____Sat 8 May 1999 2200-0500                            ]
       || 

------------------------------

Date:    Fri, 23 Apr 1999 12:06:52 +0200
From:    jvkr 
Subject: digiclick

>What kind of solution can you find to get rid of digital cliks ?
>Is there an existing anticlick MSP object ?
>One which would detect a steeper amplitude slope variation in a short
>delay preferably in a quiet moment ?
>or something like this
>At least how can a line~ could be used for this purpose
>How can you use a line~ for smoothing ?
>Roland

Before MSP, life was easy. Max did not generate any clicks. That is quite
an open door indeed. Off course there was no audio involved; no audio, no
clicks. Yet, another (phantom) reason could be that there was only one
level of data: controller data. I call this the 'bang level'. Now, with
MSP, a sound level has been, and had to be linked to this bang level.
Though they are two completely different things, somewhere they have to
communicate, I guess. Therefore you can bang an audio event (whatever).
But as I experienced, the bang level and the sound level, have a
completely different notion of what is time. Audio has to be continuous,
to avoid gaps between buffers of audio, which are sent to the
soundmanager. After this, there is (probably) time left to look what is
going on at the bang level. This results in a bang level that is being
forced back and forth in time, to make room for the audio. This then
implies timing problems. And indeed, there you have your click generator.
We all agree on debugging our patches into flawless ones, and fading in
and out our audio sources. But sometimes this is not enough. A patch in
which bangs generate succesive audio events that have to be 'glued'
together is very problematic. I found that the 'mistake' in time can
easily be more than 30 miliseconds (!). This askes for a very thorough
solution.
The best thing to do is to take care that a bang can never interfere with
the audio, forcing it to wait at hot moments. This can be done by making
a very clear distincion in your patch between the two levels, treating
them as two different things. Make clear dicisions on how and where you
allow the bang level to affect the audio level. And you will find that
some things are just impossible. Measuring something on a signal, that
affects that signal, is tricky. Before the bang level has detected a
zero-crossing for instance, it might as well have long gone; yet, it
still might have to come.
Below you find a patch that proves my assumption. It measures the cycle
time of a sawtooth signal (phasor~). Try it yourself. A few things will
have effect on the results. Change the settings of buffer size and max
scheduler time. Strip your system software. Also the speed of your
computer off course makes a difference. (I work on a relatively slow 603e
based performa.)
I had the chance to work with the FTS version of Max, which runs on a
dedicated DSP-board on a fast NeXT computer. The difference is huge, even
if the timing is as well not completely straightforward. I guess we have
to wait for multiprocessor computers, at least to get rid of the system
interference. And even then the problem will remain.

Johan.

max v2;
#N vpatcher 76 92 487 380;
#P button 321 208 15 0;
#P number 321 226 49 9 0 0 0 3;
#P number 321 247 49 9 0 0 0 3;
#P newex 270 225 48 196617 minimum;
#P newex 267 246 51 196617 maximum;
#P comment 20 33 216 196622 Configure the Max Scheduler;
#P comment 60 122 153 196617 msecs between scheduler ticks;
#P comment 123 57 48 196617 More efficient;
#P comment 23 57 47 196617 More accurate;
#P comment 152 103 20 196617 20;
#P comment 23 103 14 196617 1;
#P number 23 120 35 9 0 0 0 3;
#P message 23 143 88 196617 \; max interval \$1;
#P user hslider 23 84 18 128 20 1 1 0;
#P number 262 208 56 9 0 0 0 3;
#P newex 262 188 33 196617 timer;
#P newex 262 168 33 196617 t b b;
#P user ezdac~ 132 140 176 173 0;
#P button 262 150 15 0;
#P number 262 30 57 9 0 0 0 3;
#P newex 262 50 78 196617 expr 1000/$f1;
#P newex 262 130 34 196617 edge~;
#P newex 262 110 28 196617 >~ 0;
#P newex 262 90 44 196617 change~;
#P newex 262 70 44 196617 phasor~;
#P comment 338 209 33 196617 Reset;
#P comment 311 71 50 196617 Sawtooth;
#P comment 311 91 69 196617 Detect 'wrap';
#P comment 324 30 60 196617 period [ms];
#P connect 4 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 7 0;
#P connect 7 0 10 0;
#P connect 8 0 4 0;
#P connect 9 0 8 0;
#P hidden fasten 9 0 25 1 267 47 251 47 251 235 313 235;
#P hidden fasten 9 0 24 1 267 47 251 47 251 262 313 262;
#P connect 10 0 12 0;
#P hidden connect 28 0 9 0;
#P connect 12 0 13 0;
#P connect 12 1 13 1;
#P connect 13 0 14 0;
#P hidden fasten 14 0 24 0 267 260 272 260;
#P hidden fasten 14 0 25 0 267 233 275 233;
#P hidden connect 17 0 16 0;
#P hidden connect 15 0 17 0;
#P hidden connect 24 0 26 0;
#P hidden connect 25 0 27 0;
#P hidden connect 26 0 24 1;
#P hidden connect 27 0 25 1;
#P pop;

------------------------------

Date:    Fri, 23 Apr 1999 12:34:14 +0100
From:    Vincent Puig 
Subject: FSR

Ircam is now providing AtoMIC Pro with a sensor kit including one FSR.
Excerpts from the Manual, a description of the FSR (and an order form sice
it is priced US$799) is now available at :

www.ircam.fr/atomic

It is in French only at the moment but I am currently translating the
excerpts of the Manual related to FSR and they should be available next
week.

Vincent Puig
IRCAM
1 place Igor Stravinsky
75004 Paris
France
Tel: 01 44 78 49 59
Fax: 01 44 78 15 40
email : puig@ircam.fr

------------------------------

Date:    Fri, 23 Apr 1999 20:46:41 +0100
From:    david stevens 
Subject: Re: Digital click removal

>
> The one drawback of the line method above is that you do get a pulsating
> effect if you loop the sounds.

or you can do what i've done, and learn to love those rhythmic little clicks
-
and if you listen to much "experimental ambient/techno" (not sure what else
to
call it) you'll hear that little digital clicks are very much in fashion
right
now (strike while the iron is hot! get that patch/record out there now!)

david

(

For live performance, the easy thing to do is to send the audio before you
record it through a *~ object - when you start recording, you immediately
send a line~ the message 0, 1 1 (from zero to 1 in 1 millisecond), with
the output of line~ patched to the right input of *~.  The message to stop
recording would first bring the line~ from 1 to zero, and then actually
stop the recording.

)

------------------------------

Date:    Fri, 23 Apr 1999 23:09:12 +0200
From:    Jean Paul Laurent 
Subject: Scrubbing

Philip  wrote:

>In the help file for buffer~, it shows that you can connect the output
>of buffer~ to a number box to see the time in ms when you click on or
>move the mouse over the waveform.  It even says, "This can be used for
>scrubbing."
>
>Is there a way to hear this?  Or is it just for viewing?

An example not really for scrubbing, but useful to play by dragging the
mouse on the waveform in buffer~ window:

max v2;
#N vpatcher 32 48 439 692;
#P comment 253 104 110 196618 2) double-click to see sound in buffer;
#P toggle 34 566 15 0;
#P button 61 481 15 0;
#P newex 85 565 83 196617 play~ scrubme 2;
#P newex 85 594 83 196617 dac~;
#P newex 85 535 36 196617 line~;
#P message 85 506 117 196617 3455 \, 31 3424;
#P message 85 481 80 196617 set \$1 \\\, \$2 \$3;
#P message 168 80 41 196617 replace;
#P newex 168 108 83 196617 buffer~ scrubme;
#P newex 33 41 45 196617 loadbang;
#P newex 61 448 27 196617 gate;
#P newex 170 284 27 196617 !=;
#P newex 78 374 32 196617 swap;
#P button 132 325 15 0;
#P newex 152 374 23 196617 abs;
#P newex 152 348 27 196617 -;
#P newex 78 423 55 196617 pack 0 0 0;
#P button 45 80 15 0;
#P newex 33 107 71 196617 MouseState;
#P button 78 158 15 0;
#P newex 152 225 27 196617 int;
#P newex 33 132 55 196617 sel 1;
#P newex 78 225 27 196617 int;
#P number 95 158 35 9 0 0 0 3;
#P comment 45 63 91 196617 enable MouseState;
#P comment 48 394 32 196617 begin;
#P comment 108 394 20 196617 end;
#P comment 159 394 45 196617 duration;
#P comment 179 303 100 196617 checks if mouse up location is different from
mouse down;
#P comment 89 446 150 196617 closed if mousedown = mouseup or outside
buffer~ window;
#P comment 167 482 122 196617 list : begin \, end \, duration;
#P comment 211 81 94 196618 1) load in a sound;
#P comment 253 143 131 196618 3) Click and drag on the sound with the
mouse.;
#P comment 254 184 124 196618 Sound is played on mouse up (reverse if
dragging towards left).;
#P comment 12 552 63 196617 audio on/off;
#P comment 161 246 31 196617 down;
#P comment 61 245 18 196617 up;
#P connect 19 0 18 0;
#P connect 27 0 18 0;
#P connect 18 0 15 0;
#P fasten 25 0 26 0 175 309 66 327;
#P connect 26 0 35 0;
#P connect 15 1 17 0;
#P connect 17 0 14 0;
#P connect 14 0 24 0;
#P connect 24 0 20 0;
#P connect 20 0 26 1;
#P connect 26 0 30 0;
#P connect 35 0 31 0;
#P connect 30 0 31 0;
#P connect 31 0 32 0;
#P connect 32 0 34 0;
#P connect 36 0 33 0;
#P connect 34 0 33 0;
#P connect 28 0 13 0;
#P connect 13 0 14 1;
#P connect 16 0 24 1;
#P connect 24 1 20 1;
#P connect 22 0 20 2;
#P connect 14 0 23 0;
#P connect 15 0 16 0;
#P connect 16 0 21 0;
#P connect 23 0 21 0;
#P connect 21 0 22 0;
#P connect 34 1 33 1;
#P connect 29 0 28 0;
#P connect 13 0 16 1;
#P connect 14 0 21 1;
#P connect 14 0 25 0;
#P connect 16 0 25 1;
#P pop;

=====================================================
Jean Paul Laurent         jean.paul.laurent@skynet.be

Court-Saint-Etienne                           Belgium
=====================================================

------------------------------

Date:    Fri, 23 Apr 1999 20:24:35 -0400
From:    Michael McNicholas 
Subject: Dumber DSP

Thanks for the info on the bit layout.
Here is a suggestion of an even dumber distortion method.

 while (--vlength)
    {
        if (*in > 0)    {
                if (*in > 0.8)  {
                *out = 0.8;
                } else {
                        if (*in > 0.5)  {
                        *out = 0.5;
                        } else  {
                        *out = 0.2;
                        }
                }
        } else  {
                if (*in < -0.8) {
                        *out = -0.8;
                } else  {
                        if(*in < -0.5)  {
                        *out = -0.5;
                        } else  {
                         *out = -0.2;
                         }
                }
        }
        *in++;
        *out++;
    }

It makes my ole'dirty bastard sample sound like sound art. And  don't
worry, I have a sea of dumb ideas for DSP methods.

sincerely,
michael

------------------------------

End of MAX Digest - 22 Apr 1999 to 23 Apr 1999 (#1999-124)
**********************************************************