Sequentris (Music Sequencer)
Sequentris is a musical sequencer game, inspired by Tetris. There are three sequencers you can generate, melody, bass, and beats. You can generate melodies and bass in any pitch on the piano. For beats, you can choose among 7 instruments (Cabasa, Sekere, Guiro, Tambourine, Coke Can, Franc + Mug, and Sleigh Bells).
Sequentris is programed in Unity with a plug-in Chunity, which connects ChucK with Unity. Both time and sound are governed by ChucK. Visual aspects and game mechanics are governed by Unity.
Please download the zip file attached in the following link.
https://www.dropbox.com/home?preview=Sequentris_256.zip
[Installation]
- Download and Install Unity.
- Download and Install ChucK.
- Download the zip file.
- Unzip the zip file.
- Open Unity.
- Open the Project by clicking on the folder called “Sequentris_256”
- Click on the Play Button on Unity.
[How to Play]
There are three play windows: the 1st window is the melody, the 2nd window is the bass, and the 3rd window is the beats. You can assign acoustic features to each block by typing the keys when playing. When you clear a line, the line moves to the sequencer window, playing the assigned acoustic features in a sequence. When your block goes over the grid, both the playing window and the sequencer window reset.
- Left/Right Arrow: Move the block one unit to the left or right.
- Up Arrow: Rotate the block by 90 degrees.
- Down Arrow: Move the block one unit down.
- Space: Move the block all the way down.
- 1: Assign the instrument Sekere to the block.
- 2: Assign the instrument Tambourine to the block.
- 3: Assign the instrument Cabasa to the block.
- 4: Assign the instrument Sleigh Bells to the block.
- 5: Assign the instrument Guiro to the block.
- 6: Assign the instrument Coke Can to the block.
- 7: Assign the instrument Franc+Mug to the block.
- 1~7: Assign pitch octave value from 1 to 7.
- c, d, e, f, g, a, b: Assign pitch note value from c to b.
- s: Add or subtract sharp to the pitch.
- 1~7: Assign pitch octave value from 1 to 7.
- c, d, e, f, g, a, b: Assign pitch note value from c to b.
- s: Add or subtract sharp to the pitch.
- j: Make the sequencer process the sequence in Jazz swing rhythm.
[Screenshots & Video]
[Background: Design Sketch & Research]
References I used to research musical sequencers:
https://www.techopedia.com/definition/8368/music-sequencer
https://en.wikipedia.org/wiki/Music_sequencer
Here are some of my notes, brainstorming for the idea.
This is the prototype of Sequentris.
I assigned random note and instrument values to each block, and realized that the user has almost no control of the sequencer. I set my goal to break some rules of tetris and add a few rules to cut down the randomness.
- Change in block shapes: Except for the square tetromino, the blocks were composed of three, two, or one minos. This enabled users to gain more control, yet leave the room for some randomness.
- Elongated grid width: The grid width increased from 12 to 16, in order to create sequencers of standard 4 beats.
- Individuality in blocks: The user could assign pitch or instrument to the blocks.
- Increased number of windows: The user could build melody, bass, and beat separately.
- Acoustic Feature Display: The pitch value and instrument were displayed on the screen.
- Advantage in Gameover: When the block reached the top, it allowed users to reset the corresponding window and start over.
[Software General Structure]
ChucK clock is the master timer that initiates every event. Overall game mechanics are designed in Game.cp and individual tetromino mechanics are designed in Tetromino.cp (including the User Inputs).
[Feedback on Unity, Chuck, and Chunity]
- Unity has a vast amount of tutorials and error analysis online, which made the coding process easier.
- Tools such as graphics tool, text tool, and animation tools allowed me to visualize my ideas more easily.
- C# was much easier to use than C++.
- Unity crashed quite frequently. Sometimes restart did not work, so I had to save my files very frequently and create backup projects time to time.
- ChucK has a good library in sound synth such as Rhodey and StkInstruments. Since the Shaker Synth had multiple instruments in one, switching instruments in my sequencer was easy.
- When having multiple instruments playing simultaneously, beating occurs from time to time.
- Implementing Sndbuf brought along errors that I ended up not using them.
- Chunity was great in that it allowed high-level audio design that Unity lacked.
- Chunity examples given by our TA Jack helped a lot.
- Chunity is simple to use. I felt complicated mechanics were hidden under the user’s level.
- I once connected Supercollider and Unity using OSC messages to create a simple audio puzzle game, and from my experience, Chunity was much easier to use. Using OSC made me go back and forth Unity and Supercollider, but with Chunity, I only had to worry about Unity.
- SetInt() function implemented in my code completely crashed Unity. After switching it to SetFloat(), it worked fine.
- Implementing Sndbuf brought along errors that I ended up not using them.
Music Sequencer Project for Music 256A at CCRMA @ Stanford University.
Special Thanks to Jack Atherton (TA).