Widgets

Content:

  1. Monitoring status
  2. Generating chunks of notes
    1. Pitch-Time Matrix
    2. The Rhythm Block
    3. Creating Tuplets
    4. What is a Tuplet?
    5. Using Individual Notes in the Matrix
  3. Generating rhythms
  4. Musical Modes
  5. The Pitch-Drum Matrix
  6. Exploring musical proportions
  7. Generating arbitrary pitches
  8. Changing tempo


1. Monitoring status



The Status widget is a tool for inspecting the status of Music Blocks as it is running. By default, the key, BPM, and volume are displayed. Also, each note is displayed as it is played. There is one row per voice in the status table.
Additional Print blocks can be added to the Status widget to display additional music factors, e.g., duplicate, transposition, skip, staccato, slur, and graphics factors, e.g., x, y, heading, color, shade, grey, and pensize.



You can do additional programming within the status block. In the example above, the volume is divided by 10 before being displayed.


2. Generating chunks of notes


2.a. Pitch-Time Matrix


Music Blocks provides a widget, the Pitch-time Matrix, as a scaffold for getting started.
Once you've launched Music Blocks in your browser, start by clicking on the Pitch-time Matrix stack that appears in the middle of the screen. (For the moment, ignore the Start block.) You'll see a grid organized vertically by pitch and horizontally by rhythm.


The matrix in the figure above has three Pitch blocks and one Rhythm block, which is used to create a 3 x 3 grid of pitch and time.
Note that the default matrix has five Pitch blocks, hence, you will see five rows, one for each pitch. (A sixth row at the bottom is used for specifying the rhythms associated with each note.) Also by default, there are two Rhythm blocks, which specifies six quarter notes followed by one half note. Since the Rhythm blocks are inside of a Repeat block, there are fourteen (2 x 7) columns for selecting notes.



By clicking on individual cells in the grid, you should hear individual notes (or chords if you click on more than one cell in a column). In the figure, three quarter notes are selected (black cells). First Re 4, followed by Mi 4, followed by Sol 4.


If you click on the Play button (found in the top row of the grid), you will hear a sequence of notes played (from left to right): Re 4, Mi 4, Sol 4.

Once you have a group of notes (a "chunk") that you like, click on the Save button (just to the right of the Play button). This will create a stack of blocks that can used to play these same notes programmatically. (More on that below.)
You can rearrange the selected notes in the grid and save other chunks as well.

The Sort button will reorder the pitches in the matrix from highest to lowest and eliminate any duplicate Pitch blocks.

You can hide the matrix by clicking on the Close button (the right-most button in the top row of the grid.)


There is also an Erase button that will clear the grid.
Don't worry. You can reopen the matrix at anytime (it will remember its previous state) and since you can define as many chunks as you want, feel free to experiment.
Tip: You can put a chunk inside a Pitch-time Matrix block to generate the matrix to corresponds to that chunk.


