• # Lesson 6. Structure

## Annotation

This piece has an A B A structure. It uses the LENGTH-WEIGHT function to produce rhythmic variety in both hands and with lines of pitches and chords. The function ASSEMBLE-SEQ is a catch-all function able to join lists of single and double parentheses together.

```(setf part-1-rh (assemble-seq line-1 line-2 line-1))
(setf part-1-lh (assemble-seq bass-1 bass-2 bass-1))```

There are now four MAKE-OMN expressions, two for each hand. Here’s the B section:

```(setf pno-rhB
(make-omn
:length lengths-w
:pitch chords
:velocity '(mp)))
=> ((-e c4db4fs4 mp - g4c5 c4db4fs4)
(e g4c5 c4db4fs4 - g4c5 -)
(e c4db4fs4 g4c5 c4db4fs4 - g4c5)
(-e c4db4fs4 g4c5 c4db4fs4 g4c5)
(e c4db4fs4 - g4c5 - c4db4fs4))

(setf pno-lhB
(make-omn
:length rhythm-wi
:pitch pitch-transpose
:velocity '(f)))
=> ((e c2 f cs2 fs2 g2 -)
(-e - c2 cs2 fs2)
(e c2 cs2 fs2 - -)
(e c2 - cs2 fs2 g2)
(e c2 - cs2 fs2 -))```

In the OMN script above notice the use of the minus () symbol. This means a rest-length occurs in the length part.

```=> ((1/8 1/8 1/8 1/8 -1/8)
(-1/8 -1/8 1/8 1/8 1/8)
(1/8 1/8 1/8 -1/8 -1/8)
(1/8 -1/8 1/8 1/8 1/8)
(1/8 -1/8 1/8 1/8 -1/8))```
```(setf ts-list (get-time-signature pno-rh))
=> ((5 8 15))```

The ts-list produces automatically the correct number of time-signatures. But remember if want the notation to be properly grouped with all five pitches beamed we must use the keyword :group and its setting.

`(setf ts-list (get-time-signature pno-rh :group '((5))))`

There’s a final expression that might be added to this score-file using DISPLAY-MIDI and COMPILE-SCORE

```(display-midi
(compile-score 'lesson-6 :file "My-Scores/Lesson-6"))```

This shows how to create and save a midifile to your own folder. It’s useful if you want to take the midifile into another application.

## Score

```(setf pitches (gen-repeat 5 '((c4 cs4 fs4 g4 c5))))
(setf pitch-transpose (pitch-transpose -24 pitches))
(setf chords (respell '(c4cs4fs4 g4c5)))
(setf lengths (span pitches '(e)))
(setf lengths-w (length-weight lengths :weight '(2 1) :seed 30))
(setf lengths-wi (length-weight lengths :weight '(3 1) :seed 23))

(setf pno-rhA (make-omn
:length lengths-w
:pitch pitches
:velocity '(f)))

(setf pno-lhA (make-omn
:length lengths
:pitch pitch-transpose
:velocity '(mp)))

(setf pno-rhB (make-omn
:length lengths-w
:pitch chords
:velocity '(mp)))

(setf pno-lhB (make-omn
:length lengths-wi
:pitch pitch-transpose
:velocity '(f)))

(setf pno-rh (assemble-seq pno-rhA pno-rhB pno-rhA))
(setf pno-lh (assemble-seq pno-lhA pno-lhB pno-lhA))

(setf ts-list (get-time-signature pno-rh :group '((5))))

(def-score lesson-6
(:key-signature 'chromatic
:time-signature ts-list
:tempo 100
:layout (piano-layout 'piano-rh 'piano-lh))

(piano-rh
:omn pno-rh
:channel 1
:sound 'gm
:program 'acoustic-grand-piano)

(piano-lh
:omn pno-lh)
)```

## Notation

Go back to Reference page.

Edited by opmo

• ### Introduction to OMN the language

OMN is designed as a scripting language for musical events. It’s not about sounds themselves, it is about their control and organisation in a musical composition. As a linear script rather than a graphic stave, musical events can be transformed, extended, reorganised by powerful computer algorithms. Some sequencers and score writers provide basic algorithms, but they do not represent the way composers now think about the process of music composition. Composing has become such a multi-faceted pro

opmo
OMN The Language 0
• ### Introduction to Opusmodus

Contents A Contemporary Language for Making Music The Parametric World of Music The Parametric Instrument Learning Opusmodus : A Strategy Important Questions: Necessary Answers

opmo
Tutorial Guide 0
• ### CLM Installation

Contents CLM Installation Command Line Tools Load and Compile Instruments CLM Installation Common Lisp Music, by William Schottstaedt is a powerful sound synthesis language implemented in Lisp and C. CLM is essentiall

opmo
CLM Examples 0
×

• Lessons