rhoadley.net music research software blogs
aru seminars m&t critski focm1a cmc circuit bending mic2b sensor technology comp 3 sonic art major project
youtube vimeo facebook
Resources: Bioacoustics Jitter MaxMSP OSC Physical PD CBHH sTech SuperCollider C/Xcode
Max/MSP Resources: Home Blog-wp Forum Examples Projects Tasks Tutorials
Supercollider Resources: Home Blog Forum Examples Projects Tasks Tutorials
Task 3 | Name: Sonification | Set: w8i | Due: with final submission | Weighting: 25/33/50% | Courses: acmc |
Prev Task: Algorithmic Composition | Next Task: | ||||
Task Summary | All acmc tasks | VLE |
Some techniques involving Sonification.
From Wikipedia - there is no OED definition of the term!:
"Sonification is the use of non-speech audio to convey information or perceptualize data. Due to the specifics of auditory perception, such as temporal and pressure resolution, it forms an interesting alternative to visualization techniques, gaining importance in various disciplines. It has been well established for a long time already as Auditory Display in situations that require a constant awareness of some information (e.g. vital body functions during an operation). Sonification as a method for exploration of data and scientific modeling is a current and ongoing research desideratum.
"One of the first successful applications of sonification is the well-known Geiger counter, a device measuring ionizing radiation. The number and frequency of audible clicks are directly dependent on the radiation level in the immediate vicinity of the device."
You may have had some experience of using sonification via Jitter - this is sonification of image data.
- Search for 'Sonification MaxMSP Supercollider' in:
Google, Scholar, Books, Image, Video,
University Library
Here's another specific example: a little piece of code that identifies a particular number (or character). You might try and work out how to identify each letter in a document (see SC help file for Document - the exmample below is from this).
Here the sonification is of characters (or in this case, the interpretation of those characters - but then sonification is all about interpretation.
(
// NB This example may not work if you simply copy and paste the text. The example is from the help file for Document and you may wish to use the version given there.
//add a mouse action to this document:
//example: easy button:
//when you click in front of a 17 a SinOsc will start up;
Server.local.boot;
Document.current.mouseDownAction_({arg doc;
var char;
char = doc.rangeText(doc.selectionStart, 2);
char.postln;
if(char == "17",{
{EnvGen.kr(Env.perc, doneAction:2) * SinOsc.ar([600,720,300].choose, 0, 0.5)}.play;
});
if(char == "23",{
{EnvGen.kr(Env.perc, doneAction:2) * PinkNoise.ar(0.2)}.play;
});
})
)
test here and click in front of the number:
17
23
The below takes q and w key downs as inputs. You might want to investigate how to take a whole set (say, a short paragraph) and read each one....
(
Document.current.keyDownAction_({arg doc, key, modifiers, num;
var mykey;
// [doc, key, modifiers].postln;
mykey = num;
if(mykey == 113,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * SinOsc.ar([600,720,300].choose, 0, 0.5)}.play;
"bong".postln;
});
if(mykey == 119,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * PinkNoise.ar([0.2,0.4,0.6].choose)}.play;
"chhhhhh".postln;
});
})
)
// Now use TGrains:
// Here, 'w' just turns the sound on and off...
s.sendMsg(\b_allocRead, 10, "sounds/a11wlk01.wav");
(
Document.current.keyDownAction_({arg doc, key, modifiers, num;
var mykey;
// [doc, key, modifiers].postln;
mykey = num;
num.postln;
if(mykey == 113,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * SinOsc.ar([600,720,300].choose, 0, 0.5)}.play;
"bong".postln;
});
if(mykey == 119,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * TGrains.ar(2, Impulse.ar(num), 10, Dseq([10, 1, 1, 0.5, 0.5, 0.2, 0.1], inf), MouseX.kr(0,BufDur.kr(10)), 0.04, Dseq([-1, 1], inf), 0.1, 2);}.play;
});
})
)
// or this...
// here the keys actually set the impulse frequency.
(
Document.current.keyDownAction_({arg doc, key, modifiers, num;
var mykey;
// [doc, key, modifiers].postln;
mykey = num;
num.postln;
if(mykey == 113,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * SinOsc.ar([600,720,300].choose, 0, 0.5)}.play;
"bong".postln;
});
if(mykey != 0,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * TGrains.ar(2, Impulse.ar(num), 10, Dseq([10, 1, 1, 0.5, 0.5, 0.2, 0.1], inf), MouseX.kr(0,BufDur.kr(10)), 0.04, Dseq([-1, 1], inf), 0.1, 2);}.play;
});
})
)
// This use key values to control the impulses for TGrains...
(
Document.current.keyDownAction_({arg doc, key, modifiers, num;
var mykey;
// [doc, key, modifiers].postln;
mykey = num;
num.postln;
if(mykey == 113,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * SinOsc.ar([600,720,300].choose, 0, 0.5)}.play;
"bong".postln;
});
if(mykey != 0,{
{EnvGen.kr(Env.perc([0.05,0.001,1].choose, [0.1,0.2,1].choose, 1, -4), doneAction:2) * TGrains.ar(2, Impulse.ar(num / 5), 10, Dseq([10, 1, 1, 0.5, 0.5, 0.2, 0.1], inf), num, 0.04, Dseq([-1, 1], inf), 0.1, 2);}.play;
});
})
)
The Task
Finally
|
You might also be interested in:
The projects and tasks are designed to help you through the various courses and materials that you'll have to deal with, and also to provide an active and practical element to what could otherwise become a rather dry and technical exercise. Tasks are small exercises - you may be asked to complete one or two per week. Projects are larger and carry a higher percentage of the mark. We will undertake two, three, four or more projects and tasks. The final project is usually an individual choice project, and will be worth significantly more than the others in terms of percentages in your portfolio. We will usually try to set aside a time to perform the projects in a public setting.