110 likes | 127 Views
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
E N D
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: • 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 p = Phrase() • Add notes to phrase p.addNote(Note(C4, QN)) p.addNote(Note(E4, QN)) p.addNote(Note(G4, QN)) p.addNote(REST) • Play the phrase 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)