So now that I had finished audio level attenuation over distance, it was then onto proximity… Or more specific, air absorption over distance.
After looking into the research for this part of the project I came to the conclusion that the maths for a realistic simulation is hard. Really hard. Way beyond my understanding and knowledge level.
I decided that I was just going to try to do it as realistically as possible, without going into all that complicated “lets just hurt Chris’ head for a few weeks” stuff.
It wasn’t fully working when I took this screenshot, but here’s a little glimpse of what to expect.
Where was I? Oh yes, realistic audio level over distance.
Building upon the applications, the Audio Level over Distance Theory model was implemented into the Max patch. This segment that was created for an earlier experiment has formed most of this Max patch. The experiment was successful and allowed for the Max/MSP patch to not only create a more realistic attenuation model, but to simplify the part of the patch that receives and translates a playable character’s position.
The theory put into practice in this experiment creates a realistic simulation of audio level over distance and will be put into the final Max/MSP created application. An option to switch between the basic version and the theory version of this audio effect will also be implemented, to allow the end-user to compare the differences.
So basically as I’m writing all this up and getting it together I most likely won’t be putting much stuff (if anything) on here for a bit.
I am slightly ahead of the posts put on here work wise, but not to the deadline. So I’m going to get all that sorted first and then I’ll stagger some more posts out when the project is complete.
After a bit more play around with nodes, I have gotten the players position and the cubes position from the basic audio Unity 3D app mapped nicely onto the node object. Very wizard indeed.
If I have enough time at the end of the project, I will jazz it up a bit and use it as the basic audio over distance model on the final program.
It may also come in handy sooner than that. Although not next on the list, as I’m finishing off level over distance I’m researching more and more into reverb. Unity 3D uses something called reverb zones which are essentially triggers for different reverb settings. Why make something complicated if I can mangle this object to my will and have that create “reverb zones”
Nodes are pretty wizard. I came across them in Max/MSP while working on a UI concept for the final program.
Basically, it’s a Max/MSP object that not only shows a mouse/cursor position on an XY pad… But circular objects can be placed on it too. The objects can be changed in size and can overlap each other. When the cursor is placed within one of these objects, the scale between 0. and 1. will increase/decrease in relation to the distance of the centre point of that circle.
It’s very similar to what I achieved with the basic level model. I may redo that model for the final program using this new method. It certainly looks better, it makes the Max patch more simple and it may save resources too.
You want to see the UI I’ve got in mind? Here is what I’m working on…
After weeks, I’ve finally cracked how to receive the location of a static object (currently the ever colourful cube) where an audio source will come from.
The problem was Max/MSP wasn’t updating the location of it when launching the patch, this was because Unity 3D wasn’t sending it any information (it was set to only do so if the object was sleeping, and it only sleeps if its been awake).
I tried waking it up manually, resulting in a horrible mess of jaggery audio (it’s the same script to find the position of the player).
I tried just continuously getting location data, pointless CPU usage and more player position errors.
I tried many other things, non of which worked.
“IT NEEDS TO MOVE. IF ONLY IT MOVED”
…Well move it? I tried, or at least I thought I did. I tried using gravity, to fast and unpredictable. There was no way I could have Unity 3D run the objects movement, because its unstable as I can’t control when people open up the Max/MSP created application. So I ruled out moving it as a possibility.
Then I looked at the basic Max/MSP patch I started the project with. I send it a continuous rotate message. Wait a minute, I sent it a rotate message.
I altered the patch to only rotate the object once, by 0.1. It worked, I could now get the object’s position, which for all intents and purposes of this project hasn’t moved (certainly not enough for any minor changes).