Tuesday, February 24, 2015

Class notes 2/24: re-synthesizing acoustic sounds, forward object, buffer~, groove~ and play~, things to think about when writing a Max piece

peakamp~ object--can send continuous amplitude information, by banging it with a metro, or have it report peak amplitude for some segment of time

sigmund~ object can also send out continuous amplitude information

sigmund~ object can also send out continuous frequency information, not just pitch information--you can have, for example, a sine wave recreate that frequency shape--put it into a buffer, graph it--this is a non-real-time process, although you could do the same thing in real time with an ezadc~ object

"stealing the expressivity of the player"

jit.poke~ object--takes value of a signal and puts it into a matrix where it can be displayed

sfplay~ object-->sigmund~-->buffer~ objects off to the side with record~ object for each

can then use those curves to control synthesized sound/re-synthesize sound--allows you to change pitch or speed independently

When you write a Max piece:
Make list of things that need to be checked before a piece starts
Make version of score that lists the triggering actions/notes to remind yourself

He's made an object called ducker~ that tells computer to ignore input that's below a certain threshold.  It looks really handy, see if it's in the examples section.

scheduler in audio interrupt--set any scheduled events along with audio scheduler
CPU meter--can tell you how much of the processing power you're using
Timer--can run a timer that counts up, so you can see how long the piece has been going on
Check Audio--opens Audio Status window
Can create a sub patch that determines threshold automatically, by using peakamp~ object.

change object--filters out repetitions of the same thing

forward object--sends what comes in to the appropriate objects within the patch--looks like a send object, but it doesn't have to know in advance where to send stuff--like a send object where you can change the name of where you want to send it

Check out Chris' *main* patch, which demonstrates the forward object and forwarding.

If you're thinking about how to make a Max structure for a piece, think about how a fellow player or improviser would react to what you play.

buffer~ object--makes a space in RAM, whereas sfplay~ object creates a small "personal" buffer but reads from hard drive--because it's Random Access Memory, can go to any part of it randomly at any moment--a whole bunch of objects can access the buffer--see his objectsthataccessbuffer~ example

**once you create a buffer with a name, all the objects pertaining to that buffer should contain the buffer name

replace message--resizes buffer and puts new thing in it--when it's done loading a file, it sends a bang out its right outlet

info~ object--gets information from buffer~ object, like channel and duration information

read message--like replace, loads something into the buffer, but doesn't set size of buffer--if you use this, you need to have set the size of the buffer already, and it'll play through that amount of time regardless of how long the sound file is

cycle~ object--reads cyclically through 512 samples of the sound and treat it like a waveform, any 512 samples you choose, and you can tell it to do that many times per second, so it creates some kind of tone out of that

index~ object--looks up what's in the buffer at any given moment, esp. when paired with count~

play~ object--plays the sound in the buffer--can give it arguments with starting and stopping points in ms--can also get it to scroll through buffer--can send start and stop messages, or pause and resume messages (?) probably, or "start 0 420" to start at the beginning and read through .42 seconds--can also say "start 420 0" to play part of the file backwards--can say "start 1000 2000 1200" to read from 1 second to 2 second, but do it in 1.2 seconds--can use a line~ object to move through buffer in certain ways, sending a 3-part message in to it--"0, 1000 2000" for example--can feed cycle~ in to it to set a speed for moving through it, usually a really low number like 0.025, it's like a sinusoidal scrubber moving forward & backward through buffer, sort of like scratching a record back & forth, can add number boxes for depth (how much of sample to scrub), rate (how fast), and center (frequency around which pitch will scrub)

Yes, this can work for video, but you have to process video parallel and just send them the same information

record~ object--allows you to record into buffer

poke~ object

peak~ object

wave~ object

groove~ object--you can set loop points within sound, change speed, and tell starting point in sound--very similar to play~, but defines things differently--in order to play, needs an msp signal that tells it the rate at which it will play (sig~) and needs startloop message--can continuously change rate at which it plays, positive and negative values--can also set loop spots within groove, have to send 1 into loop message into groove~ in order to activate loop features--right outlet sends out numbers 0-1 as it reads through loop--could send that into buffer that contains trapezoid to make window that fades it in and out with each loop, to avoid clicks--can also have it loop to a specific moment by sending in a numerical message--can also send it "set soundA" messages to change sound file it's reading through

sig~ object--passes on rate to send in to groove~

No comments:

Post a Comment