Difference between revisions of "Sight to Sound"

From vjmedia
Line 14: Line 14:
 
| [[File:Main.png|300px|thumb|This is the main patcher. It looks complicated, but there are only two primary paths running.]]
 
| [[File:Main.png|300px|thumb|This is the main patcher. It looks complicated, but there are only two primary paths running.]]
 
|}
 
|}
{|style="margin: 0 auto;"
+
{|style="margin: 0 auto; hspace: 100;"
 
| [[File:Mode.png|300px|thumb|This path controls the current mode. The left branch runs the demo mode, and the right branch runs the camera mode. ''p inv_toggle'' acts as a router between 0 and 1, but with toggles.]]
 
| [[File:Mode.png|300px|thumb|This path controls the current mode. The left branch runs the demo mode, and the right branch runs the camera mode. ''p inv_toggle'' acts as a router between 0 and 1, but with toggles.]]
 +
| [[File:img_spacer.png|300px|frameless|]]
 
| [[File:Hilbert.png|300px|thumb|This controls the Hilbert Curves and the sliders for each dimension level.]]
 
| [[File:Hilbert.png|300px|thumb|This controls the Hilbert Curves and the sliders for each dimension level.]]
 
|}
 
|}

Revision as of 16:35, 9 October 2019

This is a sight-to-sound application; something that takes a camera input and outputs a spectrum of audio frequencies. The creative task is to choose a mapping from 2D pixel-space to 1D frequency-space in a way that could be meaningful to the listener. Of course, it would take someone a long time to relearn their sight through sound, but the purpose of this project is just to implement the software.


Used here, the mapping from pixels to frequencies is the Hilbert Curve. This particular mapping is desirable for two reasons: first, when the camera dimensions increase, points on the curve approach more precise locations, tending toward a specific point. So increasing the dimensions makes better approximations of the camera data, which becomes "higher resolution sound" in terms of audio-sight. Second, the Hilbert Curve maintains that nearby pixels in pixel-space are assigned frequencies near each other in frequency-space. By leveraging these two intuitions of sight, the Hilbert curve is an excellent choice for the mapping for this hypothetical software.


The video below demonstrates the concept in Max. For a better understanding of this concept, check out this video by YouTube animator 3Blue1Brown: link


Here is a quick walkthrough of the code:

This is the main patcher. It looks complicated, but there are only two primary paths running.
This path controls the current mode. The left branch runs the demo mode, and the right branch runs the camera mode. p inv_toggle acts as a router between 0 and 1, but with toggles.
Img spacer.png
This controls the Hilbert Curves and the sliders for each dimension level.