Can this be done?
Hi all new to the site and to max.
I am a student in Edinburgh and one of our projects is this.
You have been commissioned as a sound developer to design sound for a commercial product. The product itself might be virtual rather than real or even use sensors and interfaces that don’t yet exist. The prototype interface and sounds will be developed with MaxMSP. The prototype you create will be used to demonstrate the sonic possibilities of this product, not necessarily the product itself.
You could develop sound for a mobile phone, hand-held computer, digital camera or a car, sonification of stock market data, a sound therapy tool or an evolving audio branding kit…
Not to bore you anymore with the ins and outs. Only to say that I have decided to build a ringtone for a mobile phone that evolves. The person calling the mobile has his/her voice frequencies analysed (FFT or easier), then a sequencer builds a tune out of the frequencies in the voice. After this the tune is saved and used as the ringtone for the next person that calls you. Hence, everytime it rings, the ringtone is a tune made out of the previous callers voice.
Is it possible with limited (1 month) max/msp knowledge or is there any patches out there that can be "joined" together that will make this easier?
All replies gratefully and thankfully received (even to say i'm a madman!)
Ta, Col
Your idea should not be too hard to do. Basically you need a generative
component to create notes and a way to pitch shift a sound source
(the callers voice).
The part that is confusing is... "then a sequencer builds a tune out of the frequencies in the voice"
If your wanting to do an FFT on the voice and extract the frequency
range, you will not get anything all that interesting. The frequency
range of the human voice is pretty limited. Most conversations as well.
I think what you want to do is pitch shift that voice to a particular
note. The easiest thing to use for that is gizmo~.
If I were to suggest something that might sound interesting, I would say...
1. Do an FFT on the voice sample, identify locations of vowel sounds.
http://en.wikipedia.org/wiki/Formant
2. Use a markov chain to pick from a list of pitches
https://cycling74.com/forums/share-markov-utility
(use groove~ to do looping)
5. Convert each note to a freq, pitch shift with gizmo~
(see gizmo help file)
Good luck,
Anthony
totally possible with a combination of tutorial patchers in the docs, the CNMAT kit and the UBC kit.
Sounds like a very cool project. I can imagine this actually being a fun ringtone option... while you're talking to someone, you can grab little bits of their voice and use it as your "Ring ID" next time they call, playing back whatever melody you choose. Just a little variation on your idea.
The advice on the thread is great and it should give you a mountain of new ideas and insights. However you might try a "dry run" version which could be done relatively quickly...though it probably won't give the result you envisioned, it would still be interesting and it would give you a chance to work with some of the standard MSP objects that are so crucial.
1--Capture however much of the voice you want into a buffer~ using record~ (only need a couple of seconds).
2--Play back a small section of the buffer~ with groove~, using gizmo~ on the output to make a "pitch" of sorts. You'd just assume the original rate with no transposition = your "root note".
3--Each time the groove~ loop ends, modify the gizmo~ transposition to make a new note for whatever melody you want. If melody notes are longer, just leave the transposition the same for several repeats. Probably you'll get clicks or the loop won't be seamless, trapezoid~ can help with this. To determine the end of groove~, look in the Help file... it usually uses delta~ and edge~.
Look to [mtof] to see how to make notes and transpositions, there's a bit of math involved but everything's there. This is also great practice to extend what Max can do...math, baby, math.
You'll get all kinds of weirdness with this, probably, and if you're playing a percussive part of the voice (like heavy consonants) the "tune" probably won't sound very tune-like. But a section with a vowel might work well. You can use waveform~ to select the part to play back, and with "snap to zero crossings" on you might get smoother loop points.
Anyway, it's an option, and being new to Max this will give you more than enough to figure out and to mess with. If you're going to work with MSP you need to get very familiar with all these objects. Then you can dig into the FFT stuff which is a whole universe in itself...