Background/Purpose. Goals and Features

Similar documents
CSC475 Music Information Retrieval

Keys: identifying 'DO' Letter names can be determined using "Face" or "AceG"

MUSC 133 Practice Materials Version 1.2

MMTA Written Theory Exam Requirements Level 3 and Below. b. Notes on grand staff from Low F to High G, including inner ledger lines (D,C,B).

Written Piano Music and Rhythm

PRACTICE FINAL EXAM. Fill in the metrical information missing from the table below. (3 minutes; 5%) Meter Signature

Building a Better Bach with Markov Chains

AP Music Theory Summer Assignment

The Practice Room. Learn to Sight Sing. Level 3. Rhythmic Reading Sight Singing Two Part Reading. 60 Examples

Northeast High School AP Music Theory Summer Work Answer Sheet

The Practice Room. Learn to Sight Sing. Level 2. Rhythmic Reading Sight Singing Two Part Reading. 60 Examples

Elements of Music David Scoggin OLLI Understanding Jazz Fall 2016

Music Representations

A Model of Musical Motifs

Developing Your Musicianship Lesson 1 Study Guide

Curriculum Mapping Piano and Electronic Keyboard (L) Semester class (18 weeks)

The Keyboard. the pitch of a note a half step. Flats lower the pitch of a note half of a step. means HIGHER means LOWER

Preface. Ken Davies March 20, 2002 Gautier, Mississippi iii

A Model of Musical Motifs

Homework Booklet. Name: Date:

Rhythmic Dissonance: Introduction

Lesson 9: Scales. 1. How will reading and notating music aid in the learning of a piece? 2. Why is it important to learn how to read music?

Representing, comparing and evaluating of music files

Primo Theory. Level 7 Revised Edition. by Robert Centeno

Music Theory Courses - Piano Program

Study Guide. Solutions to Selected Exercises. Foundations of Music and Musicianship with CD-ROM. 2nd Edition. David Damschroder

Music Curriculum Kindergarten

Lesson Two...6 Eighth notes, beam, flag, add notes F# an E, questions and answer phrases

Analysis and Discussion of Schoenberg Op. 25 #1. ( Preludium from the piano suite ) Part 1. How to find a row? by Glen Halls.

SOUNDLIB: A MUSIC LIBRARY FOR A NOVICE JAVA PROGRAMMER

Intermediate Midpoint Level 3

MUSIC THEORY & MIDI Notation Software

Student Performance Q&A: 2001 AP Music Theory Free-Response Questions

AutoChorale An Automatic Music Generator. Jack Mi, Zhengtao Jin

LESSON 1 PITCH NOTATION AND INTERVALS

Primo Theory. Level 5 Revised Edition. by Robert Centeno

Divisions on a Ground

WASD PA Core Music Curriculum

MUSIC THEORY CURRICULUM STANDARDS GRADES Students will sing, alone and with others, a varied repertoire of music.

Texas State Solo & Ensemble Contest. May 25 & May 27, Theory Test Cover Sheet

about Notation Basics Linus Metzler L i m e n e t L i n u s M e t z l e r W a t t s t r a s s e F r e i d o r f

a start time signature, an end time signature, a start divisions value, an end divisions value, a start beat, an end beat.

ORB COMPOSER Documentation 1.0.0

Course Overview. Assessments What are the essential elements and. aptitude and aural acuity? meaning and expression in music?

Instrumental Performance Band 7. Fine Arts Curriculum Framework

1 Overview. 1.1 Nominal Project Requirements

1. Label all of the pitches in figure P1.1, for all four clefs.

Assessment Schedule 2016 Music: Demonstrate knowledge of conventions in a range of music scores (91276)

Week 11 Music as Data

Evolutionary Computation Applied to Melody Generation

Doctor of Philosophy

Theory and Sightreading for Singers LEVEL 2. The EM Music Voice Method Series. Written by. Elizabeth Irene Hames and Michelle Anne Blumsack

Connecticut State Department of Education Music Standards Middle School Grades 6-8

Music Theory Courses - Piano Program

General Music Objectives by Grade

Theory of Music Grade 5

AP/MUSIC THEORY Syllabus

xlsx AKM-16 - How to Read Key Maps - Advanced 1 For Music Educators and Others Who are Able to Read Traditional Notation

AP Music Theory Westhampton Beach High School Summer 2017 Review Sheet and Exercises

Alleghany County Schools Curriculum Guide

Jazz Melody Generation from Recurrent Network Learning of Several Human Melodies

Algorithmic Composition: The Music of Mathematics

OKLAHOMA SUBJECT AREA TESTS (OSAT )

Music Solo Performance