The chunk created when you click on the matrix is a stack of blocks. The blocks are nested: an Action block contains three Note value blocks, each of which contains a Pitch block. The Action block has a name automatically generated by the matrix, in this case, chunk. (You can rename the action by clicking on the name.). Each note has a duration (in this case 4, which represents a quarter note). Try putting different numbers in and see (hear) what happens. Each note block also has a pitch block (if it were a chord, there would be multiple Pitch blocks nested inside the Note block's clamp). Each pitch block has a pitch name (Re, Mi, and Sol), and a pitch octave; in this example, the octave is 4 for each pitch. (Try changing the pitch names and the pitch octaves.)


To play the chuck, simply click on the action block (on the word action). You should hear the notes play, ordered from top to bottom.


2.b. The Rhythm Block


Rhythm blocks are used to generate rhythm patterns in the Pitch-time Matrix block. The top argument to the Rhythm block is the number of notes. The bottom argument is the duration of the note. In the top example above, three columns for quarter notes would be generated in the matrix. In the middle example, one column for an eighth note would be generated. In the bottom example, seven columns for 16th notes would be generated.




You can use as many Rhythm blocks as you'd like inside the Pitch-time Matrix block. In the above example, two Rhythm blocks are used, resulting in three quarter notes and six eighth notes.


2.c. Creating Tuplets



Tuplets are a collection of notes that get scaled to a specific duration. Using tuplets makes it easy to create groups of notes that are not based on a power of 2.

In the example above, three quarter notes—defined in the Simple Tuplet block—are played in the time of a single quarter note. The result is three twelfth notes. (This form, which is quite common in music, is called a triplet. Other common tuplets include a quintuplet and a septuplet.)

In the example above, the three quarter notes are defined in the Rhythm block embedded in the Tuplet block. As with the Simple Tuplet example, they are played in the time of a single quarter note. The result is three twelfth notes. This more complex form allows for intermixing multiple rhythms within single tuplet.



In the example above, the two Rhythm blocks are embedded in the Tuplet block, resulting in a more complex rhythm.
Note: You can mix and match Rhythm blocks and Tuplet blocks when defining your matrix.


2.d. What is a Tuplet?



2.e. Using Individual Notes in the Matrix


You can also use individual notes when defining the grid. These blocks will expand into Rhythm blocks with the corresponding values.


3. Generating rhythms

The Rhythm Ruler block is used to launch a widget similar to the Pitch-time Matrix block. The widget can be used to generate rhythmic patterns.


The argument to the Rhythm Ruler block specifies the duration that will be subdivided to generate a rhythmic pattern. By default, it is 1 / 1, e.g., a whole note. The Set Drum blocks contained in the clamp of the Rhythm Ruler block indicates the number of rhythms to be defined simultaneously. By default, two rhythms are defined. The embedded Rhythm blocks define the initial subdivision of each rhythm ruler.


When the Rhythm Ruler block is clicked, the Rhythm Ruler widget is opened. It contains a row for each rhythm ruler. An input in the top row of the widget is used to specify how many subdivisions will be created within a cell when it is clicked. By default, 2 subdivisions are created.



As shown in the above figure, the top rhythm ruler has been divided into two half-notes and the bottom rhythm ruler has been divided into three third-notes. Clicking on the Play button to the left of each row will playback the rhythm using a drum for each beat. The Play-all button on the upper-left of the widget will play back all rhythms simultaneously.


The rhythm can be further subdivided by clicking in individual cells. In the example above, two quarter-notes have been created by clicking on one of the half-notes.



By dragging across multiple cells, they become tied. In the example above, two third-notes have been tied into one two-thirds-note.



The Save stack button will export rhythm stacks.



These stacks of rhythms can be used to define rhythmic patterns used with the Pitch-time Matrix block.



The Save drum machine button will export Start stacks that will play the rhythms as drum machines.


4. Musical Modes

Musical modes are used to specify the relationship between intervals (or steps) in a scale. Since Western music is based on 12 half-steps per octave, modes speficy how many half steps there are between each note in a scale. By default, Music Blocks uses the Major mode, which, in the Key of C, maps to the white keys on a piano. The intervals in the Major mode are 2, 2, 1, 2, 2, 2, 1. Many other common modes are built into Music Blocks, including, of course, Minor mode, which uses 2, 1, 2, 2, 1, 2, 2 as its intervals. Note that not every mode uses 7 intervals per octave. For example, the Chromatic mode uses 11 intervals: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1. The Japanese mode uses only 5 intervals: 1, 4, 2, 3, 2],. What is important is that the sum of the intervals in an octave is 12 half-steps.



The Mode widget lets you explore modes and generate custom modes. You invoke the widget with the Custom mode block. The mode specified in the Set key block will be the default mode when the widget launches.


