Composing Indian Raga using Pd
Composing Indian Raga using Pd:
A raga is a melodic recipe for a mood. In Hindustani (North Indian) classical music, each raga has certain moods associated with it, and usually has a specific time of day and/or season in which it is meant to be played. Raga could be described as a "super scale" using a set of notes in ascending (arohi) and descending (avarohi) order, sometimes including prescribed alternate or zig zag routes (vakra chal), a hierarchy of note importance including king notes (vadi) and prime minister notes (samvadi) a fourth or fifth apart, and a key phrase that shows the heart of the movement of the raga (pakar).
This ancient system is both an art and a science of how musical notes create certain moods. Western music also recognizes that note order and hierarchy create a mood, with some theory texts noting that songs in major keys tend to communicate happiness while songs in minor keys show a feeling of sadness. But the rags show precisely how to create a specific mood. The recipe for each raga holds the key to an unlimited number of potential melodies, each perpetuating the mood or rasa contained in the raga, but each a unique work of art.
Study of this system can be of great benefit to any composer or improvising musician.
Ravikiran has composed and presented several concerts with top caliber artistes from many parts of the world featuring melharmony. He has arranged several melharmonic pieces for performances by full sized, medium sized or chamber orchestras. Some of these are in collaboration with composers such as Prof Robert Morris and Charles Demuynck, Toronto, Canada.
Ravikiran's melharmonic compositions endeavours to enrich both melodic and harmonic systems. Flavoured with exciting and often highly original rhythmic patterns, his compositions have started blazing a new trail in world music. One of his creations, Ujjwal, a full-fledged, first of its kind 45-minute long Melharmonic Concerto was presented in the Swar Utsav Festival at India Gate, New Delhi to an audience close to 20,000 people.
Melharmonic concerts in cities such as Boston, London, New Delhi, Toronto, Mumbai, San Jose, Austin (TX), Chennai, Bangalore, Tulsa (OK) at times in collaboration with top calibre artistes and groups from diverse parts of the world have also won plaudits.
Strange midi issue (delayed midi in data ???)
explanation of my problem :
config : ableton + touchOSC + loopMidi (also tryed midiyoke) (+ PD of course)
I use midi clips, sending CC data (1 cc per clip, only 1 channel used for midi output, to avoid wrong data) so I can use the CC value to make play position cursors on touchOSC.
in PD I set something like that :
[ctlin cc# ch#]
| [Number) ***for monitor purpose, easier to read than [print]
[send /fader $1(
My play position faders are sometimes working perfectly and sometimes they are glitchy, jittery.
at first i thought it was caused by the big number of OSC messages sent by puredata (I planned to do a trick that would filter values after [ctlin] so that it doesn't route redundant values and then only sends different OSC messages. but i got lazy and investigated elsewhere first)
I set a number object after [ctlin] and found that the values are delayed. sometimes cleanly delayed : everything coming late, and sometimes warped : everything ok, but some intermitent lower values. and sometimes for no reasons either it works perfectly. the delays are several seconds long.
in ableton i can see the cursor moving correctly all along the midi clip. if i turn off midi out from ableton during a delay, I still have midi activity for a few seconds in PD
other data are sent & received on time (OSC, midi out)
I only use 1 midi in and out in PD and ableton, via 2 loopMidi virtual cables. audio is off, no delay (1ms)
what could cause that ? it's either between ableton and PD or inside PD
thanks in advance
TouchOSC \> PureData \> Cubase SX3, and vice versa (iPad)
So, tonight have sussed 2 way comms from TouchOSC on my iPad to CubaseSX3, and thought I'd share this for those who were struggling with getting their DAW to talk back to the TouchOSC App. These patches translate OSC to MIDI, and MIDI back to OSC.
Basically, when talking back to OSC your patch needs to use:
[ctrlin midictrllr# midichan] > [/127] > [send /osc/controller $1] > [sendOSC] > [connect the.ipa.ddr.ess port]
So, in PD:
[ctrlin 30 1] listens to MIDI Controller 30 on MIDI Channel 1, and gets a value between 0 & 127. This value is divided by 127, as TouchOSC expects a value between 0 & 1. We then specify the OSC controller to send it to and the result of the maths ($1), and send the complete OSC packet to the specified IPAddress and Port.
This can be seen in LogicPad.vst-2-osc.pd
All files can be found in http://www.minimotoscene.co.uk/touchosc/TouchOSC.zip (24Mb)
This archive contains:
MidiYoke (configure via Windows > Start > Control Panel)
touchosc-default-layouts (just incase you don't have LogicPad)
Cubase SX3 GenericRemote XML file (to import).
Cubase SX3 project file.
2x pd files... osc-2-vst, and vst-2-osc. Open both together.
In PD > Midi settings, set it's Midi Input and Midi Output to different channels (eg: Output to 3, Input to 2). In Cubase > Device Settings > Generic Remote, set Input to 3, and output to 2.
Only PAGE ONE of the LogicPad TouchOSC layout has been done in the vst-2-osc file.
Am working on the rest and will update once complete.
As the layout was designed for Logic, some functions don't work as expected, but most do, or have been remapped to do something else. Will have a look at those once I've gotten the rest of the PD patch completed.
Patches possibly not done in most efficient method... sorry. This is a case of function over form, but if anyone wants to tweak and share a more efficient way of doing it then that would be appreciated!
Hope this helps some of you...
Compiled external saying "couldn't create" when being added to PD
I'm having trouble getting my external to work, It compiles with 5 warnings
sineq.c:48: warning: unused variable ‘x’
sineq.c:49: warning: unused variable ‘in1’
sineq.c:50: warning: unused variable ‘in2’
sineq.c:51: warning: unused variable ‘in3’
sineq.c:52: warning: unused variable ‘in4’
It does a "make" successfully but I get this warning message
/usr/bin/ld: warning: cannot find entry symbol xport_dynamic; defaulting to 00000000000007f0
but when I try and add it in PD it says "couldn't create". I've looked at the pan~ tutorial and the d_osc.c file as recommended, which did help. I tried to take pieces from the two which I thought were applicable to my situation but I'm still having some issues.
Here's a link to the workflow (dropbox)
Here's a link to the C code online (pastebin)
My external is a reproduction of the sinewave equation with 4 inputs and one output my logic is to have 4 inlets one for the frequency,amplitude,phase and vertical offset and an output for the created signal. Granted this isn't the final equation but this will help me understand how to create the full equation once done. If you want to see the full equation I'll be using here's a link to it below. Basically it's a 1 second periodic signal with the sample rate at 44100 which the equation gives me control over the frequency,amplitude,phase and vertical offset.
Another question I have is what do I use for the t (time) for my final equation is that the t_sample object in PD? or do I need to create a for loop counting from 1-44100 for a 1 second 44100 sampled equation?
PS: I'm compiling on ubuntu 10.04 using gcc
I conceptualized this the other day. The main reason I wanted to make this is because I'm a little tired of complicated ableton live. I wanted to just be able to right click parameters and tell them to follow midi tracks.
The big feature in this abstract is a "Midi CC Module Window" That contains an unlimited (or potentially very large)number of Midi CC Envelope Modules. In each Midi CC Envelope Module are Midi CC Envelope Clips. These clips hold a waveform that is plotted on a tempo divided graph. The waveform is played in a loop and synced to the tempo according to how long the loop is. Only one clip can be playing per module. If a parameter is right clicked, you can choose "Follow Midi CC Envelope Module 1" and the parameter will then be following the envelope that is looping in "Midi CC Envelope Module 1".
Midi note clips function in the same way. Every instrument will be able to select one Midi Notes Module. If you right clicked "Instrument Module 2" in the "Instrument Module Window" and selected "Midi input from Midi Notes Module 1", then the notes coming out of "Midi Notes Module 1" would be playing through the single virtual instrument you placed in "Instrument Module 2".
If you want the sound to come out of your speakers, then navigate to the "Bus" window. Select "Instrument Module 2" with a drop-down check off menu by right-clicking "Inputs". While still in the "Bus" window look at the "Output" window and check the box that says "Audio Output". Now the sound is coming through your speakers. Check off more Instrument Modules or Audio Track Modules to get more sound coming through the same bus.
Turn the "Aux" on to put all audio through effects.
Work in "Bounce" by selecting inputs like "Input Module 3" by right clicking and checking off Input Modules. Then press record and stop. Copy and paste your clip to an Audio Track Module, the "Sampler" or a Side Chain Audio Track Module.
Work in "Master Bounce" to produce audio clips by recording whatever is coming through the system for everyone to hear.
Chop and screw your audio in the sampler with highlight and right click processing effects. Glue your sample together and put it in an Audio Track Module or a Side Chain Audio Track Module.
Use the "Threshold Setter" to perform long linear modulation. Right click any parameter and select "Adjust to Threshold". The parameter will then adjust its minimum and maximum values over the length of time described in the "Threshold Setter".
The "Execution Engine" is used to make sure all changes happen in sync with the music.
IE>If you selected a subdivision of 2, and a length of 2, then it would take four quarter beats(starting from the next quarter beat) for the change to take place. So if you're somewhere in the a (1e+a) then you will have to wait for 2, 3, 4, 5, to pass and your change would happen on 6.
IE>If you selected a subdivision of 1 and a length of 3, you would have to wait 12 beats starting on the next quater beat.
IE>If you selected a subdivision of 8 and a length of 3, you would have to wait one and a half quarter beats starting on the next 8th note.
Can PdVst send OUT midi data?
I installed PD because I wanted to figure out how to convert CC into Notes. It was amazingly simple after reading a few help files.
So... I then discovered PdVst and set it up. It works fine with the 2 demos that come with it and after making a VST out of my little CC to Note patch I found that it receives MIDI just fine but it doesn't seem to send MIDI data OUT.
If I put my plugin in one Ableton Live track and send CCs to it I can see the number boxes connected to ctlin going up and down as I turn a knob, then if I put an instrument in another track and tell it to receive MIDI from the first track I get nothing.
This patch works fine if I run it in Pure Data and send it's MIDI output to Ableton Live using Midi-Yoke but it doesn't seem to output MIDI if I use it in PdVst.
Is PdVst capable of sending out MIDI?
PD, TouchOSC, Traktor, lots of problems =\[
I don't have a clear enough picture of how your setup is configured to determine where the problem might be, so I will ask a bunch of questions...
1) Midi mapping problem
Touch OSC on the iPad is configured and communicating with PD on windows, yes?
Are you using mrpeach OSC objects in PD?
Did you also install Midi Yoke as well as Midi OX?
Is there another midi controller that could be overriding the midi sent from PD to Tracktor?
Are you using Midi OX to watch the midi traffic to Tracktor in realtime?
I don't use Touch OSC (using MRMR) but you mentioned that the PD patch is being generated? Can you post the patch that it's generating?
2) Midi Feedback
It sounds like you want the communication to be bidirectional, this is not as simple as midi feedback. Remember Touch OSC communicates using OSC and Tracktor accepts and sends Midi. So what you have to do is have Tracktor output the midi back to PD and have PD send the OSC to Touch OSC to update the sliders.
I would seriously consider building your PD patch by hand and not using the generator. You'll learn more that way and will be able to customize it better to your needs.
im having some problems with audio in Pd. Im running extended 0.42.5 in Linux and midi is not working. The midi out test in the "midi and audio test" does not make any sound. This errors ocurrs in the inicialization:
audio I/O error history:
seconds ago error type
2.90 A/D/A sync
2.90 A/D/A sync
2.96 A/D/A sync
2.96 A/D/A sync
2.96 A/D/A sync
2.96 A/D/A sync
2.96 DAC blocked
2.96 A/D/A sync
does someone knows what is going wrong?
thanks in advance,
Well, the result of that would be equatable to
The catch with the sync is that there's basically always a more efficient alternative.
If you want a construct that's equatable to
bang X frequency X times a second
you could use phase-sync.mmb.pd and add two frequency controls that calculate the ratio between the two. Then feed the phasor~ with the first frequency and send the ratio to the *~
frequency 1 = 440
frequency 2 = 880
440/880 = 0.5
send frequency 2 to [phasor~] and 0.5 to [*~]
you don't lose anything by driving this construct with control messages or with audio rate control. The considerations are only superficially different than using bang.
It's been a while since I've looked at phase-sync.mmb.pd, so it might do this already.
If you're interested in using sync as an oscillator feature,
if you can understand this, I personally can't digest it:
otherwise, casio-style is handy:
and if you're okay with the licencing implications, there are objects in extended that offer competent band limited sync. I forget the name, but the group that I'm thinking of has sync saw and a band limited comparator for PWM and square sync.
Click Tracker software
I would like to present you the Click Tracker software.
The Click Tracker is a program designed for composers, conductors and
instrumentalists that work with modern music. The main goal of the
software is to prepare a click track of any score, no matter of how
complex it is.
This software can be used either by conductors in concert, by musicians
for practise purposes, by composers while composing - or just to produce
and record a click track to be played back at a later point.
The CLick Tracker can be downloaded freely in
http://code.google.com/p/clicktracker/ (Paypal donations are
possible and desired). It runs on Pure Data Extended (also a free program) in any operative system, and installation instructions for both programs are in the same page.
I hope that you find this software useful. I would like to hear back of
any suggestions, critiques or simple feedback. You can keep up to date on
Click Track news on the facebook page