museumsvictoria / spatial_audio_server

An audio backend for the multi-layered soundscape of Beyond Perception: Seeing the Unseen, a permanent exhibition at Scienceworks in Melbourne, Australia.
81 stars 14 forks source link

Clarifying Interactive Input via OSC [Cosmic Waves, Turbulent Encounters] #50

Closed mitchmindtree closed 6 years ago

mitchmindtree commented 6 years ago

Hey @cbfry @BlueJayLouche , I'm currently working on translating OSC Input received from the interactive installations into triggers and processing for the associated sounds.

I have a strong idea of the expected interactions and have an implementation in progress but it would be great to clarify this with yourself and SNEPO to get the specifics nailed down. Maybe if the SNEPO folks involved have github accs I could invite them to this repository so we could discuss it here?

Cosmic Waves

My current understanding of Cosmic Waves is this:

With this understanding, I can imagine the OSC messages sent from the Cosmic Waves looking something like this:

Event Name - OSC Address OSC Arguments Description
Touch Start "/bp/cw/touch_start" [Screen ID, Touch ID] [Int, Int] A touch is first detected on the screen. Begins the playback of a black hole audio sample.
Touch "/bp/cw/touch" [Screen ID, Touch ID, X, Y, Z] [Int, Int, Float, Float, Float] Describes a touch in progress. X, Y, Z are coords of the touch. Z is mapped to the intensity of the audio sample. X and Y are mapped to the panning of the sound across the screen.
Touch End "/bp/cw/touch_end" [Screen ID, Touch ID] [Int, Int] A touch interaction has ended. Stops the playback of the sound.
Event "/bp/cw/event" [Screen ID, Event ID, ??] [Int, Int, ??] Some event has been triggered by two black holes colliding. The event ID is mapped to trigger a special sample.

The Screen ID represents which of the four screens the interaction is occurring on, and the Touch ID represents a unique identifier for a touch in progress on that screen.

It's assumed that the Z depth is at 0.0 when the screen is flat (not touched) and 1.0 at the "max" reasonable depth.

If it's non-trivial to produce the "Touch Start" and "Touch End" events, I'd also be happy with just the Touch events alone. I could trigger the sample playback when a new unique Screen ID Touch ID pair is received and finish playback for this touch once the Z depth returns to 0.0 (or within some low threshold of 0.0, or if no messages have been received for that touch within some amount of time).

I remember us talking briefly about the possibility of triggering special "Events" when black holes collide, etc. I'm unsure exactly how these will unfold yet or how they should respond to interactions, so I've left these as simple once-off triggers. If you or SNEPO could elaborate on this that would be great!

Turbulent Encounters

My current understanding of Turbulent Encounters:

Turbulent Encounters has a small number of rotary encoders for interaction. Each rotary encoder controls the angle of a rectangular obstacle that exists within the flow field visualisation. The position of the encoder does not directly relate to the angle of the rectangle, but rather accelerates or deccelerates the rate at which the rectangle is spinning.

Each spinning rectangle will have its own sound. The intensity of the sound produced for each spinning rectangle should relate to the rate at which that rectangle is spinning. As a result, we probably only need to send the angular velocity (rate of change of the angular position) for each rectangle over OSC.

I'd imagine we should only need one type of OSC message for this:

OSC Address OSC Arguments
"/bp/te/rect_rotation" [Rectangle ID, Angular Velocity] [Int, Float]

Where "Rectangle ID" is the unique ID for the rectangle and "Angular Velocity" is the angular velocity of the rectangle where 0.0 is stationary, 1.0 is the max positive velocity and -1.0 is the max negative velocity.

I'll open up a separate issue for receiving data from the couches for Energetic Vibrations.

mitchmindtree commented 6 years ago

I forgot to add - feel free to correct or clarify any of the above! Otherwise I'll go ahead and begin implementing the OSC input handling for the Cosmic Waves and Turbulent Encounters as described above :+1:

cbfry commented 6 years ago

Hey @mitchmindtree, there's a couple of updates to the interactives.

Cosmic Events:

Fluid Dynamics