CHAPTER CHAPTER CHAPTER CHAPTER CHAPTER CHAPTER CHAPTER CHAPTER CHAPTER 9...

AP Music Theory Syllabus

DEPARTMENT/GRADE LEVEL: Band (7 th and 8 th Grade) COURSE/SUBJECT TITLE: Instrumental Music #0440 TIME FRAME (WEEKS): 36 weeks


Page 16 Lesson Plan Exercises Score Pages

I. Students will use body, voice and instruments as means of musical expression.

INSTRUMENTAL MUSIC SKILLS

AP Music Theory Syllabus


How to Read Just Enough Music Notation. to Get by in Pop Music

jsymbolic 2: New Developments and Research Opportunities

Impro-Visor. Jazz Improvisation Advisor. Version 2. Tutorial. Last Revised: 14 September 2006 Currently 57 Items. Bob Keller. Harvey Mudd College

Creating Licks Using Virtual Trumpet

Formative Assessment Plan

June 3, 2005 Gretchen C. Foley School of Music, University of Nebraska-Lincoln EDU Question Bank for MUSC 165: Musicianship I

AP Music Theory 2015 Free-Response Questions

Chapter 40: MIDI Tool

ST. JOHN S EVANGELICAL LUTHERAN SCHOOL Curriculum in Music. Ephesians 5:19-20

Reading Music: Common Notation. By: Catherine Schmidt-Jones

1. Arduino Board and Breadboard set up from Project 2 (8 LED lights) 2. Piezo Speaker

AP Music Theory Syllabus CHS Fine Arts Department

1. Takadimi method. (Examples may include: Sing rhythmic examples.)

Choir Scope and Sequence Grade 6-12

Music Theory. Fine Arts Curriculum Framework. Revised 2008

FREEHOLD REGIONAL HIGH SCHOOL DISTRICT OFFICE OF CURRICULUM AND INSTRUCTION MUSIC DEPARTMENT MUSIC THEORY 1. Grade Level: 9-12.

AP Music Theory at the Career Center Chris Garmon, Instructor

Automated Transcription of a Lyric s Melody. David Branner. Hacker School, New York

Palestrina Pal: A Grammar Checker for Music Compositions in the Style of Palestrina

Student Performance Q&A:

Ensemble Novice DISPOSITIONS. Skills: Collaboration. Flexibility. Goal Setting. Inquisitiveness. Openness and respect for the ideas and work of others

Advanced Orchestra Performance Groups

PLANE TESSELATION WITH MUSICAL-SCALE TILES AND BIDIMENSIONAL AUTOMATIC COMPOSITION

ASD JHS CHOIR ADVANCED TERMS & SYMBOLS ADVANCED STUDY GUIDE Level 1 Be Able To Hear And Sing:

The Composer s Materials

INTERMEDIATE STUDY GUIDE


Transcription:

Beat hoven Sona Roy sbr2146 ( Manager ) Jake Kwon jk3655 & Ruonan Xu rx2135 ( Language Gurus ) Rodrigo Manubens rsm2165 ( System Architect / Musical Guru ) Eunice Kokor eek2138 ( Tester )

Background/Purpose Beathoven is a language built for MIDI/MusicXML generation so that anyone, even people who don t really know music, can create a song by putting together words that represent musical concepts into structures that look like actual music. Our language s output creates a MusicXML or MIDI file representing a music score. We chose this output because it can be imported into various music software programs, such as MuseScore (a free music composition software, which can generate score and play the notes). Additionally, we also chose it because its structure allowed us more flexibility in creating our language s basic functionality. One of our stretch goals with this language is to create a music file that contains both melody and lyrics. Lyrics will not have tone, but rather have a beat = best musical genre for this language will be rap. Another goal is to represent chords, notes, and improvisation such that different types of music creators (people who create music by relative pitch vs by absolute pitch) can have more flexibility. Another one of our goals with this language will be to easily generate stacked music scores, aka music that is played at the same time with the same key but that have different (ie polyphonic) melodies. Goals and Features Musical Production - By writing a song s common elements with our language s syntax, functions and data structures, a user can digitally encode a composition of a song. Additionally our language can generate improvised song snippets by randomly generating melodies based off of parameters that describe musical patterns. 1 of 7

