Jump to content

Fymatics, the fake Cymatics


Satsuoni

Recommended Posts

Summary version.

 

A long time ago, soon after I have read WoK for the first time, I was intrigued by the description of cymatic patterns in it. Naturally, I sought to model the Dawncity shapes on PC, and failed. The resulting patterns (an example can be seen here) are certainly interesting, but in no way do they remind one of the goal. Setting the "plate" to be circular just made concentric circles in most cases.

Recently, however, my interest has suddenly resurfaced, and I tried it again. I started off with the techniques similar to the ones I used before, modeling the wave on square grid (pixels). As before, results were not what I wanted, and in general not very impressive, even trough I added damping, hoping for improvement:

Results (videos):

Oblong shape, no damping:

 

Circle, with damping, wave visible:

 

Circle with damping, another try:

 

( I am not sure how video embedding works here)

 

Anyway, disappointed, I moved on to raytracing approach (well, kind of raytracing). The results were strange, probably from lack of experience, though some shapes generated vaguely reminded of the targets.

Results (slideshow as video):

 

Finally, I reminded myself that I was only interested in static shapes. And those were nothing else but eigenvectors (or eigenfunctions) of differential equation describing vibration. I worked with that, and switched from C to python since I don't like Fortran. I know, not the most coherent of sentences. Some research and a small bit of programming later, oh frabjous day! The extracted eigenvectors showed promise. After a bit more modification, something approaching the cities' shape has emerged! And I have also learned that sand was unlikely to produce such patterns, especially from the pure enough tone. From several harmonics, with damping taken into account - sure. On water, as transition shapes - sure. But on a plate, from a single note - I call shenanigans <_<

Then again, I might have missed something.

Anyway, results:

Eigenvector shapes, extracted from circle (slideshow):

 

Akinah.. or as close as I got. Kind of looks like it in the middle:

 

Vedenar?

 

Thaylen city? (well not really. this one is result of lacking rotational invariance, actually. Pretty, though.)

 

I couldn't get Kholinar :(

 

Then I started to play with the model, trying in various ways to approximate various shapes, starting with simple tone applied at a given point. The approximations, naturally, looked nothing like the original shapes :)

 

Results:

 

Applying slowly changing frequency:

 

Same, but for different range:

 

Trying to approximate Sas glyph :)

http://www.youtube.com/watch?v=G3u9tziO3Ik

 

Same with Nahn glyph:

http://www.youtube.com/watch?v=orXQtbGhgrE

 

Since the end script is written in Python, after careful discussion with Nepene (all praise Nepene!) I have decided to make it a little easier to use and share with those who want it.

(Mind  you, "easier" for me apparently doesn't mean "easy" at all, but it should be manageable)

 

So, here is a long and confused description, for those who want play with it! (script and some sample files attached)

First, one would need to install Python with Scipy package, as described in http://www.scipy.org/install.html

Then add python directory to system path (google it if you don't know how :) )

Then, unpack the attached zip into a directory somewhere, preferably empty one.

Run by typing "python matrix.py" in command line, or by doubleclicking if that works (depends on the way python installed itself). That would make the examples :)

 

Now a little more about actual syntax. Originally, the script was made to use command line. Afterwards, I have added the ability to write several of those commands into a parameters.txt file. Command line still works, of course... if the file parameters.txt is not found.

 

1. So, the proper way to use it is to first run it without parameters, or with command "lap". That would generate several "lap_*.npy" files in the directory.

 

2. Then, run "python matrix.py decompose <imagefile> <laplacian> <number>", for example

"decompose input.png lap_sym.npy 200", where imagefile is a black and white  (RGB) image file, preferably png, that describes the plate shape (black for plate,  white for.. air?) The shape can be anything, but be aware that it eats a lot of memory in proportion to the image size, and may crash if it runs out. 256x256 should work, 512x512 worked on my PC (2GB ;)  ), etc...

Laplacian is one of the "lap_*.npy" files generated in step 1. I recommend lap_sym.npy or lap_DoG.npy, others are weirder... And number is simply the number of eigenvalues you want extracted. It also affect memory consumption and time, so please be careful... I use one between 100 and 200.

At the end of this stage, script should have created Data and Samples folder . Data is filled by, well, data files, necessary for other steps and Samples are image files of eigenvectors :)

 

3. There are other modes that could be run after the decompose is done. Here I will describe the one in the example setup, "dynamic"

Syntax:

dynamic <file> <timestep> <timerange> <amplitude [0..1]> <saveprefix>

or, well,

python matrix.py dynamic <file> <timestep> <timerange> <amplitude [0..1]> <saveprefix>

 

File is a text file (dyn.txt in example)  with lines describing waves applied to sand, in form

<eigenvector number> <amplitude> <frequency> <phase>

For example,

34 1 0.8 0

Means "apply wave described by eigenvector #34, illustrated in Samples/out00034.png, at amplitude 1 frequency (in radian) 0.8 and phase shift 0"

Ahem. I told you it is convoluted.

 

The parameters in the command line...

timestep: time increment for each succeeding image file.

Timerange -time at which to stop making images

