June 2020

Handbell Manager for Mac

Mac users are a little bit behind Windows users when it comes to technology for online handbell ringing. We are catered for by Handbell Stadium, but we don't have a version of Graham John's Handbell Manager software that converts the input from motion controllers into keypresses that will drive Mabel or Ringing Room.

I have solved this problem by implementing my own simple version of Handbell Manager. It's not quite as fancy as Graham's, and in particular it doesn't have the option to draw graphs of the inputs from the controllers, but it works. You can download it here (do a control-click and select "Download linked file"). It's not really productised yet, because I haven't succeeded in packaging it up into a standalone application. But if you are willing to roll up your sleeves and do some software installation, here's how to do it.

  1. Make sure your Mac has a recent enough version of MacOS: at least 10.13 (High Sierra).
  2. Install Python 3.8.
  3. Install Homebrew.
  4. In a Terminal window, type brew install sdl sdl_image sdl_mixer sdl_ttf portmidi

  5. In a Terminal window, type pip3 install pygame

  6. In a Terminal window, type pip3 install pynput

  7. Plug in your controllers.

  8. In a Finder window, go to the folder where you saved HandbellManagerMac.py

  9. Right-click on HandbellManagerMac.py and select "Open with IDLE 3.8.3"

  10. In the window showing the code of HandbellManagerMac.py, press F5 (or fn-F5, depending on your keyboard).

  11. You should see an application window that looks like this:

  12. Set the Left and Right controllers so that they are the right way around.

  13. Set the Axis options to whatever you would use in single-axis mode in Handbell Stadium.

  14. Set the Handstroke and Backstroke values to whatever you would use in Handbell Stadium.

  15. Swinging the controllers should result in #Handstrokes and #Backstrokes counting upwards.

  16. Click on the window of the application that you want to ring in: Mabel, or a browser with Ringing Room. Make sure it has the "focus", i.e. it is the active window.

  17. Swinging the controllers should cause your simulated bells to sound. If using Mabel, make sure you don't have up/down key action selected (this is in Preferences / Ringing).

  18. If this doesn't work, you can try going into System Preferences, then Security and Privacy, then Privacy, then Accessibility, and in the "Allow these apps to control your computer", add IDLE (which you will find in the Python folder within Applications) and Terminal (which you will find in the Utilities folder within Applications).

The evolution of handbell controllers

To remind you, here is the first dummy handbell controller I made based on a large Arduino Leonardo.

And here is one of Tim Hart's 3D-printed dummy handbells, with my small Leonardo Pro Micro inside.


Tim and Graham John are planning to go into small-scale production with the 3D-printed bells and a new sensor board from ActionXL.

An inversion of the usual difficulty levels

Online ringing with Ringing Room becomes more difficult when more people are involved, because there is more variation in the internet delays and more people who have to cope with it. Of course it's normal for ringing on more bells to be more difficult, but in Ringing Room, ringing on a given number of bells is easier when people are ringing two each (assuming that they are competent handbell ringers) than when they are ringing one each.

This has led to footnotes about first performances with one bell each, when they have already been achieved with two bells each - the reverse of the usual situation.

For example, the first Ringing Room quarter of Bristol Maximus was on 22nd May, with two bells per person, and on 12th June the first Ringing Room quarter of Bristol Maximus by 12 people was rung and footnoted.

Update on handbell controllers

This is an updated article on how to make handbell controllers for use with Handbell Stadium or Handbell Manager. I now have more experience with using several different components, and I have been trying to make the software easier to use and install.

You might want to refer to the previous article for general information and pictures, but here I will try to reduce the instructions to their essentials.

The electronics (if you want to avoid soldering)

Components (for each controller)

  • An Arduino Leonardo (with headers), for example from RS for £18.36.
  • An accelerometer board with a Grove socket, for example this one from Cool Components for £3.99.
  • A cable with a Grove plug on one end and pins to connect to the Leonardo headers, for example this one from Cool Components for £2.83. You get 5 of these in a pack, so with one order you get enough for two handbell controllers, two more for a friend, and one spare.
  • A cable with a male USB micro plug at one end and a USB or USB-C plug, according to your computer's sockets, at the other end. It's worth getting a 2m cable so that you can sit comfortably back from your computer. I have been buying from a supplier on eBay - if you buy two, you get one free.


  • Plug the cable (with red, black, white and yellow wires) into the socket on the accelerometer board.
  • Plug the cable's pins into the header sockets on the Leonardo board: red to 3.3V, black to GND, white to SDA, yellow to SCL.
  • Plug the USB cable into the socket on the Leonardo board.

