Our Approach


Problem

Dancers do not have a reliable way to see just how precisely their feet are following the choreography.

Goal

Make learning new dances (or practicing old ones) easier and less memorization-heavy through an intuitive, interactive dance floor connected to a system of pressure sensors and LEDs.

Intended Users

Anyone trying to learn choreography - novice and experienced dancers alike.

Conceptual Design

Choreography + Blueprint = ChoreoPrint

Users can program their choreography “blueprint” into ChoreoPrint, then play it back to follow along. Users can use ChoreoPrint to perform a dance without much planning and then have a record of their steps. ChoreoPrint makes it easy to send precise choreography to someone who is far away.

Use Scenario 1

user persona 1

Jane is a first year at Wellesley who just joined ascenDance, the contemporary ballet club on campus. They’re preparing for the annual Nutcracker show, and Jane wants to practice the choreography on her own with particular attention to the accuracy of her movements within the performance space. Jane, wearing her preferred dance shoes, plays the recorded choreography from the previous rehearsal using a computer connected to the floor containing a grid of pressure sensors and LED lights. The choreography of other dancers in the group, with steps represented by varying colors of LED lights, is displayed on the floor in time with the music. Jane performs the choreography along with the with the changing LED lights, seeing the prerecorded steps as they coincide with her own. Jane is able to rehearse the dance on her own, while still being aware of the other dancers movements in the performance space. Later, she can replay the performance to see how accurate her movements are in regards to the choreography of the whole group.

Use Scenario 2

user persona 2

Sarah is a semi-professional ballet dancer, who wants to improve her accuracy while performing various choreographies. Sarah wishes to compare her many rehearsals of a dance to analyze how she is performing the movements within the rehearsal space. Sarah uses the flooring containing a grid of pressure sensors and 3-color LED lights. She plays the recording of one of her previous performances to the choreography, and records her movements to later be used to compare her current performance with her past performance. The pre-recorded choreography indicates where Sarah’s next movements within the space will occur using the grid of LED lights. After she has finished performing the dance, Sarah can replay the two recorded performances together to analyze the accuracy of her movements and the occurrence and frequency of mistakes in the choreography.

Visual Design

envisioned setting

Complete dance floor within rehearsal or performance space, providing colored visual feedback

envisioned floor tiles

Grid of 3-color LEDs and sensors in acrylic sheet cut into tiles that create a dance floor

envisioned hardware details

Three-color LED and pressure sensor located in laser cut hole in acrylic sheet

Storyboard

Storyboard 5
Storyboard 5
Storyboard 5
Storyboard 5
Storyboard 5

Low-fidelity Prototype

low-fidelity prototype

Each dot represents a sensor/LED combination so you can:
+ Record your dance routine
+ Playback the light/movement sequence of your dance
+ Playback choreography while recording

Revisions

Feedback from our class presentation gave us some ideas to consider moving forward with this project. From a design standpoint, we needed to consider texture of the floor and whether it was appropriate for dancing. We decided that acrylic sheets will work as this surface, with possible adjustments made to add texture by sanding them. It was also suggested that we look into finding transparent pressure sensors, which we decided against in effort to make the design as educational for anyone looking at it as possible. We spent time experimenting with the positioning of the pressure sensors and LED lights underneath the acrylic flooring to ensure location accuracy. Placing the lights in laser cut holes best protected them from the dancer's movements, but keeping the sensors exposed proved the best idea after testing. Finally, it was pointed out that we needed to consider the brightness and size of the LED lights to make sure they are visible to the dancer. We tested this while designing our functional prototype and adjusted accordingly. We added two additional LEDs to indicate to the user when the recording feature is initialized and when playback is occurring. We were planning to use different colors of LED lights to indicate different layers or performances, but decided to leave out this feature in this stage for the sake of time. However, if ChoreoPrint was to go into production, these features would certainly be included. We also took advice to determine how long the lights will remain lit once they are triggered, which we now know is as long as the pressure sensor had been triggered. Final comments about our project gave us things to consider for the creative expansion of this project. We acknowledge that our project is limited to considering the foot placement of dancers, and does not address other aspects of dance including movement and gesture. The potential to introduce a video aspect to the interface in later iterations exists. Additionally, the idea of using “ghost choreography” from a pre recorded dance to add aesthetic/visual appeal to a performance was suggested, and would allow users to interact with ChoreoPrint in both creative and analytic ways.

Development Process

Feasibility Prototyping

