Musical objects for Squeak
Last updated at 7:11 pm UTC on 25 July 2022
ľO (or muO, or MuO) stands for "musical objects".
It is a quite large ecosystem of tools and representations for musical composition, in the form of an open playfield were musical ideas can be tested, visualized and manipulated in a very rich and personal way, up to the assembling of fully fledged pieces of music.
Data produced by ľO includes MIDI files, MIDI and OSC output streams, Csound scores and orchestras, graphical representations and sound files. ľO can also read scores in MusicXML and ABC formats, and read scales in Scala format.
Since ľO is also a programming language, it can potentially import and export about anything.
What ľO is not: it is not a digital audio workstation; it is not too good at making sound by itself; it does not compose nice music automatically.
http://www.zogotounga.net/comp/squeak/sqgeo.htm
Latest release is for Squeak5.3-19435: just unpack the following zip file and start the image if you use MSWindows.

Notebook

Programming language
Musical objects for Squeak uses a programming language (DSL) defined in Smalltalk so that expressions like the following may be evaluated
Mode C major tonic
It gives back a MusicalNote object.
The DSL is besides regular Smalltalk expressions about Musical objects implemented as follows
doesNotUnderstand: aMessage
(ChromaticMode indianModes identityIncludes: aMessage selector)
ifTrue: [ ^ IndianMode mode: aMessage selector].
(#(C Cb Cf Cs Db Df D Ds E Eb Ef F Fs G Gb Gf Gs A Ab Af As B Bb Bf )
includes: (aMessage selector withoutTrailingDigits withoutLastCharacter: $m))
ifTrue: [
^ (self chromaticClass major tonicSymbol: aMessage selector) "alphabetical"].
(#(DO DOb DOs RE REb REs MI MIb FA FAs SOL SOLb SOLs LA LAb LAs SI SIb)
includes: (aMessage selector withoutTrailingDigits withoutLastCharacter: $m))
ifTrue: [
^ self chromaticClass major tonicSymbol: aMessage selector prefix: #de].
ChromaticMode modesDictionary at: aMessage selector
ifAbsent: [^ super doesNotUnderstand: aMessage].
^ self chromaticClass mode: aMessage selector
These musical note objects may be concatenated.
(Mode C major tonic, Mode E major tonic, Mode G major tonic) play
If you inspect
Mode C major tonic, Mode E major tonic, Mode G major tonic
you get a MusicalPhrase object.
| gen |
gen := Mode F minor notes palindromicGenerator.
(gen lambda next quoted play asButtonLabelled: 'click me') openInHand
Continue
Playing chords with Musical Objects
