Showing posts with label CC2. Show all posts
Showing posts with label CC2. Show all posts

Monday, 27 October 2008

cc2 - week 10 - delay


Made a fairly basic delay with feedback, wet/dry, delay time and buffer size settings.

Incorporated an input for modulation which adds incoming signal to internal settings.. works quite well.

I played with using the poly~, got it to have a user input number of taps with the number as a multiplier for delay time. Each tap was full level or again dependant on number of taps, nothing that the other delay didn't acheive.

Couldn't quite think of a useful way to use it. I would like to set individual tap time (which seems to necessitate having a pre-determined number of input variables hence taps) which doesn't seem that much more useful than not using poly~ except maybe a slight reduction in used objects if you turn unused taps off..

Curiousity of the week.
running a float through a [-~ 1] object and getting the output to wrap around zero.


zip
http://www.box.net/shared/c6lxeuexyc






REFERENCES
Haines, Christian. 10. Processing - Delay - CC2 - Music and Signal Processing.pdf

Cycling'74 2006, MSP Tutorials and Topics,
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation).

Sunday, 19 October 2008

cc2 - week09 - processing - FFT


This week I extended the fft crossover to encompass 5 bands.

I was interested in extracting frequency specific information for use as a controller but don't quite understand what information the fft process actually creates.

I found it interesting that you can create dead spots in the crossover by setting them in the middle of the same bin, so I have done a fix on this - although it does require the DSP to be switched on as it uses the FFT fundamental frequency.

zip at
http://www.box.net/shared/fvj33j0lob




___
references
Haines, Christian. 2008. 9. Processing - FFT - CC2 - Music and Signal Processing.pdf

Cycling'74. 2006. MSP Tutorials and Topics.
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation).

Sunday, 12 October 2008

CC2 week 08 _ Midi and MSP


This week's assignment was a bit of a mental challenge. I had to overcome the resistance I had to putting 128 connections, objects etc in an object and all the associated joins.

My first attempt was not appropriate but very simple and had only one output. It was wrong.

My last attempt had 128 outputs, Hurrah !!!

Prior to utilising a poly~ in which to put the ctlin object (thanks to Christians Hint of the Day !!),
I was enjoying my Xenakis looking patches. So much that I'd like to make a patch with so many lines in it you can see zoo animals !!

One other thing I enjoyed from this week was editing the patch.txt file. I did this to name the objects and outputs. It was much easier than naming each object in Max.

http://www.box.net/shared/xjxpr224sq


references

Haines, Christian. 8. MIDI and MSP - CC2 - Music and Signal Processing.pdf

Sunday, 5 October 2008

cc2 - week 07 - sampling (2) Music and Signal Processing

After reviewing the tutorials and beginning my own patches, I quickly dismissed the sfrecord~ for something a bit more flexible, and as keen as I was to use poke~ I instead utilised the record~. My main wish was to be able to record to buffer so as to be able to review recordings before optional saving.

A recording light was necessary, also pre-faders, and also post monitoring. The self refreshing buffer~ view is just plain nifty !!

For the playback I used the play~ object, I can't see much difference between the various objects (wave~, play~, peek~....) but used play~ as an opposite to record~.

Fun times were to be had in the implementing of playing back selected areas in the waveform~ object at recorded speed. Again Max proved itself an interesting tool when it continued to play at double speed, so I put a fix in... then upon a reload spontaneously playing at half speed, so I took the fix out.

Also Max weirdness when routing signals through several graphic switches, I resolved this issue by having simultaneous rails which were then mulitplied by 0/1 as a switch.


Possibly it might have been easier using the groove~ object but I stuck with play~.



zip file at _______http://www.box.net/shared/ixn8n2pdpj




Haines, Christian. 2008. 7. Sampling (2) - CC2 - Music and Signal Processing.pdf



Cycling'74 2006, MSP Tutorials and Topics,
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation).

Tuesday, 9 September 2008

cc2 - week 06 - music and signal processing


i thought it would be fun to create a melodic synth using variable length buffer playback.

so using the groove~ object, and converting midi pitch to milli seconds to control loop end point, bob's your uncle.

issues this time were, needint to set up the groove~ to loop continuously. and setting up the modulation via the receive~ #2, it took a bit of magic to get max to recognise. I actually had to create a second receive~ with the real name, before the argumentative one would work... the first time I've actually caught Max out with such a blatant suddenly it works manouevure !!

