Transcript Notes

Making music
• Consider music as structured sound
• Components include
– Pitch
– Duration
– Instrument
– Stereo direction
• Each attribute has a set of possible values
– Can specify by number or name
Components
• Pitch
–
–
–
–
defined by note values/names
Letters A-G, which repeat in the next octave
half steps between most notes (just not B-C and E-F)
12 notes per octave
A, A♯, B, C, C ♯, D, D♯, E, F, F♯, G, G♯
– Pitch values double at the next octave up
• Duration
– System of notes and rests
– One beat is usually denoted with a “quarter note”
– Dotted note has 1.5x the duration
Musical scale
• Ever watch The Sound of Music?
• The easiest musical scale is called C Major. It
works like this:
Note
C
Song name do
D
re
E
mi
F
fa
G
so
A
la
B
ti
C
do
• Actually, the movie used a B-flat Major scale
which is 2 half-steps lower than C.
Getting started
• We won’t use IDLE. Download new system:
– http://www.cs.cofc.edu/~manaris/jythonmusic/
– Click on “download”
– Open folder, double-click on JEM2.jar
• “Jython” is a version of the Python language
– Does not change how your write code
– Allows us to run programs to interact with Java on
your computer to access extra multimedia capabilities
• Near top of program: from music import *
Note( ) function
• note = Note(pitch, duration, volume, panning)
• Note the 4 parameters
– Pitch = name of note with octave number, e.g. C4,
D5; or a number 0-127 where middle C = 60.
– Duration = number of quarter-note beats, or a given
name e.g. QN, HN, WH; precede with D to dot a note.
– Volume = number 0-127. Forte = 85 is the default.
Others are FFF, FF, F, MF, MP, P, PP, PPP
– Panning = stereo direction. 0.0 = left, 0.5 = center
(default), 1.0 = right
– In most cases we just need first 2 parameters.
Examples
note = Note(C4, DHN, FF)
Play.midi(note)
--------------------------rest = Rest(HN)
Play.midi(note)
--------------------------note = Note(E4, QN)
Play.midi(note)
--------------------------note = Note(G4, QN)
Play.midi(note)
Phrase
• Do you want to play more than 1 note? Then put
your notes into a phrase.
– Create a phrase
– Add notes to phrase
– Play the phrase
p = Phrase()
p.addNote(Note(C4, QN))
p.addNote(Note(E4, QN))
p.addNote(Note(G4, QN))
p.addNote(REST)
Play.midi(p)
Phrase features
• We can set a tempo and instrument
p.setTempo(120)
p.setInstrument(FLUTE)
• Tempo indicates speed of quarter note.
– If we set tempo to 120, each beat is 1/120 of a minute
or ½ a second.
• PIANO instrument is default. Choices include:
CLARINET, VIOLA, GLOCKENSPIEL,
ACCORDION, TRUMPET,
ELECTRIC_GUITAR, FLUTE
List of notes
• Music has a lot of notes. Put them in a list! It
will save typing.
• Create a list of pitches, which can include rests.
[C4, C4, C4, C4, E4, D4, C4]
• Create a list of matching durations
[QN, QN, QN, QN, DQN, EN, HN]
• Call this function on the 2 lists:
p.addNoteList(<pitches>, <durations>)
Example
p = Phrase()
p.setInstrument(FLUTE)
p.setTempo(120)
pitch1 =
[C4, C4, C4, C4, E4, D4, C4]
duration1 = [QN, QN, QN, QN, DQN, EN, HN]
pitch2 =
[E4, E4, E4, E4, G4, F4, E4]
p.addNoteList(pitch1, duration1)
p.addNoteList(pitch2, duration1)
Play.midi(p)
Simultaneous notes
• The function p.addChord( ) allows you to specify
that some notes play at the same time.
• Format: p.addChord(<pitch list>, <duration>)
p = Phrase()
p.addChord([C4, E4, G4], HN)
p.addNote(REST, QN)
p.addChord([C4, EF4, G4], HN)
p.addNote(REST, QN)
p.addNote(E4, HN)
Play.midi(p)