amplitude - a float from 0 to 1, describes how loose the sand is. If in doubt, set to 1

Saveprefix; simply a prefix for saved images, may include directories...

 

This mode is the one used for, ahem , Dawncities <_<

 

There are several other modes:

 

seq <file> <savestep> <diffusionlevel> <saveprefix>

approx <image> <kind> <vectornumber> <saveimage> <savenumber>

project <pos_x> <pos_y> <freq> <nsave>

freqseq <pos_x> <pos_y> <freq_from> <freq_to> <freqstep> <relaxstep> <savestep> <saveprefix>

 

But this post has gone on long enough :) If someone wants to play with them, either figure them out, or, you know, ask me :ph34r:

Fymatics.zip

Link to comment
Share on other sites

Great work, Satsuoni. You've put a lot of effort into this, and I applaud the attempt to find cymatic patterns of Rosharan cities.
I particularly enjoyed your eigenvector shapes video, and the attempt at Thaylen City.
 

And I have also learned that sand was unlikely to produce such patterns, especially from the pure enough tone. From several harmonics, with damping taken into account - sure. On water, as transition shapes - sure. But on a plate, from a single note - I call shenanigans <_<

Metal plates such as Kabsal used have all sorts of harmonics in their resonance frequencies. Fine sand (also tiny seeds, salt) is used in exactly this way to produce visible patterns on metal plates, instrument sounding boxes, etc. I'll post some of my favorite links below, but you can also start with a video search for Chladni plates, or image search for cymatics.
 
Recommended links:

  • A video of almost exactly what Kabsal did. In particular, the shape formed at about 1:33 caught my attention as being similar to the glyph for Order 8. Cool!
  • Great video of Chladni plate driven with pure tones. Pattern at 1:13 resembles Thaylen City
  • Cymatics.org has some really beautiful images, including one that resembles Kholinar. (Top left and bottom center) 
  • This artwork site has images (originally from cymascope.com, but this site has a better layout) of patterns made from musical notes and the human voice. Scroll down to the phonology and musicology headings. (I've also embedded one of them below.)

Piano_notes_chart_URL-1024x403.jpg

Link to comment
Share on other sites

Great work, Satsuoni. You've put a lot of effort into this, and I applaud the attempt to find cymatic patterns of Rosharan cities.

I particularly enjoyed your eigenvector shapes video, and the attempt at Thaylen City.

 

Metal plates such as Kabsal used have all sorts of harmonics in their resonance frequencies. Fine sand (also tiny seeds, salt) is used in exactly this way to produce visible patterns on metal plates, instrument sounding boxes, etc. I'll post some of my favorite links below, but you can also start with a video search for Chladni plates, or image search for cymatics.

 

Recommended links:

  • A video of almost exactly what Kabsal did. In particular, the shape formed at about 1:33 caught my attention as being similar to the glyph for Order 8. Cool!
  • Great video of Chladni plate driven with pure tones. Pattern at 1:13 resembles Thaylen City
  • Cymatics.org has some really beautiful images, including one that resembles Kholinar. (Top left and bottom center) 
  • This artwork site has images (originally from cymascope.com, but this site has a better layout) of patterns made from musical notes and the human voice. Scroll down to the phonology and musicology headings. (I've also embedded one of them below.)

 

 

Believe it or not, I have researched this, including  the Cymascope, Chladni plates, etc. Which is why I am reasonably certain that some of the patterns cannot be easily created on metal plate by a pure tone. They are lines, you see. If the tone is resonant and pure, all the sand goes into antinodal lines very quickly (you can actually see it on the videos you provided). Further, the nodal lines on circle don't form triangles, unless they are moving... As far as I can tell.

 

The pictures you have provided resembling Kholinar, however,are water images. Water is much more complex than plate, and above all, the pattern on water is usually transition (moving) image. Now as I said, if you take into account damping that freezes sand before it finishes distribution, you may get something like a dynamic picture, but that requires precise timing... All in all, I just find it unlikely, especially on a single round plate (and it would have to be round...) But that is just IMO.

Link to comment
Share on other sites

Good points--I guess I didn't quite follow what you meant/which shapes you meant the first time around.

I definitely didn't mean to say you hadn't done your research--the links were more intended to share the neat images with everyone on the forums.

 

Hmm...I wonder whether a plate with varying thickness (I'm imagining something pounded on by a blacksmith, so it has imperfections) might create some of those more complex, odd shapes. Definitely not very reproducible, so Kabsal is unlikely to be as convinced of universal truths that way, but still...

Link to comment
Share on other sites

I think I'll made seq mode video with a square plate with a hole in the middle, to illustrate some other script capabilities. It would take some time (script isn't very fast).

As for varying thickness - it is relatively easy to model, actually. I believe the patterns would blur and distort around imperfections, like they do around the nail in the middle in the videos. I think the video I am making might help illustrate the point.

EDIT:

Here we go:

http://www.youtube.com/watch?v=I5vwRs7JQdc&feature=youtu.be

http://www.youtube.com/watch?v=zzDvkS3-uhE

Edited by Satsuoni
Link to comment
Share on other sites

  • Chaos locked this topic
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...