i would have liked to use the note on to trigger the loop from the start, this would have made longer loops potentially more interesting, however it did not eventuate.

zip file at:
http://www.box.net/shared/5udpcfgxuf



____________________________________________________________
Haines, Christian. 2008. 6. Sampling (1) - CC2 - Music and Signal Processing.pdf

Cycling'74. 2006, MSP Tutorials and Topics.
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation)


____________________________________________________________

Saturday, 30 August 2008

cc2 - week 05 - synthesis (02)


I am slowly getting the hang of this poly~ object. This week, I found the need to send all the note information in a single moment more relavent than previously. Once I put the line~ object (for envelopes) inside the poly~ things went smooth.

I also put a slight line~ as a quick ramp up for each note, this gets rid of last weeks annoyance in note clicks.

The application of a real time modulator was slightly problematic, but the solution came in the form of the send/recieve objects. This does make it an overall modulator rather than for individual voices.

As my MIDI controller does not send aftertouch, I made available use of the data slider (CC 07) as an alternative.



zip at: http://www.box.net/shared/msl7k4pcra




REFERENCES

Haines, Christian. 2008. 5. Synthesis (2) - CC2 - Music and Signal Processing.pdf



Cycling'74 2006, MSP Tutorials and Topics,
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation).

Tuesday, 26 August 2008

cc2 - week 04 - synthesis (1)


This weeks excitement was to create an additive synth.

The basics of what I created are ;
12 voice polyphonic additive synth with 6 independent sine wave partials.
Multiplier to give relationship to frequency in, amplitude envelope with adjustable time setting, pan, phase, and output level.

This is given a GUI, and utilised in a bpatcher for the demo patch.


This version utitilises 6 seperate poly.partial~ objects ( 1 for each partial), but am in the process of exploring the potential of a single poly~ object with 72 voices (6 partials * 12 voices). This involves what is currently looking like a convoluted mangle of triggers (having to retrigger each parameter for each voice), but with the just excitement idea of placing poly~ objects inside poly~ objects may be easier ... but I'll wait until I get it working before I get too excited.

This additive synth as it is still gives clicks with voice play back ??? The only thing I can think of is the phase position of the cycle~ when playback starts, but I would assume the function~ acting as an envelope would fix this...



Zip folder = http://ed.growerscollective.com/uni/cc2/week04_02/ek.week04_cc2_additivedemo.zip


EDIT: box.net did something funny with original upload. now i can't even upload with them :?
uploaded somewhere else, fixed link... now should work = ideal !!




Cycling'74 2006, MSP Tutorials and Topics,
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation).



Tuesday, 19 August 2008

cc2 - week 03 - polyphony and instancing.


The poly~ object had some mystery. Or perhaps again it was Max/MSP exhibiting its inscrutable behaviour. It took several patches of attempts, and suddenly it worked !! Another of those unrepeatable moments when one repeats a similar process again but now it works.


Also more inscrutable behaviour by reading an earlier generation object from a portable hard drive with no relation to the patch, nor mentioned in the preferences... highly inscrutable. I would like to know how to find the source path of objects inside patcher windows, perhaps the filepath command would be useful but I have as yet to master it. The ability to find the source path would make debugging so much easier as Max has tendencies to be able to put things in one folder and take from another with not even a wink.


Again I have been forced to take a step back and be aware of the software's simplicity. "Target" exists to enhance useability and flexibility, the ability for user defined voice stealing (polyphony) is a fine and glorious thing.


zip file is at : http://www.box.net/shared/ye6dlrcpbk


References

Haines, Christian. 2008. 3. Polyphony and Instancing - CC2 - Music and Signal Processing.pdf

