Moving vans…

Teaching Music is moving, but not that far.

Actually, it’s returning to its old domain of, but I’m no longer using to host the site. All of the old posts are there (and here), and nothing new will be posted here.



(pianoPed) Notes about Web Site Projects

It seems kind of weird for me to be adding a piano pedagogy category, but I think it is good to post online all the teaching info that I can, and it might be of use to others.

I want to summarize a few tips I went over in class, and provide a few helpful hints as you’re working on your web projects (projects 1 and 2).

Project 1: WYSIWYG Web Page Development

For project 1, building a standard web site with a WYSIWYG editor, the goal is to gain understanding about basic HTML, formatting a page, linking content, and adding some simple graphics. More specifically, you want to understand the need for using tables to assist in page formatting, and to understand the difference between linking to other pages on your site versus linking to other pages on the Web (outside of your site).

When you link to pages within your site (creating a link to your bio from your home page, for example), the link address is relative to the current page location. If all of your pages are in one folder, then the filename is the address (bio.html) without any http prefix or domain information. If the page is on an external site you need to specify the full address, starting with the http (

For a standard web page, tables are pretty much the only way to specify page margins and multiple columns. Otherwise, your only alignment options are left, center, or right.

Project 2: WordPress

For your WordPress project, WordPress is being used as a Content Management System (CMS). You choose a layout that applies to all of your pages, and then focus on entering content. Based on your layout choice and decision to use a pages widget in one of your sidebars, WordPress will automatically creates links to all pages to your site and make them available on every page. Most of the links that you add to your content will be external links with the full address listed.

Explore the dashboard for your WordPress site. The sidebar on the left has all the available commands and settings options grouped into categories. Arrows to the right of any category will expand or collapse that pane. The best way to learn how to use the dashboard and WordPress is to go through those links on the left and see what controls each one offers.

In the page and post editors, the default toolbar only shows one row of tool icons. The icon on the far right of the first row shows/hides the second row of tool icons.

You should also experiment with different themes (under the Appearance heading). Themes that offer custom header options are the best for creating your own personal look, since they let you upload your own graphics or pictures to use as a page header. While it seemed like three-column layouts were visually busy in class, you have to keep in mind that my projection settings are for a much smaller screen size than the vast majority of computer users. On a 17″ monitor, your web window will usually be much wider, which might make a three-column setup easier on the eye. You just need to see what you like.

There are two additional settings for each post and page that I didn’t really go over in class. Categories are keywords that you create and can use to organize links and blog posts into topic groups. I use categories on my teaching site to correspond to class names, with sub-categories to distinguish notes from assignments for a given class. I use link categories to sort my links for display on my sidebar. If you use a links widget in your sidebar, links will appear sorted with their category name as a section header. You can see how this works on this page: ilocker, BSU, Keith Kothman, and Music Blogs are all post categories.

Post Tags are additional keywords that you can assign to any blog post. They are not stored as categories, but consistent use can be a big help to people searching your blog. For example, I have used the tags “web design” and “wordpress” as tags for this post. The search function first looks through post tags before searching the text of individual posts. Tags won’t come into play for your basic site design for this assignment.


Domains on the web refer to the hierarchy web addresses. Top-level domains are .com, .edu, .gov, .net, .org, and various country domains. Top-level domains are the first sorting criteria for web addresses. An individual user or company cannot create a top-level domain. There is an external organization that determines top-level domains. As an individual or business, you can register a host name. Most users conflate the meaning of the different domain distinctions as one domain, such as as a domain name. Really, keithkothman is a host name and .com is a top-level domain, but you should understand the usage. is really a Uniform Resource Locator, or URL. Web address and URL can be used interchangeably.

(compMus3) Gain slider, delay line intro

2/24/10 patchers are in iLocker.

(It can be easier to grab multiple files using Fetch, available for free from UCS, or some other Windows/Mac FTP program. The server is, and the directory is /users/kkothman/BSU_SHARED/242/examplePatchers.)

New patchers:

  • MSPBasic1f – a different way of sending target value and ramp time to line~
  • MSPBasic2b – gain~ slider, also including the scale object to map incoming MIDI CC to different ranges of values.
  • MSPBasic3a – adc~ and ezadc~ in an audio monitoring patcher. In class, soundflower was used as my Mac Core Audio driver, iTunes radio was playing, and the adc~/ezadc~ used soundflower as its input (set in the DSP status window)
  • MSPBasic3b – tapin~/tapout~ for delay lines. Very simple intro.

(musTh2) Sequences and recent work

I’m in the process of catching up.

The handouts from Dr. Oravitz should be the most helpful thing you have on the topic of sequences. I’ve posted them in my iLocker 112 folder (Common harmonic sequences, sequence repertoire) if you need to get another copy.

A few words about sequences to reinforce some key points.

Know the common sequence types by root movements.

  • descending fifth
  • Pachebel (descending fourth, ascending second, resulting in an overall descending third)
  • 5 -6 exchange
  • descending second 6 – 3

The descending second with 6 – 3 chords is the only sequence that is usually comprised of a one-harmony segment.

The Pachebel sequence is obviously a two-harmony segment, since the driving movement of the sequence is to descend by thirds. The third descent is why I refer to it as a descending fourth/ascending second sequence, rather than an ascending fifth/ascending second. The root movement is the same, but the latter way of describing it suggests the sequence ascends by sixths.

The descending fifth sequence is less obviously a two-harmony segment, but usually the melodic segment will traverse two harmonies to emphasize a descending second movement. For example, starting on i in c minor will give root movements of C – F, Bb – Eb, Ab – D, most likely moving to G (V) and breaking the sequence. Notice the descent comprising the first root of each pair of harmonies: C – Bb – Ab, followed by G. Creating a two-harmony segment allows for a melodic sequence with each segment a second below the previous one.

A descending fifth sequence using all seventh chords requires an alternation between complete and incomplete seventh chords. Upper voices move either by common tone or step-wise descent, with the root doubled in the incomplete seventh chords.

Inversions are always possible in a sequence. Using inversions doesn’t change the basic sequence type (classified by root movement, not bass movement), but it may change the voice leading. With descending fifth progressions of seventh chords, alternating between a root position seventh and a second inversion seventh (4 – 3 chord) allows for every chord to be complete AND have EVERY voice move either by common tone or descending second.

(compMus3) MSP reading and tutorial assignment 1

The documentation and tutorial text is online at:

You can read online without having the application.

Read the following sections of the documentation for MSP:

  • MSP Introduction
  • How MSP Works
  • Audio I/O

Go through MSP Tutorials 1 – 5.

These tutorials do not require you to modify anything, but I want you make a list of concepts and objects covered as a study guide for yourself. Turn in the study guide to me via email by 3/1/10.

(compMus3) MSP basic demo patchers

Demo patchers from yesterday’s lecture are in iLocker. Look for patchers MSPBasic1[a – e].maxpat.

Outline of topics covered:

  • Digital Audio basics relating to how computers generate audio samples (in blocks, or vectors). The larger the vector sample size, the less strain on the computer, more latency.
  • Audio Rate and Control Rate, pertaining to patch cord connections and the rate at which they are computed.
  • ~ denotes audio objects (tilde looks like a sine wave)
  • dac~ and EZdac~ (and their related messages: start, startwindow, and stop)
  • basic objects: cycle~, *~ (gain).
  • The reliance on floating point numbers for messages, rather than integers
  • audio discontinuity leading to clicks requires use of line~ for smoothing message changes, especially for amplitude
  • replacing the sine wave table used for cycle~ with an audio signal of your choice (as long as it is 512 samples).

(compMus3) More Tips for Assignment 2

Following up on previous set of tips, I’m offering up some more help for translating the assignment into programming tasks.

The second part of the problem asks for a “gesture generator” with several options. It is best to pursue each option as a separate patch. All versions must start with a MIDI key press, use the MIDI key as the first note of the gesture, and use a single durational (time) value. These instructions mean that all versions of the patchers will:

  • Only a noteon message can start the timing unit (ok, by now we know it is a metro). You need a combination of two objects to get rid of noteoff commands.
  • The metro object must use musical time values, which requires the use of a transport object and specific attribute arguments for the metro. I’m willing to waive this requirement if you’re still struggling with this patcher. You can use a metro with millisecond timing.
  • The gesture plays in order, so you need to count bangs.
  • You need to pass the MIDI note number to an add box to add to the output of the stored intervals in the table (like the arpeggiator).

The first version of the patcher shuts off at the end of the gesture (or stored interval sizes). To do so, you need to count events, determine when you reach the maximum number of events, and use that determination to stop the metro. It doesn’t matter how long you hold the MIDI key, so the noteoff message can be ignored.

The second version repeats the last note until you release the MIDI key. This version of the patcher will require you to keep the metro running, but bypass the counter once you reach the maximum number (end of gesture). There is a graphic object that performs this function. Use the result of the counter maximum to trigger the switch to route bangs away from the counter. You should know from the tutorials that an integer number object displays the last number passed through, and also stores it. A bang to a number box will cause the number box to re-output its stored number (the last number that passed through). In this version of the patcher, you hold the MIDI key down to play the gesture, and release it to stop. You already know from the first part of the assignment how to stop a metro using key velocity. Make sure you control a toggle leading to the metro so that you can pass the message to another control device for routing.

The third version of the patcher “repeats the last note with variable durations, chosen from a limited set (2 to 4) of values, related by multiples of the durational value used for the gesture.” This version requires that you change durations in the metro once you reach the maximum count. You can use the same determination that you use to switch the routing of bangs to also turn on a random object that bangs a table with stored multiples of the base value (1, 3, 4, 8, for example).

If you haven’t figured the third version, I’ll go over it in class on Friday.

The third part of the assignment is remarkably similar to one of the Day05 demo patchers.