Connected to our breadboard are four LEDs and corresponding pressure sensors. Using analog input for the FSRs and digital output for the LEDs, we have programmed our Arduino Uno to light up the LEDs when its corresponding pressure sensor receives any touch. For our dance floor tile, we laser cut three clear 12”x12” plexiglass sheets. The material is .25” thick for durability, and the transparency allows the user to see the LED lights underneath the surface. Four rectangular slits were laser cut into the quadrants of the top square to allow our force sensitive resistors to sit on the surface of the tile and keep all wires safely underneath the tile surface. We created a support structure to sit beneath the top layer of plexiglass and hold the wires and LEDs in an organized fashion.

GUI

gui 1 gui 2

We created a UI that is intentionally simple, in order to make the setup process as intuitive as possible. The user inputs their name, the title of the performance, the name of the routine, and assigns a recording type so the recording can be easily identified later for playback. Then, the user selects their music from the drop-down menu. Each song is connected to a “blueprint,” or pre-recorded choreography programmed into the Arduino. For the sake of this assignment, we programmed one song, but more could be easily added. When the user clicks “Begin,” the music begins. The user then either moves the potentiometer to initialize record/playback mode, or starts the prerecorded choreography.

Arduino Code

The Arduino Software (IDE) allows us to develop code to connect with our Arduino hardware and upload/run programs. In the Arduino environment, these programs are called sketches and can be verified and uploaded to the connected board. For our sketch, we initialized the I/O ports each sensor and LED is connected to in the hardware. The board then waits for the potentiometer to reach a certain frequency (initiated by sliding the potentiometer control). This begins the “record/playback mode”. A red LED lights up and blinks a 5 second countdown to indicate the start of the recording. While recording is in progress, an adjacent yellow LED is lit. A buffer is used to record values of 0 or 1 to four arrays for each pressure sensor, indicating if the pressure sensor has been triggered or not. Additionally, the corresponding LEDs will light up as the pressure sensors receive a certain frequency. When the recording mode ends, the yellow LED will blink rapidly and turn off, indicating the switch to playback mode. After a short delay, the same buffer reads through the four arrays and activates the LEDs based on the value stored within the array. After playback mode has ended, the program returns to its “waiting” mode and plays a pattern on the LEDs while listening for the necessary input from the potentiometer.

Arduino Uno & Breadboard (with connected wires/components)

The Arduino Uno’s microcontroller holds the sketch uploaded, and receives or sends the necessary information to the sensors connected through the breadboard. Due to the space available on the Arduino Uno, we had to limit the length of our “recordings” so the necessary arrays could be stored. For our implementation, we contained these hardware components in an open top box. The exposed wires allows us to debug our prototype as needed, and allows the red and yellow LEDs attached to the breadboard to be visible to the user as they communicate the recording/playback state. Attached to the top of this box is the potentiometer, allowing the user to easily access the slider to initiate the recording/playback mode. Our input sensors are attached to analog ports, allowing them to send frequency data to the microcontroller. The four LEDs contained within the tile are connected to digital ports, allowing them to communicate states of on/off.

Plexiglass layers with pressure sensors and LEDs

Extending from the breadboard is a long stream of wires leading to our dance floor tile. The tile is constructed from four 12”x12” sheets of plexi glass. The bottom layer of black plexi serves as a base for our prototype. The 3 remaining layers of clear plexi serve as the structure to hold the wires, LEDs, and FSRs. Laser cut holes channel the wires on the bottom layer, while rectangular openings allow space for the four LEDs and FSRs to sit in the middle of their four quadrants. The pressure sensors sit on top of the tile, to allow for more accurate readings as the user steps on them. The LEDs are slightly offset from the FSRs so that they can remain visible while the user is interacting with the prototype.

Prototype

Demonstration

view on YouTube:

preview of demo

Technical Implementation

view Arduino & GUI code on GitHub:

arduino code github

Final design specs

view initial setup:

design specs

Reflection

Strengths

  • Ability to record choreography
  • Ability to playback choreography
  • Easy to use

Weaknesses

  • Syncing music with recording and playback
  • Saving dances for later playback and recording
  • Technical capabilities (memory for recording, number of sensors/LEDs)

Future Work

  • Adding another set of LEDs in a separate color to show and record your steps while also playing back choreography.
  • Adding analytics to show precisely how off your steps were compared to the choreography.
  • Extending recording/playback capabilities.
  • Ability to save and replay dances from files stored on computer.
  • Increasing the number of LEDs in one tile to reflect our initial design.