In the above example, the widget has been launched with Major mode (the default). Note that the notes included in the mode are indicated by the black boxes, which are arrayed in a circular pattern of tweleve half-steps to complete the octave.
Since the intervals in the Major mode are 2, 2, 1, 2, 2, 2, 1, the notes are 0, 2, 4, 5, 7, 9,11, and 12 (one octave above 0).
The widget controls run along the toolbar at the top. From left to right are:
Play all, which will play a scale using the current mode;
Save, which will save the current mode as the Custom mode and save a stack of Pitch blocks that can be used with the Pitch-time Matrix block;
Rotate counter-clockwise, which will rotate the mode counter-clockwise (See the example below);
Rotate clockwise, which will rotate the mode clockwise (See the example below);
Invert, which will invert the mode (See the example below);
Undo, which will restore the mode to the previous version; and
Close, which will close the widget.
You can also click on individual notes to activate or deactivate them.
Note that the mode inside the Custom mode block is updated whenever the mode is changed inside the widget.



In the above example, the Major mode has been rotated clockwise, transforming it into Dorian.



In the above example, the Major mode has been rotated counter-clockwise, transforming it into Locrian.



In the above example, the Major mode has been inverted, transforming it into Phrygian.
Note: The build-in modes in Music Blocks can be found in musicutils.js.



The Save button exports a stack of blocks representing the mode that can be used inside the Pitch-time Matrix block.


5. The Pitch-Drum Matrix


The Set Drum block is used to map the enclosed pitches into drum sounds. Drum sounds are played in a monopitch using the specified drum sample. In the example above, a kick drum will be substitued for each occurance of a Re 4.





As an experience for creating mapping with the Set Drum block, we provide the Drum-Pitch Matrix. You use it to map between pitches and drums. The output is a stack of Set Dum blocks.


6. Exploring musical proportions

The Pitch Staircase block is used to launch a widget similar to the Pitch-time Matrix, which can be used to generate different pitches using a given pitch and musical proportion.
The Pitch blocks contained in the clamp of the Pitch Staircase block define the pitches to be initialized simultaneously. By default, one pitch is defined and it have default note "la" and octave "3".


When Pitch Staircase block is clicked, the Pitch Staircase widget is initialized. The widget contains row for every Pitch block contained in the clamp of the Pitch Staircase block. The input fields in the top row of the widget specify the musical proportions used to create new pitches in the staircase. The inputs correspond to the numerator and denominator in the proportion resectively. By default the proportion is 3:2.




Clicking on the Play button to the left of each row will playback the notes associated with that step in the stairs. The Play-all button on the upper-left of the widget will play back all the pitch steps simultaneously. A second Play-all button to the right of the stair plays in increasing order of frequency first, then in decreasing order of frequency as well, completing a scale. The Save stack button will export pitch stacks. For example, in the above configuration, the output from pressing the Save stack button is shown below:



These stacks can be used with the Pitch-time Matrix block to define the rows in the matrix.



7. Generating Arbitary Pitches

The Pitch Slider block is used to launch a widget that is used to generate arbitray pitches. It differs from the Pitch Staircase widget in that it is used to create frequencies that vary continuously within the range of a specified octave.


Each Sine block contained within the clamp of the Pitch Slider block defines the initial pitch for an ocatve.




When the Pitch Slider block is clicked, the Pitch Slider widget is initialized. The widget will have one column for each Sine block in the clamp. Every column has a slider that can be used to move up or down in frequency, continuously or in intervals of 1/12th of the starting frequency. The mouse is used to move the frequency up and down continuously. Buttons are used for intervals. Arrow keys can also be used to move up and down, or between columns.




Clicking in a column will extact the corresponding Note blocks, for example:




8. Changing tempo

The Tempo block is used to launch a widget that enables the user to visualize Tempo, defined in beats per minute (BPM). When the Tempo block is clicked, the Tempo widget is initialized. The Master Beats per Minute block contained in the clamp of the Tempo block sets the initial tempo used by the widget. This determines the speed at which the ball in the widget moves back and forth. If BPM is 60, then it will take one second for the ball to move across the widget. A round-trip would take two seconds.


The top row of the widget holds the Play/pause button, the Speed up and Slow down buttons, and an input field for updating the Tempo.



You can also update the tempo by clicking twice in spaced succession in the widget: the new BPM is determined as the time between the two clicks. For example, if there is 1/2 seconds between clicks, the new BPM will be set as 120.