Closed mitchmindtree closed 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:
Hey @mitchmindtree, there's a couple of updates to the interactives.
Cosmic Events:
Fluid Dynamics
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:
"/bp/cw/touch_start"
[Int, Int]
"/bp/cw/touch"
[Int, Int, Float, Float, Float]
Z
is mapped to the intensity of the audio sample.X
andY
are mapped to the panning of the sound across the screen."/bp/cw/touch_end"
[Int, Int]
"/bp/cw/event"
[Int, Int, ??]
The
Screen ID
represents which of the four screens the interaction is occurring on, and theTouch ID
represents a unique identifier for a touch in progress on that screen.It's assumed that the
Z
depth is at0.0
when the screen is flat (not touched) and1.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 uniqueScreen ID
Touch ID
pair is received and finish playback for this touch once theZ
depth returns to0.0
(or within some low threshold of0.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:
"/bp/te/rect_rotation"
[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.