Question about a vline~ message
The parent isn't quite complete, but here is what's there so far. Only the first partial is hooked up, but from everything I've been tinkering it is not sounding out.
I'm using stripnote to remove the note-off events; the note value routes into the abstraction and is multiplied both translated into a frequency and multiplied with a modal value to give the partial needed; the velocity data is turned into a bang which will eventually bang on all the envelope values on the right.
What I do find funny is that that using env~ attached to a number object I see envelopes generating after each of the abstractions, even after att-
Damnit, now it's working. I did modify the original file I uploaded here(add_ab) in one way; I took the 'unpack f f f' out of the line and connected the mtof directly to the new partial inlet.
I started with a polysynth parent attempt, but scaled back to a mono until i had a working framework for one voice. Which I have now.
On a seperate note, is using expr the best way to generate log based envelope curves?
Pd/rjdj skillshare @ Eyebeam, NYC, Dec 5th
http://eyebeam.org/events/rjdj-skillshare
December 5, 2009
12:00 -- 1:30 PM : Introductory workshop on Pd with Hans-Christoph Steiner
2:00 -- 6:00 PM : SkillShare w/Steiner and members of RjDj programming team
Free, capacity for up to 30 participants
RSVP HERE: http://tinyurl.com/ykaq3l3
Hans-Christoph Steiner returns to Eyebeam with members of the RjDj programming team from Europe to help turn your iPhone or iPod-Touch into a programmable, generative, and interactive sound-processor! Create a variable echo, whose timing varies according to the phone's tilt-sensor or an audio synthesizer that responds to your gestures, accelerations and touches. Abuse the extensive sound capabilities of the Pure Data programming language to blend generative music, audio analysis, and synthy goodness. If you're familiar with the awesome RjDj, then you already know the possibilities of Pure Data on the iPhone or iPod Touch (2nd and 3rd generation Touch only).
Creating and uploading your own sound-processing and sound-generating patches can be as easy as copying a text file to your device! In this 4-hour hands-on SkillShare, interactive sound whiz and Pure Data developer Hans-Christoph Steiner and several of the original RjDj programers will lead you through all the steps necessary to turn your phone into a pocket synth.
How Eyebeam SkillShares work
Eyebeam's SkillShares are Peer-to-Peer working/learning sessions that provide an informal context to develop new skills alongside leading developers and artists. They are for all levels and start with an introduction and overview of the topic, after which participants with similar projects or skill levels break off into small groups to work on their project while getting feedback and additional instruction and ideas from their group. It's a great way to level-up your skills and meet like-minded people. This SkillShare is especially well-suited for electronic musicians and other people who have experience programming sound. Some knowledge of sound analysis and synthesis techniques will go a long way.
We'll also take a lunch break in the afternoon including a special informal meeting about how to jailbreak your iPhone!
Your Skill Level
All levels of skill are OK as long as you have done something with Pd or Max/MSP before. If you consider yourself a beginner It would help a lot to run through the Pd audio tutorials before attending.
NOTE: On the day of the SkillShare we will hold an introductory workshop from 12:00 until 1:30 PM, led by Steiner, for those who want to make sure they're up-to-speed before the actual SkillShare starts at 2:00. The introductory workshop is for people who have some done something in Pd or Max/MSP but are still relative beginners in the area of electronic sound programming.
What You Should Bring
You'll need to bring your iPhone or iPod Touch (2nd or 3rd generation Touch only), your own laptop, a headset with a built-in mic (especially if using an iPod Touch) and the data cable you use to connect your device to your laptop. Owing to a terrific hack, you won't even need an Apple Developer License for your device!
More Information
RjDj is an augmented reality app that uses the power of the new generation personal music players like iPhone and iPod Touch to create mind blowing hearing sensations. The RjDj app makes a number of downloadable scenes from different artists available as well as the opportunity to make your own and share them with other users. RjDj.me
Pd (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing. Pd is free software, and works on multiple platforms, and therefore is quite portable; versions exist for Win32, IRIX, GNU/Linux, BSD, and MacOS X running on anything from a PocketPC to an old Mac to a brand new PC. Recent developments include a system of abstractions for building performance environments, and a library of objects for physical modeling for sound synthesis.
kill your television
Transdetect~ and transcomp~: transient shaping and detection
transcomp~ uses transdetect~ to shape the initial attack and release of a signal.
Requires IEM's FIR~, fexpr~ and dbtorms~ which are provided in PD-Extended.
To work properly the transdetect folder should be added to PD's path.
Start by opening help-transcomp~.pd
01 Implementation:
transdetect~ works by using two pairs of envelope followers. The first pair
subtracts an envelope follower with a slow attack from an accurate follower,
the result of which is a signal containing the initial attack. For the initial
release, the second pair subtracts an accurate envelope follower from one with
a slow release.
An envelope follower measures the mean square power of a signal over time
(see 3.audio.examples/H06.envelope.follower.pd for details on implementing an
envelope follower). To do this we must use a low pass filter at a very low
frequency. In order to achieve an accurate follower a linear phase FIR filter
was used (using IEM's FIR~ external). Unfortunately this introduces a phase
delay.
In order to facilitate the use of different envelope follower implementations,
transdetect~ requires a filter type as a creation argument implemented in
followernameTransDetectEF~.pd. 4 linear phase fir implementations are provided:
181, 251, 451 and 501 taps filters. The 501 taps filter provides the most
accurate filter but with a phase delay of 5.668 ms at 44.1kHz (raise the
sampling rate to lower the phase delay). They were all generating using
http://www.dsptutor.freeuk.com/FIRFilterDesign/FIRFiltDes102.html with a
cutoff frequency between 5 and 10 Hz.
A compromise between accuracy and phase delay might be achieved by using
minimum phase FIR filters. A 5th implementation using PD's native lop~ object
is also provided under the designation iir (FIR~ not required).
Along with different possible envelope follower implementation transdetect~
also requires an attack and hold type implemented in
attacknameTransDetectAttackShape~.pd and holdnameTransDetectHoldShape~.pd
respectively. These implementations dictate the kind of attack and release
curves used on the envelope followers (linear, slow[er|est] and fast[er|est]).
All implementations provided use fexpr~. A more efficient external could be
made to take fexpr~ place.
02 Use
In help-transcomp~.pd patch enable start and pay attention to the snap in the
hit. Disable the green toggle button to disable the compression make the snap
go away. Check out the tables on the left to see the results of the transient
compression.
transcomp~ is useful when used with recorded drums to maximize or minimize
its transient (to make it punchier or to make snare drums less clappy).
transcomp~ uses transdetect~. By itself transdetect~ can be used to synthesis
hits from a recording. For example, take a bass drum recording and use the
signals generated by transdetect~ to shape the frequency and envelope of a
synthesized kick drum.
Would love to have some feedback and some help in turning the linear phase filters into minimum phase filters.
CeC 2009 goes to Kumaon
Dear Friends in the Pd Forum,
We are delighted to report that The 4th annual Carnival of e-Creativity (CeC
- is scheduled to be held February 27 to March 1, 2009 (a
Friday-Saturday-Sunday in springtime/late-winter, as usual) , in the sylvan
spaces of Sattal Estate, just above Bhimtal, near Nainital, in the Lower
Kumaon of the new Himalayan Indian state of Uttarakhand.
A basic webpage on this has now been posted up at
http://www.theaea.org/cec_cac/cec09/index.htm, with just a few images and
overviews of location, venue(s), and also some participant-accommodation,
for planning and general information. Links are provided to the iterations
of 2006-07-08, but the 2009 site itself will be fully updated only just
before, and then just after, the actual incident.
As you'd expect, this migration of The Carnival of e-Creativity has come
about as a result of given circumstances and several months of consultations
with advisors, trustees, past-participants, partners and others, all over
the world.
Sattal was eventually deemed to be the best option out of the 4 outstanding
alternatives that were before us from around India, including Delhi itself,
on account of its immediate promise and also its longer term potential.
As CeC looks to progress into the future, it cannot constructively do so on
an ad hoc year-to-year basis. And, the potential to actually connect with a
lively local community on an ongoing basis, as opposed to featuring once a
year in the unending lists of entertainments and diversions of a
market-driven metropolis, goes a long way towards achieving our broad
general intent that the incident should be *meaningful* to society at large,
rather than to just the participants and some small random coteries.
However, participants will find that the opportunity for networking and
working amongst themselves as well as with select local practitioners, which
emerged to be one of the most beautiful aspects of this incident in the
past, is something that will be stronger in the new situation.
It therefore gives us immense pleasure and satisfaction that the Sattal
Estate was in fact the very first venue we had thought of, and even explored
as a possibility, 3-4 years ago.
Nonetheless, we are very specially grateful to India International Centre
and our past participants in Delhi, for having unstintingly and
enthusiastically given us the three years of robust momentum and credibility
upon which we can now so confidently build this huge, and possibly-risky,
move.
Yes, there are "downsides" ~ for example, it will be cold, and living
conditions inside the cottages are very austere; some potential participants
and partners will prefer city options, for various reasons; others will just
not have the extra time for the extra travel; and so on.
On the upside ~ we can have bonfires, even crowd up in the better cottages
to get cozy; no one will feel alone amongst millions; there are all sorts of
good reasons and lovely nearby places that could make one want to actually
spend more time here; and so on.
What do you think?
We look forward to having your goodwill, association, support, participant
and content, in CeC 2009 and onwards.
Keep well ~ Shankar
Shankar Barua
Managing Trustee ~ The Academy of e-Arts
.... presently at:
The 2nd Last Resort, on The Chill Street
near Nal Damyanti Tal / Sattal
Bhimtal (Uttarakhand) - 236136
INDIA
tel: (91-5942) 247598, mobile: (91) 9868732876, or 9837667355
College Project, I was recommended to use Pd to Achieve this...
Hmm, the project sounds interesting, a melody for each personality.
You need to take your time over this one. If your tutor thinks this is something that can be done in a few days I'd say that's a terrible underestimate. Did you leave it to the deadline... tsk!
What you need is a melody generator with a number of parameters. You need less parameters than there are variables in your test results (to do it simply) and some way of reducing the test results to a smaller set of melodies.
First convert the test results to numeric values.
Then apply these to a mapping that converts the scores to parameters making music you think suits each personality.
Create a few formulas, one for each generator parameter that maps the test results onto a factor for each generation control.
For example;
Do you wear black and lthink the Cure are the best band eva (YN)? Y
We will
a) Rock you [0]
Overcome [0]
c) Stay in tonight, because I haven't got a stitch to wear [X]
The Police are
a) Doing their best to balance law and order with the liberal values of a post industial society [0]
Fascist tools of an opressive regime [0]
c) The best rock/pop trio of the 1980s [X]
maps onto
Introvert-extrovert : Shoegazing emo depressiveness 6
Motivation: Rocking Godhead attitude 1
Individuality- conformity : Sheep factor 5
Humour/lightness : Slack factor 6
which maps onto
Tempo 110
Scale - 70% minor 30% major
Change factor 8
Liveliness factor 4
Because the problem is complex and involves data collection, scaling, mapping and generation my advice would be to keep everything VERY simple. Melodies with a choice of four or five note parameters, in simple patterns, keep the number of questions to 8 or less.
Start by building a melody generator that has something like the following properties
- tempo
- scale division
- liveliness (change magnitude)
- Density (rests vs notes)
Then come back with that to show us and a list of your questions and explanation of how you interpret the scores.
How do you timestretch?
Even easier. Forgive me, I'm new to Pd so this will be in Reaktor speak.
You can do this with basic granular synthesis. Do to it Homebrew style you need three things. You need two ramp oscillators (phasors?) and a clock generator. The main ramp sets the play position in samples, but ONLY when the clock generator bangs. The other ramp oscillator (phasor?) determins the pitch, so this is basically what you have now, just a basic table read. When the clock gen bangs this pitch osc is reset.
The speed of the clock generator is in milliseconds, this is the grain time.
BOTH the oscilators are added together, this sum is your new play position in your table!
It works pretty well, I've implemented it in reaktor. Hope this helps. Any questions, email me.
Escher-esque chord progressions
I've been getting into writing patches that generate music all by themselves, using mathematical
rules that apply quite nicely to music theory. I've made a few rhythm patches that make nice cross
rhythms using metronome division and delays (with values derived from multiples of the master
metronome), and i'll post these too if anyone is interested.
In this thread I'm showing off my "Mauritz Escher like Chord progressions" patch.
Screenshot:
Mp3: http://responsible7.googlepages.com/zenpho_escher_pd.mp3
Patch: http://responsible7.googlepages.com/zenpho_escher.pd
First some basic music theory:
(skip this if you're comfortable with chords, 7ths, and inversions)
A major scale is constructed of 8 notes, with the "root" note doubled at the 8th note.
For the key of C major (all the "white" notes on a piano) the names and numbers of the notes in
the scale of C-major are:
Name, Number:
C, 1st (root)
D, 2nd
E, 3rd
F, 4th
G, 5th
A, 6th
B, 7th
C, 8th (remember the root is doubled at the octave)
A triad is constructed of the 1st, the 3rd, and the 5th notes in the scale.
A SEVENTH chord is constructed of a triad (notes 1,3 and 5) PLUS the 7th note in the
scale. So a C major 7th is note 1,3,5,7 or C,E,G,B.
Up until now we've been describing "standard" voicings of the chords, in other words, the notes
are played so that the root is the lowest pitched note, the 3rd is higher, the 5th is higher
still, and the 7th is the note just below the octave of the root.
At the risk of sounding redundant, "octave numbers" after the note name help clarify which octave
the note is to be played in. To play a C major 7th on the third octave, we would write:
C3,E3,G3,B3. To play it an octave higher we would write: C4,E4,G4,B4.
"Inversions" of chords re-order the pitches of the notes, but still play notes with the same
"name" as the 3rd, 5th, 7th etc. For example:
C3,E3,G3,B3 is a standard C major 7th...
...and G2,C3,E3,B3 is an inversion. All the notes are there (C,E,G,B) but they are in a different
order to the normal "Root, Third, Fifth, Seventh" arrangement. In this case, we say that "the
fifth is in the root".
Okay so now we know what a major 7th chord is. Lets deal with chord progressions.
Now imagine playing C3,E3,G3,B3 and removing the "root" (the C3) from the notes played,
we have a chord that reads "E3,G3,B3" - we were playing C major 7th and now we're playing E minor.
*THIS IS A VERY IMPORTANT STEP* Moving from C major 7 to E minor sounds "natrual" because the
notes that occour in C major 7 ALSO occour in the E minor.
Now lets make this E minor chord a 7th...
We've said before that a 7th chord can be constructed by playing the 1st, 3rd, and 5th notes, PLUS
the 7th note in the scale.
The scale of E minor (a flavour of minor) is:
Name, Number
E, 1st (root)
F#, 2nd
G, 3rd
E, 4th
B, 5th
C, 6th
D, 7th
E, 8th (octave)
The 7th note is "D" so we add the D note to our E minor triad to make E minor 7th.
E minor 7th is therefore: "E3,G3,B3,D4".
We can extend this E minor again, removing the root, working out the new scale for G major, adding
the 7th to make G major 7th, and again, and again, and again... but if we do - we keep moving
*UP IN PITCH* and spiral off the end of the keyboard.
HOW THE PATCH WORKS
Okay, so what my patch does is to take the idea of generating new 7th chords over and over,
but to play inversions of these chords so that the notes stay inside a single octave. If the
"root" note is in the 3rd octave, C3 for example. Then when I move to E minor, the D4 is
transposed to be a D3, to keep within this octave range.
Due to the fact that there are 12 semitones in an octave, and notes that fall outside the octave
range will wrap around to be an octave lower. The maths for generating the new chords basically
involves taking each note in the current major 7th chord and adding two semitones to each note in
turn.
Now our terminology could cause confusion here, because there are "notes in a scale" and "notes in a chord"... So I'm going to define some notation to show when i'm talking about the notes in a
chord.
For example:
A C major 7th has the notes C3,E3,G3,B3.
Note-1-in-the-chord is to be defined as chord_note_1.
Note-2-in-the-chord is defined as chord_note_2.
Note-3-in-the-chord is defined as chord_note_3.
Note-4-in-the-chord is defined as chord_note_4.
chord_note_1 has the pitch C3.
chord_note_2 has the pitch E3.
chord_note_3 has the pitch G3.
chord_note_4 has the pitch B3.
It is important to be clear about the idea of "pitch", "chord_notes" and "scale_notes" because
because chord_note_3 has the pitch "G3" and scale_note_3 of C major which is the pitch "E3".
Back to the procedure for generating new seventh chords.
We generate a major 7th to begin with.
C3,E3,G3,B3.
We add 2 semitones to chord_note_1 to get "D3", and we leave the other notes alone.
Our chord now reads: D3,E3,G3,B3.
Which is an "inversion" of E minor 7th.
This time we add 2 semitones to chord_note_2 to get "F#3", and we leave the other notes alone as
before.
Our chord now reads: D3,F#3,G3,B3
This is an inversion of G major 7th.
This time we add 2 semitones to chord_note_3 to get "A3", we leave the other notes.
Our chord now reads: D3,F#3,A3,B3
This is an inversion of B minor 7th.
This time we add 2 semitones to chord_note_4 to get C#4...
*BUT C#4 IS OUTSIDE THE OCTAVE 3! So we TRANSPOSE it down to C#3*
Our chord now reads: D#3,F#3,A3,C#3
This is an inversion of D major 7th.
After my patch modifies all 4 chord_notes, it moves back to chord_note_1, and adds another
2 semitones... over and over.
Eventually we get back to C major 7th again, but on the way we move through a variety of different
chords that evokes very interesting changes of moods.
Want to try playing with it?
Mp3: http://responsible7.googlepages.com/zenpho_escher_pd.mp3
Patch: http://responsible7.googlepages.com/zenpho_escher.pd
Gridflow on agnula demudi ?
arrrrrgggg:
This is the GridFlow 0.8.0 configurator within Ruby version 1.8.2
[fast] Compile for speed (and not debuggability): enabled
[gcc3] GNU C++ Compiler 3: missing (undefined method `<' for nil:NilClass)
[stl] C++ Standard Template Library: missing (gcc compilation error)
[gcc64] GNU C++ in 64-bit mode: missing (gcc compilation error)
[libruby] Ruby as a dynamic library: missing (gcc compilation error)
[librubystatic] Ruby as a static library: missing (gcc compilation error)
[pentium] Pentium-compatible CPU: missing (gcc compilation error)
[mmx] MMX-compatible CPU (using NASM): disabled (would need pentium)
[simd] SIMD (MMX/SSE/Altivec) (using GCC): disabled (would need pentium)
[profiler] profiler (speed measurements): disabled (would need pentium)
[usb] USB Library: missing (where is usb.h ?)
[ieee1394] IEEE1394 Libraries for Linux (raw1394/dc1394): disabled (by author)
[x11] X11 Display Protocol: missing (where is X11/Xlib.h ?)
[x11_shm] X11 acceleration through shared memory: disabled (would need x11)
[sdl] Simple Directmedia Layer (experimental support): missing (where is SDL/SDL.h ?)
[objcpp] GNU/Apple ObjectiveC++ Compiler: missing (where is objc/Object.h ?)
[quartz] Apple Quartz/Cocoa Display: disabled (would need objcpp)
[aalib] Ascii Art Library: missing (where is aalib.h ?)
[jpeg] JPEG Library: missing (where is jpeglib.h ?)
[png] PNG Library <libpng12/png.h>: missing (where is libpng12/png.h ?)
[png] PNG Library <png.h>: missing (where is png.h ?)
[videodev] Video4linux Digitizer Driver Interface: missing (gcc compilation error)
[mpeg3] HeroineWarrior LibMPEG3 <libmpeg3/libmpeg3.h>: missing (where is libmpeg3/libmpeg3.h ?)
[mpeg3] HeroineWarrior LibMPEG3 <libmpeg3.h>: missing (where is libmpeg3.h ?)
[quicktimeapple] Apple's QuickTime: missing (gcc compilation error)
[quicktimehw] HeroineWarrior QuickTime4Linux (or LibQuickTime) (try #1): missing (gcc compilation error)
[quicktimehw] HeroineWarrior QuickTime4Linux (or LibQuickTime) (try #2): missing (gcc compilation error)
[xine] Xine movie decoder: disabled (by author)
[puredata] Miller Puckette's Pure Data: disabled (would need libruby or librubystatic)
generating ./config.make
generating config.h
creating Makefile
humm.... it will probably compile but seem will could do not much without jpeg png video4linux X11 etc....
will wait a .deb package...