bmcfee / gaiatone

Sonifying space
MIT License
1 stars 0 forks source link

The plan #1

Closed bmcfee closed 6 years ago

bmcfee commented 6 years ago

Phase 1

Some thoughts after whiteboarding with @davidwhogg and @dstndstn.

How to sonify a single star in gaia dr2?

Phase 2

Sonifying a flyby.

The general idea here is that we have a pre-defined trajectory parameterized by some curve s(t). A collection of stars (say, in the hundreds) in the proximity of the curve are pre-loaded, spun up as oscillator sources, and their contributions are mixed with amplitude that scales according to distance from s(t) as time moves forward.

We can then have a background control loop that updates t in small increments, and whenever t changes, so too do the mixing coefficients. A user control can set the increment value (speed) of the ship as it travels along the curve.

On top of that, we can have a play-head slider, and play/pause controls, so the user can move to an exact point along the curve and just listen to the active sources in that neighborhood.

Phase 3

Visuals! It'd be great to see what we're listening to. This should be relatively easy to do, especially for someone familiar with js canvas.

Phase 4

Doppler effect. Tone.js does have a pitch shifter, which we could apply as the ship moves past a star. This conflates ship velocity with star temperature though (if that's the source of f0), so that's maybe not so great. But it would be sweet.

bmcfee commented 6 years ago

It looks like Phase 2 might come for very cheap if we use the 3d Panner: https://tonejs.github.io/examples/#spatialPanner

dstndstn commented 6 years ago

@davidwhogg -- are "rvtemplate{teff,logg,fe_h}" the right quantities to use?

@bmcfee if so -- here are plots of the joint distributions of the parameters -- they're discrete values on a grid, and very non-uniformly populated!

feh_logg feh_teff

dstndstn commented 6 years ago

And here's a JSON string of (Teff, log(g), Fe/H) for the first 50.

[[6000.0, 4.5, 0.0], [4000.0, 3.0, 0.0], [5750.0, 4.0, -0.25], [4000.0, 3.0, 0.0], [6250.0, 4.5, 0.0], [4000.0, 3.0, 0.0], [4750.0, 4.5, 0.0], [4000.0, 3.0, 0.0], [5750.0, 4.0, 0.0], [6500.0, 4.0, 0.0], [6250.0, 4.0, -0.25], [4000.0, 3.0, -1.5], [6000.0, 3.5, 0.0], [4000.0, 4.5, -0.25], [5500.0, 4.5, 0.0], [6000.0, 4.5, 0.0], [4500.0, 4.5, 0.0], [4000.0, 3.0, 0.0], [4000.0, 3.0, 0.0], [4000.0, 3.0, -1.5], [5750.0, 4.5, 0.0], [5500.0, 4.5, 0.0], [5750.0, 4.5, 0.25], [6000.0, 4.5, -0.25], [6250.0, 4.5, -0.25], [4750.0, 4.5, 0.25], [4000.0, 3.0, 0.0], [5000.0, 3.0, 0.0], [4000.0, 3.0, 0.0], [4000.0, 3.0, 0.0], [6000.0, 4.0, 0.25], [5500.0, 4.0, 0.0], [4000.0, 3.0, 0.0], [5500.0, 4.5, 0.0], [6500.0, 4.5, -0.25], [5000.0, 4.5, -0.25], [5000.0, 4.5, -0.25], [4000.0, 3.0, -1.5], [5500.0, 4.5, 0.0], [4000.0, 3.0, 0.0], [4500.0, 3.0, 0.0], [6000.0, 4.5, 0.0], [5500.0, 4.5, 0.0], [4000.0, 3.0, 0.0], [5500.0, 3.5, 0.0], [4000.0, 3.0, 0.0], [4000.0, 3.0, 0.0], [5500.0, 4.5, 0.0], [5250.0, 4.5, -0.25], [5750.0, 4.5, 0.0]]

bmcfee commented 6 years ago

Thanks @dstndstn!

@bmcfee if so -- here are plots of the joint distributions of the parameters -- they're discrete values on a grid, and very non-uniformly populated!

Are these numbers always quantized like that?

bmcfee commented 6 years ago

Other notes:

bmcfee commented 6 years ago

Alright, I've got a cacophanous mess running now at https://bmcfee.github.io/gaiatone/ (autoplays, be warned).

No localization yet, and it's just spinning up all the synths at once with a drone at the temperature-based frequency.

Metallicity to FM synth sounds pretty good.

log(g) to ADSR is less interesting right now. Since they're just drones, the attack only happens once, so you don't get much chance to observe the effect. This could change if we wire these up with a step sequencer (where the rhythm is based on the id hash), or we could also go back to the idea of using log(g) to flatten the spectrum (somehow).

bmcfee commented 6 years ago

Spectral flattening seems like a no-go in tone-land. It might be best to just map log(g) onto a low-pass filter.

bmcfee commented 6 years ago

logg hooked up to an oscillating low-pass filter sounds pretty good. Now we just need spatial data (and continuous T and logg values).