Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
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.


muObjectsTutorials.png

Notebook

MusicalObjects.png

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



MusicalObjects_MGraphScoreEditor.png