Cycling'74 2006, MSP Tutorials and Topics,
(http://www.cycling74.com/twiki/bin/view/ProductDocumentation).

Grosse, Darwin. 2006, The Poly Papers (part 1), 2007,
(http://www.cycling74.com/story/2005/5/3/135756/4001).


note... blogger seems to be treating anything within <> style as not for common observance, hence I've used ( ) instead

Saturday, 9 August 2008

cc2 - week 02 - signal switching and routing


In implementing the mute function, i found the mute~ object not appropriate yet as last weeks object don't feature any sort of cycle~ style object. So I integrated a toggle switch to trigger the line~ up/down. It works very well.

The ek.sinegen~ difficulty was deciding on the GUI, mmm, knobs/sliders or number boxes..

The ek.sawgen~ features an extra step of extending the basic phasor~ object to ramp from -1 to +1, rather than 0 to 1. I just though it was fun.

The GUI draws my attention back to integrating a default state rather than everything reseting to 0 on loading.
Either a loadbang/loadmess, or integrating a preset object to save multiple settings. The inputs in the GUI versions come in handy for a loadmess.

The GUI versions would be more flexible with a signal input as well as non-signal. At this stage implementing this involves having seperate internal channel paths, or perhaps seperate objects .


And after all this time and cross platform irritation it makes me wonder - how much is this blog worth ?

Zip of everything: http://www.box.net/shared/icea6yv7bq


REFERENCES

Haines, Christian. 2008. 2. Signal Switching and Routing - CC2 - Music and Signal Processing.pdf

Cycling'74. 2006. MSP Tutorials and Topics,
.


Friday, 1 August 2008

CC2_w33k 01_soft on/off for max/msp



I have created a rampdac~ object to soften the impact of turning the dac~ on/off, and a softvol~ object to smooth the effect of abrupt volume changes on an audio signal.

I settled on 12 ms as the default ramp time for both objects. I enjoyed the seeming softness it gave to the softvol~ and then gave it to the rampdac~. I assume that one could abuse any setting to give roughness to a signal, but I think 12ms gives a good all round basic setting.

The major drama (other than remembering how to make a custom argument), was trying to put the dac~ into the rampdac~ object. It took me a few minutes to realise it needed to be in the same window as the cycle~ object (the whole point of the startwindow command ).

The minor drama was creating a custom argument with a default setting. The way I have implemented it means the time for both objects can never = 0, which considering the whole exercise was to prevent this is OK with me.

Oh, and there's sort of a bug in rampdac~ in that if you press off, then on again before it turns off, it'll turn off when it should be on... behaves ok if you don't click madly or keep time at a low setting.

It seems on a basic intro to MSP that it treats audio in a similar manner to Plogue, and as such the work we did last year will stand us in good stead !!!! Hurrah !!!!

Zip of two objects plus help plus demonstration
http://www.box.net/shared/ijwefrxsso



references
Haines, Christian. 2008. 1. Introduction to MSP - CC2 - Music and Signal Processing.pdf

Cycling'74 2006, MSP Tutorials and Topics,
.

Thursday, 29 May 2008

CC2 - Week 10 - Interface Design

two offset windows for the multislider bpatcher, and the ramp value bpatcher..
note the blue slider...


With the variable size MultiSliders it can be hard to tell where in the cycle it is, so now the slider that is being called will change colour. This limits the variability size to 8 as that is the definable colours for candycane sliders. I could use mulitple Multisliders to get more than 8 sliders - but that is a programming challenge for the future.

I put a mulitslider in a bpatcher, with the use of offset to display additional settings - very cool, and space saving !!

However I discovered that I was unable to save presets in the bpatcher window.. I can save the presets in the original patch, but this is quite limiting but good for pre-loading. This caused me to leave the duration multislider as it was, as it uses a range of 0 - 5 for the sliders.

Also bpatching the ramp to controllers, making it neat, but again harder to use re. presets.

I dig the bpatcher, I really did what I did with the multisliders "other settings" button.

link to zip..
http://www.box.net/shared/i93c885voo

UPDATE:
have worked out preset dilemna !! so have added more bpatchers..


References
Haines, Christain. 2008. CC2 - Week 10 - Interface Design - Planner.pdf

Cycling'74 2006, Max Tutorial, 11/1/2007,
http://www.cycling74.com/twiki/bin/view/ProductDocumentation

Tuesday, 20 May 2008

CC2 - Week 9 - Data Management and Application Contro


This week's problems were.

Upon the patch loading - the probability sequencer looked like it was loaded with note, but it wasn't.

Attempting to get the note recorder to record time between notes (as well as of notes), and play back sequence with this info. The major problem being metro won't change time between bangs. and I couldn't get the coll object to succesfully spit out appropriate address' eg 12 13 10 11 8 9 6 7

SO the recorder will play notes back in the same order as played, and has the option of either using the time recorded (for the previous note) or triggered by main sequencer or modifiers.

Other problems were with the layout, my patches just seem messy, but I don't know what to do about it... also there may be a better way of laying out the sections and relating them to each other.
I think I need to look at other peoples well developed patches..

IMPORTANT note, the record section can be sent to any channel (Prob Seq = 1). Giving more variety.
Getting Reason to work with two incoming MIDI channels is bloody annoying !!!

http://ed.growerscollective.com/uni/cc2/week09/edwardkelly_week09_cc2.zip
http://ed.growerscollective.com/uni/cc2/week09/WEEK09_EDWARDkeLLY.mp3




References
Haines, Christain. 2008. CC2 - Week 9 - Data Management and Application Control - Planner.pdf

Cycling'74 2006, Max Tutorial, 11/1/2007,
http://www.cycling74.com/twiki/bin/view/ProductDocumentation

Tuesday, 13 May 2008

cc2 - Week 8 - MIDI and Virtual Instrumentation


Since last week I have modified the phrase slider/tables to be more flexible (theoretically up to 128 sliders and including a random selector - non weighted, just random selection).

I added one of these to be a controller modifier, and three line objects for triggered changing values (the bottom one is half speed).

I also found the preset object as a way to load the patch with number boxes with a useful value (with loadmess).

Bugs -
the ramp subjects, are only triggered by a change in the max value OR by the sequencer running.

zip of files
http://www.box.net/shared/3lrkz4ls84

mp3
http://www.box.net/shared/9fqe4bp1c8

EDIT: have neatened the patch a little and updated the preset so it loads better. 160508.


References
Haines, Christain. 2008. CC2 - Week - MIDI and Virtual Instrumentation - Planner.pdf

Cycling'74 2006, Max Tutorial, 11/1/2007,
http://www.cycling74.com/twiki/bin/view/ProductDocumentation

Tuesday, 6 May 2008

cc2 - week 07 - Messaging and Analysis


Missing the lecture for last week left me pondering a bit, but I think what I've done should be more than adequate :)

I've created a 12 tone sequencer, where each tone is given a probability between 0-100 as to whether it will be played. Given that it's output is 1 - 12 that was easily associated with the notes 1 - 12, then an octave chooser was added to give a range.

I thought about adding individual choices for each of the 12 pitches but spent all my time on the other sections.

The phrase length gives a number of possible individual note durations and velocities. I had an amount of fun trying to get the multislider to change size AND remember its settings.

The lists of duration/velocities includes all 8 no matter what size the 'multislider' because it was easier !!

Patch (in text format)

http://ed.growerscollective.com/uni/cc2/week07/edwardKelly_week07_12step.txt

REFERENCES

Haines, Christian. 2008. CC2 - Week 7 - Messaging and Analysis - Planner.pdf.

Cycling'74. 2006. Max45ReferenceManual.pdf.

Cycling'74. 2006. Max Tutorials 30 -33.

Tuesday, 15 April 2008

CC2 - Week 6 - Messaging and Routing


I have made something similiar to the 'stochastic note list' in plogue bidule.

I added a multiplier of the tempo setting it will randomly choose between. Then I added a probability fader to these multiplier selections...

I added a 'drunk' object to the pitch of the delayed notes.
The modulation wheel will change potential step size from preceding note to each suceeding delayed note.


Notes_ using background objects (eg panels) make things annoying to select/move/edit.
_Using the keyboard while keyboard shortcuts are on, can make things interesting... mmm, a keyboard shortcut off switch...
_Adding things over weeks can lead to a disorganised mess. Start again for neatness.
_Left to right ordering is amazingly important !!!

debugging_One of my objects 'constantUrn', is designed to behave like 'Urn', but without the pause at the end of the cycle.. mine, when choosing 3 as the number range, seems to constantly spit out the same cycle :?
_'randsequence' seems to need a seperate reset after loading before it works right.



It's all in a zip at
http://ed.growerscollective.com/uni/cc2/week06/edward_cc2_week06.zip

inside is a folder with all files as .txt in case of incompatibility..


EDIT: I have neatened and updated the patch. 15 05 08.
MORE EDIT: forgot to save .txt version. 18 05 08.




References
Haines, Christain. 2008. CC2 - Week 6 - Messaging and Routing - Planner.pdf

Cycling'74 2006, Max Tutorial, 11/1/2007,
http://www.cycling74.com/twiki/bin/view/ProductDocumentation

Tuesday, 8 April 2008

cc2 - WEEK 05 - UI Controls and Application State



I though the delay would be easy using some sort of self looping function, but was unable to think of how with the two variables of velocity/pitch. If I'd tried a bit harder perhaps I would have done a few more of those infinite loop thingy errors.

I just went and peeked at Doug's, and realised I've spent far too long on making it look like a keyboard (ish), ha !!! This is software, for doing funny things, not to emulate a physical device and please gear junkies.
That said I take a certain pleasure in its lopsidedness.

I couldn't access my ftp site (at uni) so have posted the patch as text at
http://harmonicornaments.blogspot.com/2008/04/cc2-week-05-ui-controls-and-application.html


What do you know, just had a look once I'd posted everything, and...... I'd forgotten the program change and midi channel.
So a quick copy and paste from week 05, then mapping them to the arrow keys... and hurrah!!!
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
REFERENCES
Haines, Christain. 2008. CC2 - Week 5 - UI Controls and Application State - Planner.pdf

Cycling'74 2006, Max Tutorial, 11/1/2007.

Saturday, 22 March 2008

CC2 - WEEK 03 - MIDI KEYS la MAX


Well the predictions have proved correct - too much time can be spent on this Max !!

I spent far too long trying to work out how to use the modulo (%) to actually spit out a letter name... I figure I should be able to create a list (C,C#,D,D#...) then choose which item in the list to output but couldn't work it out, but figured another way which involved not quite as much typing as I could have done!!

I also discovered how to make things invisible in the lock mode, and how to draw striking boxes !!!
I spent a while also on the midiinfo object. I had a problem getting the MIDI output mode, but only just discovered putting the "1" into the left input halfway through writing this sentence !!!

Patch is at
http://ed.growerscollective.com/uni/cc2/week03/midi2.pat

I have also just added a panic button for extra goodness (not included on above picture).


EDIT :
just noticed a problem with opening a different patch in Max at Uni, so to be safe, here be the .txt version
http://ed.growerscollective.com/uni/cc2/week03/midi2.txt





Haines, Christain. 2008. CC2 - Week 3 - Program Structure - Planner.pdf

Winkler, Todd 2001. "Chapter 4 - Program Structure and Design". P71-78. Composing
Interactive Music: Techniques and Ideas Using Max, The MIT Press.

Cycling'74 2006, Max Tutorial, 11/1/2007,
.

Sunday, 16 March 2008

cc2 - week 02 - intro to max

Print a descending Pythagorean chromatic scale given a starting note.


Had a few problems with this, I couldn't see any way to complete this within the lesson content and tutorials - so looked at last years blogs for help. This exposed me to a few new objects which I integrated (looking at the readings helped as well).

However, I could only get it to print numeric output - but I did manage an object to show note names as they descended.

Also, by selecting starting note, this prints the selected note number- to make the scale clear, I added an effective information break (.:___) at the beginning and end of the output (I needed the delay otherwise the end break was inside the notelist).
I also thought it might be nice to include a clear window command but couldn't fine one.

The patch file is here,
http://ed.growerscollective.com/uni/cc2/week02/DescendingChromaticScale.pat




references:
"CC2 - Week 2 - Introduction to Max - Planner.pdf". Haines, Christian. 13/03/2008.

"Chapter 3 - Graphic Programming with Max". Winkler, Todd 2001, Composing
Interactive Music: Techniques and Ideas Using Max, The MIT Press.

Wednesday, 12 March 2008

CC - Week 01 - pseudo programming


This weeks task : to transform input from a drum kit into a note on a 'musical device'.

I suppose I probably don't need to worry too much about certain assumptions, but am not entirely confident so will make a couple.

There is a drum kit, when one of the components is struck, this becomes the input.
The output is directed to a musical device with input mechanism undefined (could be midi, could be physical direct manipulation).
The program will stop running at the end.

So, the code (as expected the formatting was lost so I am effectively using 2 complementary images).






I was struck by the number of ways this exercise was possible, but mostly i was struck by 'CASE' hence my using this method.




REFERENCES.

Haines, Christian. CC2 - Planner - Week 1 - Programming & Pseudocoding.pdf

Dalbey, Dr John 2006, Pseudocode Standard, 11/1/2007, http://www.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html


Dalbey, Dr John 2006, Vague Pseudocode examples, 11/1/2007, http://www.csc.calpoly.edu/~jdalbey/SWE/pdl_vague.html

Edwards, Peter 2000, A Pseudocode "Standard", 11/1/2007,
http://www.csd.abdn.ac.uk/~pedwards/teaching/CS3007/requirements/pseudocode.html