Arabesques: A Science-Inspired Generative Art Project

“If you want to find the secrets of the universe, think in terms of energy, frequency and vibration.” Nikola Tesla.


Patterns emerge in sand on a metal plate vibrating at resonant frequencies. These exquisite patterns are a result of resonant modes created by standing acoustic waves on the metal plates. In other words, when the plate vibrates at just the right frequency, there are certain areas of the plate that actually “stand still”, collecting the tiny bits of sand originally sprinkled onto the plate.

In the late 18th century, Ernst Chladni, known as the father of acoustics, discovered this phenomenon, by stroking a metal plate with a violin bow. These plates are now known as Chladni plates. This intersection of physics and art is the inspiration for Arabesques.

Each plate in an Arabesque is a real metal plate, with real sand, photographed while in vibration. In some plates, the grains of sand are still visible. The captured image of the plate undergoes OpenCV transformation, using filters and color manipulation to produce a refined black square containing sand. An example of the original and transformed image are shown below.

Original photo

Transformed plate

Stitching Algorithms

While these plates are beautiful themselves, there is not much that is generative about them. In order to create the final product, the plates are stitched together using either a random grid algorithm or a quadtree algorithm and then recolored to the appropriate color scheme, dictated by the first two characters in the transaction hash passed into the art generation.

The random grid algorithm first selects m to dictate the mxm grid size, where 1 ≤ m ≤ 25. Then, as the grid is traversed, the number of grid spaces that a single Chladni plate covers is allocated via a pseudorandom generator, bounded by the mxm grid size or any existing plates already placed on the grid. Here are some examples of the random grid output:

The quadtree algorithm utilizes a quadtree to partition the grid. Imagine a large square containing n points (these do not move during the subdividing process). The large square subdivides into four equally-sized, smaller squares, which each now contain a portion of the original n points. This process continues until each square contains at most k points laying within the square. The parameters, n and k, are pseudorandomly assigned.

The distribution of the n points in the grid allows for interesting patterns to occur. The algorithm selects from 6 different types of distributions: uniform, Gaussian, inverse Gaussian, triangle, inverse triangle, and a custom-crafted distribution of superimposed distributions that I can’t really put into words. Here are some examples:

Custom distribution

Inverse triangle distribution

Uniform distribution

Gaussian distribution

Color Schemes

After quite a bit of soul-searching, I found some colorings that I thought would be interesting combinations. All color schemes are shown below:




Sunday Morning

Harley Q




Desert Oasis


Violet Trees


Yacht Week



Forest Lights






In Conclusion

Thanks for taking the time to read through this post. Arabesques is a reflection of myself, merging my passions in physics, programming, and art. Hope you enjoy this project as much as I do.