SJT-Web-2 is a four-channel audiovisual bell-ringing simulator inspired by a p5.js draft I did in March 2017.

From Wikipedia:

The Steinhaus–Johnson–Trotter algorithm or Johnson–Trotter algorithm, also called plain changes, is an algorithm named after Hugo Steinhaus, Selmer M. Johnson and Hale F. Trotter that generates all of the permutations of n elements. [...] This method was known already to 17th-century English change ringers, and Sedgewick (1977) calls it "perhaps the most prominent permutation enumeration algorithm". As well as being simple and computationally efficient, it has the advantage that subsequent computations on the permutations that it generates may be sped up because these permutations are so similar to each other.

This app takes a list of scale indices, a scale root, octave, key and note duration and generates a set of 'bells', which are 'rung' using tonejs and the sequence displayed using Konva. Up to four sets of bells can be rung in parallel, creating harmonies and melodies across multiple sets of permutations and scales.

The effect of this is an interactive simulation of four bell-ringing patterns alongside showing information about the processes taking place, which with some skill and note choice can create beautiful sequences.

This project incorporates vanilla JS libraries into a React project to create an interactive single page app focused on music.