Syntax Primitive Data Types pitch duration int rest Description Absolute Pitch: `C `G5 `F4# Pitch Relative to Key: `1 `5 `1+ `6- e q h w 1/4 1/8 1/16 1/2 1 2 3/4 3/8 7/16 Normal integers Silence pitch type Absolute Pitch: s Pitch Relative to Key: 0 Supported Data Types Description Note A Note is defined as a pitch, duration tuple. The default pitch of a note is C and its default duration is a quarter. Chord A Chord is a group of notes. The default inversion for chords is root inversion. A chord can also be described with a shorthand notation($) that details the main note of the chord and the bass note of the chord. Note fsharp = `F4#; /*F4# pitch, 1/4 duration*/ Note fa = `4:1/4; Note cwhole = :w; /*C pitch, 1 duration */ Note note = :1/4+1/8; /*C pitch, 3/8 duration*/ Chord cmajor1 = `C&`E&`G; Chord cmajor2 = cmajor1 & `C5; Chord chord = note1 & note2 & note3; Chord cmajor3 = `cmajor$ G4; /* Short hand for C chord Starting on G(ie third inversion) */ Modules Example Seq A Seq is made up of Notes or Chords. Seq will automatically group Notes and Chords into bars according to its attributes. The attribute, time signature, is inherited from Score if not specified. Seq seq1 = [`1`1`5`5 `6 `6 `5:3/8]<4/4>; Score.setTimeSignature(4/4); Seq seq2 = `[4 4 3 3 2 2 1:3/8]; /* in shorthand */ Seq seq3 = [ `5`5 seq2.(:6) ]; 2 of 7