The electronics (if you don't mind soldering)

Components (for each controller)

  • An Arduino Leonardo Pro Micro
  • An accelerometer board, for example an Adafruit ADXL343 or a GY-521 based on an MPU6050. Make sure that the accelerometer board will take a 5V power supply, because the Pro Micro only has a 5V power output. The advantage of the MPU6050 is that it has a gyroscope as well as an accelerometer, which enables the use of more sophisticated software.
  • Wire for connection between the boards.
  • USB cable as above.


  • Usually the Leonardo Pro Micro and the accelerometer boards come with a row of header pins that you can solder in if you want to, but it's not necessary and I find that the end result is neater by soldering wires directly into the holes on the boards.
  • Connect the accelerometer to the Pro Micro as follows: VCC to VCC, GND to GND, SDA to pin 2, SCL to pin 3.
  • Plug in the USB cable.

The software

  • Install the Arduino IDE on your computer.
  • Download my UniversalHandbellController.zip. Unzip it and save the UniversalHandbellController folder somewhere.
  • Open the file UniversalHandbellController.ino. This should launch the Arduino IDE.
  • In ArduinoIDE, use Sketch -> Include Library -> Add .ZIP Library and choose the Joystick folder within the UniversalHandbellController folder. This is correct even though it's not a .ZIP file.
  • In ArduinoIDE, use Tools -> Manage Libraries and type LIS3DH into the search box (top right). When you see Adafruit LIS3DH, click on the Install button. You need to do this even if your accelerometer is not a LIS3DH.
  • Plug your Leonardo into a USB socket on your computer.
  • In ArduinoIDE, use Tools ->  Board to select Leonardo, and use Tools -> Port to select something that shows Arduino Leonardo.
  • In ArduinoIDE, press the Upload button (a right-pointing arrow, in the top-left corner of the window). You should see messages saying that the sketch (program) is being compiled and uploaded.
  • If your accelerometer is an ADXL343, an ADXL345, a LIS3DH or an MPU6050 then the UniversalHandbellController software will detect it and set up your controller. If you are using a different accelerometer then you will have to either adapt the program or contact me for help. It's only universal among the accelerometers that I have tested so far.
  • You can now start Handbell Manager or Handbell Stadium and try out your controller.
  • You might need to set the strike points. Go into the Options window (in Handbell Stadium) and look at the Input tab. First, work out which way the boards should be oriented. The UniversalHandbellController software is designed to work with the boards in a vertical plane. The electronics might be facing right or left. When holding the boards in the position corresponding to the handbell being down at backstroke, you want to see a large negative value as the input. If it is positive, turn the boards to face the other way. Set the backstroke strike to be a negative value that is not quite as large. When holding the boards in the position corresponding to the handbell pointing vertically upwards, you want to see a small positive value. Set the handstroke strike to be something close to this value. I find that the controllers work well with with a handstroke strike of 100 and a backstroke strike of -600 (with the ADXL343/345  accelerometer) or -1800 (with the MPU6050 or LIS3DH).
  • I use a Mac and for me, the controllers work easily with Handbell Stadium. On Windows we are having problems with some systems and it can take some adjustment of the software. Contact me if you need advice.

The dummy handbells

You need to fix the boards onto something that you can hold and swing like a handbell. If you are using a big Leonardo and an accelerometer with a Grove socket, then there are screw holes. With the Pro Micro and the non-socketed accelerometers, I use sticky-backed velcro (you can get it from Tesco).

Some ideas for making dummy handbells, in increasing order of sophistication:

  • A table tennis bat.
  • A wooden cut-out handbell shape.
  • A 3D-printed handbell.

Alternatively you can use a real handbell if you tie or remove the clapper.

A peal and a quarter during lockdown

This morning I rang in the first internet 10-bell peal.

Guild of St Cuileáin
Handbell Stadium
, UK
Saturday, 6 June 2020 in 2h 58
5040 Cambridge Surprise Royal
Composed by John H Fielden
1-2 Lesley H M Boyle (Reach)
3-4 Gareth Davies (Reach)
5-6 Graham A C John (C - Brimpton)
7-8 Simon Humphrey (Wetton)
9-10 Simon J Gay (Glasgow)
First peal of Royal on Handbell Stadium. Rung with simulated sound.

Most of the ringing was very good, and we managed to build up a good rhythm. It was slower than we would have rung on real handbells, but that's inevitable with Handbell Stadium because delays are inserted to compensate for different internet lag at different ringers' locations. It took a lot of concentration and it was a satisfying performance. Most of the time I kept my eyes closed, because I wasn't finding it very helpful to look at the simulated bells on screen. The exception was when we had the occasional rough patch, when I looked at the screen to help me find my place, for example by waiting until everyone else had definitely rung if I knew I should be together at the back. It was actually my first peal this year, but I hope not the last.

In the afternoon we went to Angela's house and rang a quarter of Yorkshire in her garden, sitting in a long rectangular arrangement so that Tina and I were 2m away from Angela and Jonathan. It reminded me that real handbells really are better than online handbells. As I write this, it's pouring with rain, so we took advantage of the good weather just in time.

Among all this ringing I found time to finish some more motion controllers for use with Handbell Stadium. I used a smaller version of the Arduino Leonardo, called a Pro Micro, and a different accelerometer board based on an MPU6050. These components are cheaper as well as smaller, and the cost per bell was about £10. I made enough for Jonathan, Angela and Peter each to have a set so that we can all ring together in Handbell Stadium instead of using Ringing Room. Unfortunately two of the accelerometers don't seem to be working, so one of us will have to use the original ActionXL controllers until I can investigate the accelerometers further or replace them.

Graham John has now set up a website for Handbell Stadium, which includes pictures of various motion controllers and housings for the ActionXL controllers. Among these are some beautiful 3D-printed dummy bells made by Tim Hart, with a Leonardo Pro Micro and an accelerometer neatly fitted in.