Try it for yourself by visiting this website and selecting ‘Angeliki Maragakis’ from the dropdown!

Designing wind chimes that produce accurate musical notes can be a complex process. My app proposal, Windsong, attempts to simplify this by providing an interface that allows the user to customise a wind-chime configuration based on both sight and sound. To achieve this, the user inputs desired notes using the on-screen keyboard, along with geometry parameters. These are sent to Grasshopper using Rhino.Compute to modify the geometry based on the chime lengths required, and returns it as metadata to be processed by a Javascript audio engine and exported as a .csv for easy construction.

Controls // UI

Chime controls collapsible expanded

Back-end

Internalised Grasshopper database: inner and outer diameters for each material and size selection

The grasshopper script includes an internalised database that changes the chime diameter based on the material and nominal size selected by the user.

Geometry // UI

Geometry controls collapsible expanded

Back-end

All inputs sent to Grasshopper

Note selection // UI

The user inputs the notes they would like to include in their wind chime set, with a minimum of 3 and a maximum of 8. Selected notes are ordered automatically by length, and the UI will automatically renumber chimes if one is deselected.

GIF: using the note selector and metadata output

Back-end

The notes selected on the keyboard and sent as indices to Grasshopper, where a second internalised database handles the lengths per space based on the nominal size, material, and note selected.

Internalised database of chime lengths for each material, diameter, and note
Grasshopper to app metadata structure

The Grasshopper script returns metadata in the following structure (shown right):

a. Note

b. Length

c. Hang point

In doing so, the system is able to adapt to changing numbers of chimes without mixing up the metadata subcategories.

Outputs // TONE.js integration

The app uses the TONE library to generate sound both on note selection and as a polytone on pressing the PLAY button. For this, a custom synthesiser was created to mimic the sound of windchimes.

TONE JS polysynth configuration

Outputs // .csv export

When the user is happy with their selected notes and have trialled their overall chime sound, they are able to export a data file showing how much length of material they will need for each selected note, as well as where to drill the hang points to achieve the specific note frequencies.

Exporting windchime metadata and omitting data based on chime number
Exported .csv