Seq is mutable and its elements and subsequence can be easily accessed like in python. Seq cannot have nested structures. A seq within another Seq will be flattened before assignment. Sequences also have a measure_length attribute. Measure length attribute covers how many score defined measures each sequence covers. Additionally the sequences module has built in functions to modify sequences programmatically. For example, some of these functions allow the user to algorithmically modify and improvise new sequences based off of the last notes of a sequence. Other functions allow the addition of notes on two sequences simultaneously by appending notes that follow a specific musical motion Seq seqconcat = [ seq1 seq2 seq3 seq3 seq1 seq2 ]; Seq.add_note([input_sequence], [semitone/tone], [higher/lower/equal]) Seq.contrary_motion([first_sequence], [second_sequence], [up/down]) Seq phrase11 = `[3 2 1 2] Rhythm beats `[3 3 3]; Seq phrase2 = [phrase11.(0:-1) `3 `1]; Part A Part is a container for sequences that specifies what sequences should be played (and when they should be played) throughout a score. If a part has no specified sequences for a specific measure, a part autofills those measures with rest sequences until all of the measures in the part are covered. Score A Score is a container of parts with unique attributes (such as meter, key and total number of measures) that help describe the musical piece it represents. Part part_1 = [ seq_1*1, seq_2*2] -> [seq_1, seq_2, rest_seq] Score.parts < part1 < part2 Score.setKeySignature(`Ab) Operator Description : Indicates a duration + / - Octave / ` & Indicates a note Chord * int Concatenates a sequence or note int times. < Concatenates parts into a Score-ready object 3 of 7

; End an assignment command Example Code Usage Example 1 - General Features /* mary had a little lamb main https://musescore.com/user/73888/scores/92396 */ 1 Score.setTimeSignature(4/4); /* global variable */ 2 Seq beats = :[q q h]; 3 Seq phrase11 = `[3 2 1 2] Rhythm beats `[3 3 3]; 4 Seq phrase12 = `[2 2 2]:beats [3 5 5]:beats; 5 Seq phrase2 = [phrase11.(0:-1) `3 `1]; 6 Seq phrase22 = phrase11 phrase12 phrase2 `[2 2 3 2 ] `1:w; 7 Part maryhasalittlelamb = phrase22; 8 Score.parts < maryhasalittlelamb; 9 Render maryhasalittlelamb mlamb.py mlamb.xml; Line 1: This uses the Java-like object construct to set a global variable Score s time signature. settimesignature is a method within the Score module. Because every of our programs will be creating a MusicXML file that is similar to real sheet music, that line is necessary to set our time signature for the song. Line 2: We define a basic beat Seq initialized with the default pitch value of C. Line 3: This starts off with a sequence of notes, using a shorthand way of representing a group of notes: `[3 2 1 2] is short for [`3 `2 `1 `2]:[q q q q]. After that shortened sequence, Line 3 is adding on another sequence in which a function called Rhythm adds our beat Seq to a musical phrase with three 3 pitches. If we were to write that line completely it would be [ 3 2 1 2 3 3 3]:[q q q q q q h] so our shorthand allows for some simplification & less repetition. Line 4: This also uses shorthand to cast the beats onto the notes. 4 of 7

Line 5: we borrow from python s list comprehension features and copy all notes of phrase11 except the last note and add two more. Seq does not have nested structure. Putting seq next to another seq concatenate them. In [phrase11.(0:-1) `3 `1], sub sequence phrase11.(0:-1) gets concatenated into the list. Line 6: This line is another Seq combining previously set up sequences and appending another sequence to the end. Line 7: Adding the entire sequence just created to a Part. Line 8: Adding the Part to the Score in order. Line 9: We use Render in which the Part gets transformed into sheet music Example 2 - Octaves + Chords Features 1 Score.setKeySignature(`Ab); 2 Score.setTimeSignature(4/4); 3 Seq beats1 = :[3/8 1/8 q e e e e]; 4 Seq beats2 = beats1.(0:-2) :q; 5 Seq melody1 = `[ Fm$Ab3 Fm$Ab3 Fm$Ab3 0 BbM$D BbM$D BbM$D ]:beats1; 6 Chord Absus = `Db4 & `Eb4 & `Ab4; 7 Chord Dflat = `DbM$Db4 & Db5; /* this shorthand plus appended note creates a four note chord */ 8 Seq melody2 = [ Absus Absus Absus `0 Dflat Dflat ]:beats2; 9 Seq smellsliketeenspirit = melody1 melody2; Line 1: This line sets the default key signature to A flat Line 2: This line sets the default time signature to 4/4 Line 3: We define a basic beat Seq of 3/8, 1/8, quarter, eighth, eighth, eighth, and eighth initialized with the default pitch value of C. 5 of 7

Line 4: We define beats2 as beats1 from first index to third of last index. This function resembles that of Python. Line 5: This starts off with a sequence of chords, using a shorthand way of representing a group of chords: `[ Fm$Ab3 Fm$Ab3 Fm$Ab3 0 BbM$D BbM$D BbM$D ]:beats1 is a short for `[ Fm$Ab3 Fm$Ab3 Fm$Ab3 0 BbM$D BbM$D BbM$D ]:[3/8 1/8 q e e e e]. [3/8 1/8 q e e e e]. Defining the elements of the Seq list, `Fm$Ab3 means a F minor chord made out of Ab3, C4, F4 notes. 0 means a rest. BbM$D means a B flat major chord made out of D4, F4, B flat 4 notes. Also, A letter followed by a number is an octave, which means, for example, C4 fourth octave of a C note. Line 6: This line creates a chord with Db4, Eb4, Ab4 notes. Line 7: This line creates a D flat major chord with D flat 5 note, which is Db4, F4, Ab4, and D flat 5. Line 8: Creates sequence using Absus and Dflat chords, which we created in line 6 and line 7. Line 9: Finish the song by concatenating melody1 and melody2, which we created in line4 and line8. Example 3 - Automation Features with Cantus Firmus 1 Score.setTimeSignature(3/4); 2 Seq voice_1 = [ 5 5 6]; 3 Seq voice_2 = [1 2 3]; 4 Seq.add_note (voice_1, tone, lower) 5 Seq.add_note(voice_2, tone, equal); 5 Seq.parallel_motion(voice_1,voice_2, tone, down); 6 Seq.parallel_motion(voice_1,voice_2,tone, down); 7 Part part_1 = voice_1; 8 Part part_2 = voice_2; 9 Score.parts < part_1 < part_2; 10 Render Score cantus_f.py cantus_f.xml; Line 1: setting time signature to the rhythm 3 quarter notes for the total phrase length Line 2: setting sequence to pitches [5 5 6] with default duration Line 3: setting sequence to pitches [1 2 3] with default duration 6 of 7

Line 4: appending the new note to sequence voice_1, with the tone desired and the lower frequency than the last note Line 5: appending the new note to sequence voice_2, with the tone desired and an equal frequency to the last note Line 6: Seq.parallel_motion, there are two stacked sequences, and when they move in parallel both sequences move down the same interval - for every call you append a note to each of the two sequences you have used in parallel Line 7: setting the order of sequences such that voice_1 is played first Line 8: setting the order of sequences such that voice_2 is played second Line 9: inputting the parts in order into the score Line 10: rendering the score into a python file (in order to create a MIDI file) and an.xml file Example 4 - Control Flow 1 Seq Rhythm(Seq beats, Seq melody) = { /* definition of the Rhythm function used in example 1 */ 2 if (beats.length == 0) Exception( empty beats ); 3 for (int i = 0, j = 0; j < melody.length; j = j + 1) { 4 melody.(j).duration = beats.(i).duration; 5 i = if (i + 1 < beats.length) {i+1} else {0}; 6 } 7 return melody; 8 } 9 10 function increasepitch() { 11 Seq basesequence = `[3 2 1 2] Rhythm beats `[3 3 3]; 12 } 13 14 Score createscore(int totalmeasures, int totalparts) = { 15 Score score = new Score(); 16 for(int i = 0; i < totalparts; i=i+1){ 17 score.addpart(part(totalmeters)); 18 19 return Score; 12 } 7 of 7