Handbell simulator for change ringing

1. "Handbell" is for simulating a handbell: Move the phone from horizontal to vertical to ring the handstroke; move it back from vertical to horizontal to ring the backstroke. (Does not do a physics-realistic simulation of a handbell under general motion or shaking.) By default this runs in "stand-alone" mode, where the phone itself rings, but it may also connect to a computer to control Ringing Room, Abel, or Muster, as described below.

2. "Bells & Methods" can be used to hear how a hypothetical new set of handbells might sound when tuned to different keys or temperaments. (Actual results will vary.)

3. "Help & Videos" includes some introductory change ringing videos, demos showing how to use Minibell, and videos of change ringing performances.

4. "Hunt" is a visual aid for beginners learning to ring plain hunt in hand.

Bell sounds are courtesy of Sue DeVuyst, Cally Perry, Anna Gladstone, Ed Futcher, Leland Kusmer, and John Schreiner.
The handbell photograph is by user Oosoom on en.wikipedia, and is licensed under a creative commons share-alike attribution license (CC BY-SA).

Using Minibell with Ringing Room / Abel / Muster

There are two ways to use Minibell to control Ringing Room / Abel / Muster. In the handbell tab, click on "connect to computer". There are three modes: stand-alone mode, peripheral ring-event mode, and peripheral motion data mode. In peripheral ring-event mode the phone processes its motion data and wirelessly sends ring-now type events to the computer. In peripheral motion data mode the phone wirelessly sends motion data to the computer, which processes the data and determines when to ring.

Peripheral ring-event mode

Minibell can be used as a peripheral in conjunction with Ringing Room, by wirelessly sending ring-now type events to the computer. In order for the computer (either Mac or Windows) to receive these ring-now events, one can perform the following steps.

Install Node.js, which is a JavaScript runtime environment. This also installs "npm", the Node Package Manager.
The Node.js installer may give you the option of installing command line compilation tools, since some packages need them. The packages below do not need these tools.

Install express by typing "npm install express" at the command line.

Install Socket.IO by typing "npm install" at the command line. This allows the computer to listen for input from the phone.

Install RobotJS by typing "npm install robotjs" at the command line. This allows the javascript file to produce keystrokes.
If installing RobotJS produces a message saying that Python needs to be installed first, then Python can be installed from here.

Download the bellreader.js JavaScript file.

From the command line, type "node bellreader.js". This will produce keystroke events when Minibell instructs the computer that the bell should ring.
Warning: These keystroke events will occur in whatever window currently has focus. Ideally that window will either be a Ringing Room browser tab or Abel. When running this script, to prevent extraneous keystrokes in other windows, one can set the phone down.

On Macs, the "node bellreader.js" command should be executed from the command terminal. MacOS will ask if you would like to allow Terminal to control your computer (so it can send the keystroke events), which can be enabled in System Preferences / Security & Privacy / Accessibility by checking the box by Terminal.

Peripheral motion data mode

In peripheral motion data mode, the phone sends its motion data to the computer, where it can be processed by Richard Johnston's program to produce the keystrokes needed by Ringing Room, Abel, or Muster. This program runs on Windows computers, and can be downloaded from here.

Privacy policy