Online music education courseware for non-musicians who want to learn how to write their own rock songs.
About Me
Name: Jim Plamondon
Location: Austin, Texas, United States
This blog documents the development of JIMS iGetIt! Music System (JIMS). JIMS' goal is to help you Understand Music in 24 Hours™, if you are (a) a non-musician (b) who wants to learn how to write your own rock songs. Requiring no instrument other than your own computer, and without using traditional notation, JIMS is being designed to deliver a deep understanding of tonal structure...in just 24 hours.
Here's my first draft of Lesson 5 in JiMS iGetIt! Music System (source code here):
Same crummy state-controlling button-bar at the bottom, for now. I really must fix that.
This lesson is 640x480, rather than the much smaller dimensions of the previous lessons. The larger size doesn't fit this blog very well, but it makes the lesson's text easier to read -- especially the note-button labels.
In this lesson, we build the "Fundamental Scales" -- that is, music's "well-formed scales." I'm not using the "well-formed scale" phrase yet, because to do so, I also need to introduce Myhill's property, and we're still a few lessons away from that.
In Lesson 6, I expect to introduce the notion of tuning, to show how the world's different musical cultures are related, and to establish the argument that to learn music using JiMS is to use a very general approach -- not limited to traditional Western music, for example. I had hoped to put that into Lesson 5, but it was just too much information. It needed its own lesson.
As of this lesson, my courseware has not just drifted, but positively galloped away from mainstream approaches to music education. Yet one can see that the concepts it introduces are quite simple, when shown using JiMS isomorphic keyboard and on-screen animations.
This lesson is late because I spent a week doing the final packing, cleaning, etc. to get our Austin house on the market. That's done; the coast is clear. More lessons! (More cowbell!)
Here's my first draft of Lesson 4 (source code here):
It uses the same crummy state-controlling button-bar at the bottom, for now. I'm going to write a new control for progressing-through-the-lesson-control soon, probably this weekend.
Moodle
I spent some time earlier this week looking at Moodle, the open-source learning management system. I'd like to package my lessons in a Moodle wrapper, because it has excellent support for all sorts of things (like gradebook databases) that I don't want to have to think about. Unfortunately, Moodle's Flash/Flex support is seriously deficient. Fortunately, an effort appears to be underway to address this deficiency. Therefore, I will proceed as if Moodle will have excellent support for Flash within the near-enough future.
I met the Moodle guys when I was living near their home base in Perth, Western Australia. I knew at the time that they had a good chance of beating their commerical competition. The signs were there, even then. Moodle hasn't been gaining market share as rapidly as I had expected, though. It needs some professional help with its evangelism, I suspect, to accelerate its rate of growth. If Moodle doesn't pick up the pace, it could be the next MySpace. It's "do or die" time.
Music & Pedagogy
Lesson 4 is the first lesson to introduce JIMS keyboard. The keyboard is introduced by deriving the pentatonic scale from an octave-reduced stack of (tempered) (major) fifths. Notice that the lesson never qualifies the term "fifth" -- that is, it doesn't call it a "perfect" fifth or a "major" fifth. I don't want to, or need to, open that can of worms quite yet. All in good time.
The next lesson, Lesson 5, will state that JIMS' unique approach gives its students the power and flexibility to understand and describe the music of many cultures. It will suppor this statement by extending the Stack of Fifths to produce the diatonic, chromatic, and enharmonic scales, and by showing that -- using a tuning slider -- the student can change the tuning to match that of many different non-Western cultures and Western eras, while retaining the simplicity and consistency of JIMS' keyboard's pattern.
I think that it's important to make this point early on, because immediately after making it, the lessons will shift their focus to the diatonic scale, and spend a LOT of time in the diatonic world thereafter. If the flexibility of the JIMS keyboard isn't demonstrated early on, a knowledgeable music teacher, reviewing JIMS' early lessons, might reasonably conclude that JIMS teaches concepts that are applicable only to the diatonic scale. I need to plant the seed of JIMS' power early on, even if I don't water it until much later.
Programming
I'm becoming more comfortable with the architecture that I'm using for these lessons, in which the lesson's content is implemented in the transitions between Flex's application states. If I choose the states wisely, then the architecture works well -- even if this architecture is, as I suspect, an unanticipated application of Flex's "state" feature.
Flex's 4 Beta 2's implementation of stateGroups seems to be a bit buggy (as one might expect from a new feature in a beta-version framework). It seems to clobber properties that aren't set by the relevant states. For example, you'll notice that in Lesson 4 above, the note's octave numbers disappear partway through the lesson. That appears to be a manifestation of the stateGroup bug. I spent a couple of hours trying to work around it, before deciding that the lack of octave numbers, in those states, was not a big enough bug to worry about. Also, don't use stateGroups to affect the setting of the properties of a slider, because the max/min/value will be set to NaN under conditions that I haven't spent the time to rigorously quantify.
Now, if I were a really serious beta-tester, I'd dig into Adobe's online bug reports and open-source nightly builds of Flex, to track down the bug and try to identify a fix. However, I'm confident that the bug is severe enough that others will have done this work, so it will be fixed in the release version. Although my use of the state feature in my application's architecture is, as I've suggested above, likely to be unusual, the use of stateGroups is not, so other people should be encountering this bug. If it persists in the next release, I will become more actively concerned.
Schedule
I've decided to try to post a new lesson each week. That would give me fifty lessons in a year. Assuming that I'll make the first dozen free, on a "try before you buy" basis, then those who subscribe to the paid lessons will get an additional 38 lessons (because 50 - 12 = 38). Thirty-eight is more than three dozen, and hence is three times the number of free lessons -- which ought to make the paying customer feel like they are getting enough to make the $29.95 purchase worthwhile. Of course, I'll be adding new lessons constantly thereafter, but with 50, I ought to have enough to "go live" and start selling subscriptions.
I'll have to pause my output while writing a "notation" component, but since JIMS' sequencer-like notation is so much simpler than traditional notation, it shouldn't slow me down by too much.