CMU School of Art, Spring 2018 • Prof. Golan Levin
avatar – mocap
Before Becoming an Opera Star
Before Becoming an Opera Star2
Mute
Current Time 0:00
/
Duration Time 0:00
Loaded: 0%
Progress: 0%
Stream TypeLIVE
Remaining Time -0:00
Playback Rate
1
Chapters
Chapters
descriptions off, selected
Descriptions
subtitles off, selected
Subtitles
captions settings, opens captions settings dialog
captions off, selected
Captions
Audio Track
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Caption Settings Dialog
Beginning of dialog window. Escape will cancel and close the window.
Above is my near perfect rendition of Habanera by Angela Gheorghiu the famed opera singer for Carmen. For reference:
After Becoming a Worldwide Opera Sensation
Increasing Volume with Mouth Openness
Mute
Current Time 0:00
/
Duration Time 0:00
Loaded: 0%
Progress: 0%
Stream TypeLIVE
Remaining Time -0:00
Playback Rate
1
Chapters
Chapters
descriptions off, selected
Descriptions
subtitles off, selected
Subtitles
captions settings, opens captions settings dialog
captions off, selected
Captions
Audio Track
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Caption Settings Dialog
Beginning of dialog window. Escape will cancel and close the window.
The more I open my mouth the louder my singing becomes.
Changing Rate with Face Size
Mute
Current Time 0:00
/
Duration Time 0:00
Loaded: 0%
Progress: 0%
Stream TypeLIVE
Remaining Time -0:00
Playback Rate
1
Chapters
Chapters
descriptions off, selected
Descriptions
subtitles off, selected
Subtitles
captions settings, opens captions settings dialog
captions off, selected
Captions
Audio Track
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Caption Settings Dialog
Beginning of dialog window. Escape will cancel and close the window.
I can sing faster or slower as I move away from the microphone.
Changing Pitch with Mouth Shape
Mute
Current Time 0:00
/
Duration Time 0:00
Loaded: 0%
Progress: 0%
Stream TypeLIVE
Remaining Time -0:00
Playback Rate
1
Chapters
Chapters
descriptions off, selected
Descriptions
subtitles off, selected
Subtitles
captions settings, opens captions settings dialog
captions off, selected
Captions
Audio Track
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Caption Settings Dialog
Beginning of dialog window. Escape will cancel and close the window.
I also am so in control of my voice that I can change my pitch just by making different shapes with my mouth.
xoxo <333333333
Some of my fans:
In regards to the program I made to genetically alter my voice through code I wish I could have altered the sound in more ways. Unfortunately the processing sound library doesn’t allow you to do too many crazy things to sound and I am unsure how to do it mathematically. That being said I change the pitch, rate, and volume as a real singer would in order to become a ProOperaSuperstar. Thank you. Goodbye.
// derived from the FaceOSCReceiver demo and minim's SineWaveSignal exampleimportoscP5.*;
OscP5 oscP5;importprocessing.sound.*;
PFont font;
SoundFile file;boolean play;float timeAtLastChange =0;void setup(){
size(512, 200);
frameRate(30);
oscP5 =new OscP5(this, 8338);
oscP5.plug(this, "faceScale", "/pose/scale");
oscP5.plug(this, "posePosition", "/pose/position");
oscP5.plug(this, "mouthSize", "/gesture/mouth/height");
timeAtLastChange = millis();
file =new SoundFile(this, "./operaSong.mp3");
print(file);
file.play();
play =true;}void draw(){
stroke(0);}publicvoid faceScale(float x){float freq = map(x, 4, 6, 0.5, 3);
file.rate(freq);}publicvoid posePosition(float x, float y){float pan = map(x, 0, 640, -1, +1);}publicvoid mouthSize(float m){if(millis()- timeAtLastChange <200){return;}
timeAtLastChange = millis();float v = map(m, 1, 11, 0, 1);
file.amp(v);}// all other OSC messages end up herevoid oscEvent(OscMessage m){if(m.isPlugged()==false){}}//mouth width: /gesture/mouth/width
// derived from the FaceOSCReceiver demo and minim's SineWaveSignal example
import oscP5.*;
OscP5 oscP5;
import processing.sound.*;
PFont font;
SoundFile file;
boolean play;
float timeAtLastChange = 0;
void setup() {
size(512, 200);
frameRate(30);
oscP5 = new OscP5(this, 8338);
oscP5.plug(this, "faceScale", "/pose/scale");
oscP5.plug(this, "posePosition", "/pose/position");
oscP5.plug(this, "mouthSize", "/gesture/mouth/height");
timeAtLastChange = millis();
file = new SoundFile(this, "./operaSong.mp3");
print(file);
file.play();
play = true;
}
void draw() {
stroke(0);
}
public void faceScale(float x) {
float freq = map(x, 4, 6, 0.5, 3);
file.rate(freq);
}
public void posePosition(float x, float y) {
float pan = map(x, 0, 640, -1, +1);
}
public void mouthSize(float m){
if(millis() - timeAtLastChange < 200){
return;
}
timeAtLastChange = millis();
float v = map(m, 1, 11, 0, 1);
file.amp(v);
}
// all other OSC messages end up here
void oscEvent(OscMessage m) {
if (m.isPlugged() == false) {
}
}
//mouth width: /gesture/mouth/width