Introduction: Muse.assist: Assistive Acoustic Guitar Strumming Device
This device strums an acoustic guitar when prompted by input from an ability switch commonly used by children with Cerebral Palsy. This device was originally created to allow students with CP to participate in a music therapy program and to facilitate their understanding of the production of sound.
Step 1: Parts List
This list is divided into three sections: the mechanical support structure, the motor/ motor accessories section, and other helpful tools and parts.
Linear Motion System
- 1 Steel Drive Shaft, 8mm OD, 200 mm Length
- 1 Steel Drive Shaft, ⅛” OD, 9” Length
- 2 iglidur G, plain bearings with flange (ID 8mm)
- 2 iglidur G, plain bearings with flange (ID ⅛”)
- 2 Set Screw Shaft Collar, ⅛” Diameter
- 2 Aluminum GT2 Timing Pulleys, 6mm Belt, 36 Tooth, 5mm Bore
- 1 Timing Belt GT2 Profile, 2 mm Pitch, 6mm Wide, 1164mm Long
- 2 Linear Rail Shaft Guide/Supports, 8mm Diameter
- 1 guitar pick (preferably less than 1mm)
- 4 Flat Head Socket Cap Screws, M4, 60 mm Length
- 4 Stainless Steel Hex Nuts, M4 Size
- 1 Shoulder Screw, 5mm Diameter x 20mm Long Shoulder, M4 Thread
- 1 Plain Steel Hex nut, M4 Size
- 4 Stainless Steel Phillips Machine Screws, M3
- 2 Stainless Steel Phillips Machine Screws, M2, 12 mm Length
- 4 Stainless Steel Phillips Machine Screws, M1, 10 mm Length
- 4 Stainless Steel Hex Nuts, M1 Size
Motors and Accessories
- 1 Arduino Uno Board
- 1 EasyDriver Stepper Driver
- 1 Bipolar Stepper Motor (Rated Voltage= 12V; 5mm Drive Shaft)
- 1 5V/1A Power Supply
- 2 Analog Feedback Servo Motors
- 1 Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit (Optional)
- Duct Tape
- Hot Glue Gun
- 2 Irwin Quick-Grip Bar Clamps, 13 3/8 in.
- Craft Felt Fabric, 3 square ft.
- 1 Clear Polycarbonate Sheet, 12 x 24 in.
- 1 pack of Velcro Industrial Strength Tape, 4 ft x 2 in.
- 1 Polycarbonate Cutter
- 1 Small Cardboard box to house the Arduino
Step 2: Create the Device Platform
- Cut the polycarbonate sheet into two equal rectangles with a minimum width of 2.5 in and a length of at least 6 in.
- Wrap each in felt using tape or glue to fix the felt to the polycarbonate.
- Adhere the fuzzy side of the velcro to one side of each platform, covering the entire platform.
Step 3: 3D Printing
3D Print (in italics) or order the following printed parts:
- 1 Motor Holder Base Assembly - Active
- 1 Motor Holder Base Assembly - Passive
- 1 Pick Cart
- 2 Dowel Servo Motor Connectors
- 2 Belt Rectangles
Step 4: Assembling the Passive Side
- Attach the pulley to the protruding wall of plastic of the 3D-printed Motor Holder Base Assembly - Passive using the partially threaded screw and an M4 nut. The head of the screw and the pulley itself should face away from the base.
- Screw one of the 3D-printed Dowel Servo Motor Connectors onto one of the servo motors using 2 M1 screws and nuts.
- Screw the servo motor into the base of the Motor Holder Base Assembly - Passive using 2 M3 screws. Then reinforce this connection to the Assembly base by hot gluing around the base of the servo.
- Use 2 Flat Head Socket Cap Screws, M4, 60 mm Length to secure a Linear Rail Shaft Guide/Supports, 8mm diameter to the base. Secure using M4 nuts.
- Adhere the spiky side of velcro to the bottom of the 3D-printed Motor Holder Base Assembly.
Step 5: Assembling the Active Side
- Affix the pulley to the stepper motor's rotating rod; there is a tightening screw on the pulley itself (see the first image).
- Attach the stepper motor to the 2 posts of plastic on the 3D-printed Motor Holder Base Assembly - Active using 4 M3 screws.
- It may be necessary to add two small pieces of felt between the motor and the posts to reduce unwanted noise during strumming. If so, unscrew the M3s and cut out a small piece of felt. Then place it in between the motor and the post and re-screw the motor to the post
- Screw one of the 3D-printed Dowel Servo Motor Connectors onto the other servo motor using 2 M1 screws. Make sure that the two connectors are mirroring one another.
- Screw the servo motor into the base of the Motor Holder Base Assembly - Active using 2 M3 screws. Then reinforce this connection to the Assembly base by hot gluing around the base of the servo.
- Use 2 Flat Head Socket Cap Screws, M4, 60 mm Length to attach one of the Linear Rail Shaft Guide/Supports, 8mm diameter to the base.
Adhere the spiky side of velcro to the bottom of the 3D-printed Motor Holder Base Assembly.
Step 6: Build the Pick Cart
- Place the 8 mm bearings into either side of the large hole in the center of the 3D-printed Pick Cart. Secure with a small amount of hot glue around the outside diameter of the flange.
- Place the 1/8 in. bearings into either side of the small hole in the protruding rectangle of the 3D-printed Pick Cart. Secure with a small amount of hot glue around the outside diameter of the flange.
- Secure the pick into the slot in the cart on the side opposite to the protruding rectangle.
- Depending on the thickness of the pick you are using, you may or may not need to use a small amount of hot glue or felt to secure it in place.
Step 7: Rail Assembly
- Slide the 8 mm Shaft into one of the linear rail shaft guide on either the active or passive side. Tighten the screw on the side of the shaft guide using a small Allen wrench.
- Slide the pick cart onto the 8 mm shaft, ensuring that the protruding rectangle of the pick cart is on the same side of the shaft as the protruding parts of the dowel-servo motor connectors.
- Then attach the other side of the 8 mm shaft to the other linear rail shaft guide, and again tighten the screw to secure the shaft using an Allen wrench.
- Slide the 1/8 in. Shaft through the hole in one of the dowel-servo motor connectors, then through the appropriate bearings in the pick cart, and finally through the hole in the second dowel-servo motor connector.
- Secure the 1/8 in. dowel by tightening a shaft collar onto both protruding ends of the 1/8 in shaft. The shaft collars need to be tightened using an Allen wrench.
Step 8: Add the Timing Belt
- Cut the timing belt to make it a continuous strip.
- Wrap the timing belt tightly around the Stepper Motor and Timing Pulley. Loop one end slightly past the top of the pick cart and fasten it using one of the 3D-printed belt rectangles and 2 M3 screws.
- Note: instead of screwing in the belt immediately, consider leaving the belt secured but not overly tightened until the system is adequate.
- Then, adjust the belt so that it is tight, but leave a tiny bit of slack in the loop. Take the other end of the loop and repeat the fastening process, this time fastening two layers of belt loop.
- If there is a lot of overhang, cut the loop ends to the appropriate length.
Step 9: Attaching the Device to the Base
- Cut 2 pieces of velcro that span the length of the 3D-printed base assembly, and attach one to the bottom of either base.
- Attach the opposite side of the velcro to the felt bases that you built previously.
- Secure each 3D printed base assembly to a felt base. Make sure they are aligned.
Using the Irwin Quick Grip clamps, clamp the felt bases to either side of the guitar's sound hole, extending outwards in the long direction.
Step 10: Setting Up/Consolidating the Electronics
1. Once you have the physical structure in place, follow the Fritzing diagrams attached to properly wire your Arduino and motors.
2. For a more aesthetically pleasing device, you may choose to group the wires from each of the respective motors together using electrical tape, so as to form 3 bundles of wires. You may also choose to use long electrical wires and store the Arduino/ Shield in a casing that can be placed off to the side while the device is in use.
Step 11: Muse.X Code
Below you'll find the code for the operation of the device.
There are two separate codebases:
1) The Arduino code, which should be programmed onto the microcontroller.
2) The Java code, which is run on the host computer by the operator.
Here are the steps to get Muse.X up and running:
- Download the code. You can use the `git clone` command or just download the files individually from the GitHub interface.
- Use the Arduino IDE to open the UnoStepper folder. Attach your Arduino and upload the UnoStepper.ino file onto the board. That is all you will need to do for the Arduino.
- To operate the device you will need the Java interface. You can compile from source if you know how, or just use the pre-compiled JAR file located here.
- Before using the JAR, you will need to install a few libraries. Follow the instructions (for Mac OS X) here.
- Now you are ready to play! Just connect your Arduino over USB and then run the MuseX.jar file. You should see an interface like the image above.
- The 'Play/Pause' button starts and stops the device. When starting, continuous motion begins. When pausing, the device finishes its next stroke and then stops.
- The 'Left' and 'Right' buttons move the pick cart slightly left or right. Use these to align the cart before starting to play. You'll want to move the cart about 1" from one end of the bar. When the cart begins to move, it will automatically go in the opposite of the last direction in which it was adjusted. For example, if you click 'Right' a few times and then click 'Play', the first stroke will be to the left.
- The 'Calibrate' and 'OK' buttons are used to calibrate the height of the pick above the strings. Follow the instructions to calibrate. You'll want to do this at the start of each time the device is re-booted.
- The 'Up (Pick)' and 'Down (Pick)' buttons adjust the calibration of the pick. For best results, calibrate the device so that it moves smoothly but never actually touches the strings. Then click 'Play' and repeatedly click 'Down (Pick)' until the desired volume level is reached. This will create the smoothest operation and make calibration the easiest.
- The 'Strum Pattern' checkboxes choose which beats are up-beats and which are down-beats. If all are checked, the device will hit the strings on every stroke. If none are checked, the device will move back and forth above the strings.
- The 'Button Action' radio buttons control the response to input from the audio jack. The 'Single Strum' mode will do one stroke per press. The 'One Measure' mode will do four strokes per press. The 'Infinite On/Off' method will make the button press act like the 'Play/Pause' button. Each mode will respect the input of the 'Strum Pattern' checkboxes, skipping the appropriate beats.