[ Music.SoftWare.Design ]

Homework#2

RippleBand

A Step Sequencer Features Band Element

Author: Kai-Chieh Huang | Version: 1.0 | Date: Oct,30,2014



RippleBand is a fun Music Step Sequencer designed to have the musical richness as a band performing. As shown in the picture above, RippleBand contains 6 channels of different sounds: 2 guitars, 1 bass, 2 drums, and 1 synthesized sound. The step sequence started from the inner circle to the outer circle, each circle is a step. In each step, RippleBand will play all the instruments users selected to play simultaneously, much like a whole band is playing together. It is simple and straight forward for users to control the RippleBand, users just simply click on the circle button on each instrument channel to select the note they want in each step. Users can also use keyboard to control the tempo of the sequence and the number of steps they want. Furthermore, after finding a cool musical pattern in the sequence, users can press 'r' to record a voice or instrument to play along with the cool sequence they designed. The system of this program is designed using C++ and open source libraries: RtAudio, OpenGL/GLUT, MCD-API, and Fluidsynth.


Design

Motivation + System Design


Motivation:


Since most of the Music Step Sequencers are arranged in square and sequecning from left to right, I decided to design my sequencer in circle in contrast to sqare. For this project, I designed my sequencer as concentric circles and sequencing from the inner circle to the outer circle to model ripples. As a guitarist myself, I love the music interections between drums, bass, and guitar in a band, so I added these instrument sounds into my sequencer to make it sounds like a whole band performing. As a result, I designed my step sequence to start from the inner circle to the outer circle, and each circle is a step. In each step, it will play all the notes and instruments users selected in that circle simultaneously, much like a whole band is playing together. I hope everyone using this sequencer can have a chance to feel the grace of music produced by all the instruments in a band and how they interect.



Screenshot of the program starts

Screenshot after clickde on some circle button to select pitch

2.System Design:


The system architecture is shown in the figure below. The control interface was designed to be simple and straight forward, using mouse clicking to change the note of each instrument at each step and using some keyboard keys to control the number of steps and tempo of the sequence. In the program, I designed a sound control class which deal with each sound control button on each circle. The class basically stores the note information in each button and play that note or turn off that note when asked. There is also a sequence control function to calculate time between each step and asks the sound control class to play sounds in each step when sequence comes. The sequence control function also tells the display function which step is on so the display function will choose that circle to shine. This system uses the libraries as follows: RtAudio, OpenGL/GLUT, MCD-API, and Fluidsynth. For more information about how to control the program please see user manual.



Block diagram of the software architecture


Screen Shots


Screenshot when the sequence is on

Screenshot while using record mode

Manual



    Click on each circle button to choose pitch
    press q - quit RippleBand
    press s - start/stop sequecner
    press r - record your sound to play along with sequencer
    press (shift)'+' - increase number of sequence
    press (shift)'_' - decrease number of sequence
    press (shift)'>' - speed up the sequence tempo
    press (shift)'<' - slow down the sequence tempo


« Download the Code »

© Music256A, Stanford, Kai-Chieh Huang, Fall 2014