SDG Musical Bands

<< Back to the SDG Toolkit page

SDG Musical Bands

Created by Jim Young

Musical Bands is a project which utilises the iLab SDG Toolkit to offer a multi-mouse and multi-user musical widget. Following the metaphor of using an elastic band to create music, this widget allows for both plucking and stretching of the elastic band to achieve a variety of sounds and tones. A single user can enjoy this widget using one or two mice, or multiple users can play together with a current maximum of four mice

User Control Source for the Musical Bands control
Application Source
Executables Unzip all files (executable plus dependancies) into a single folder.
For the source, you will have to relink the reference to the SDGToolkit dll.

See the video:

The brief video sdgMusicalBands.wmv illustrates Musical Bands in Action

How it works:


  • By simply dragging a mouse over an elastic band, the band is plucked, generating a sound.


  • Both pins on an elastic band are movable, allowing a user to stretch an elastic band. This will change the note resulting from a pluck, and will pitch-bend the currently sounding note in relation to the stretch.
  • The sound of the band changes with the length (i.e., a stretched band has a higher pitch than an unstretched one). This relationship is conveyed through the thickness of the elastic. As the elastic band is stretched, it gets thinner.


  • Each elastic band can have a unique colour, allowing a user to associate a particular colour with a sound. This also adds to the aesthetics of the widget

Maximum and Minimum Length

  • The maximum and minimum length of an elastic band can be specified, allowing for the creation of precise instruments which target a specific sound.

1st Harmonic

  • Using multiple mice, one mouse can touch the middle of the band by left-clicking on middle of the band. While touching the band, another mouse can pluck the string, creating a harmonic sound like the sound which can be produced on a guitar.

Map to a MIDI Instrument / Note Range

  • Each elastic band can be mapped to a particular MIDI instrument and note range, allowing for a wide diversity of sounds. Set each band to a different instrument, and you can fine tune an arrangement to your liking.

SDG MusicalBand User Control

Musical bands are implemented as a user control.

  • All configuration of the MusicalBands widget can be completed through the properties dialog in visual studio.
  • These properties can be changed at runtime. However, changing the MIDI Channel or MIDI Instrument may have undesireable effects such as not destroying a sustaining note when creating a new one.
    • Color - This property sets the color of the elastic band to any available colour on the system.
    • LengthMin - Sets the minimum length (in screen pixels) of the elastic band. It will not be alowed to shrink beyond this.
    • MIDIChannel - Sets which MIDI channel (0-15) that the sound should be played on. Note that each instrument should have its own MIDI channel in order for the stretching effects and varying instrument sounds to work properly. However, sharing a channel will not break the widget.
    • MIDIInstrument - Sets the instrument of the elastic band to any general midi instrument.
    • MININoteBase - Sets the lowest note that the elastic band will generate. From here, the highest note is dependent on the length of the band.


This SDG example is developed by: Jim Young Jan 2006 as a course assignment for CPSC 581 (U Calgary), with permission