Sick Beets. A Programming Language to Make Sick Beets. plt-project-proposal.sb Stephen Edwards February 8, 2017

Similar documents
M(usic)arma(dillo)(koo)lade: A Music Creation Language. Team:

C-Major Language Reference Manual

Rhythm Reference Manual

SMURF Language Reference Manual Serial MUsic Represented as Functions

corgi Language Reference Manual COMS W4115

M (usic) arma (dillo)(koo) lade TM

MELODY. Language Reference Manual. Music Programming Language

Blox. September 28, 2016 Programming Languages and Translators Stephen A. Edwards. Naeem Bhatti bnb2115 Language Guru

GRAMophone Manual v0.5.2

Audovia Documentation

RHIZOME HOST USER GUIDE V 2.1

NoteWorthy Composer Version 2.75a

INTERMEDIATE FINALE. General Elective

Project 12 Piezo Sounder Melody Player

GraphQuil Language Reference Manual COMS W4115

DINO. Language Reference Manual. Author: Manu Jain

000 How to Use this Book... 11

Sales Manual Part II

Sick Beets. Final Report

mus

6.005 Elements of Software Construction

PS04 Pattern Editor. Last Update: Feb,

Melody: A Music Programming Language Final Report

1 PREFACE Thank you for your patience with my broken English. Bamboo Score will offer you good performance.

Language Design. Easy to Learn Experimental Object-oriented High-Level Interpreted FUN!

CHRiSM AND APOPCALEAPS

Notes September 22, Recording User Styles on the G-800

Online. Sibelius How- To. Katie Wardrobe Midnight Music.

Little Musician User Manual

PX-360M/PX-560M MIDI Implementation

Really Easy Recording & Editing

With its stunning design featuring new voices and styles, DJ functions the PSR-S670 is a performance keyboard like no other.

GOLD Language Reference Manual

MatchaScript: Language Reference Manual Programming Languages & Translators Spring 2017

Impro-Visor. Jazz Improvisation Advisor. Tutorial. Last Revised: 5 June 2006 Currently 62 Steps. Bob Keller. Harvey Mudd College

Curriculum Guidebook: Music Gr PK Gr K Gr 1 Gr 2 Gr 3 Gr 4 Gr 5 Gr 6 Gr 7 Gr 8

SMURF Programming Language Final Report. 1 Introduction. December 20, Background: What is Serialism?

PSQ-1684 Operation Manual

Java+- Language Reference Manual

Exam 1 Recursion, Induction, and Object-Oriented Programming

Sir Muhammad Naveed. Arslan Ahmed Shaad ( ) Muhammad Bilal ( )

age = 23 age = age + 1 data types Integers Floating-point numbers Strings Booleans loosely typed age = In my 20s

Lesson 16 Musical Door Bell

LCSL Reference Manual

CSCE 206: Structured Programming in C++

CSCE 206: Structured Programming in C++

Basics of Java: Expressions & Statements. Nathaniel Osgood CMPT 858 February 15, 2011

Introduction to Programming Using Java (98-388)

MATVEC: MATRIX-VECTOR COMPUTATION LANGUAGE REFERENCE MANUAL. John C. Murphy jcm2105 Programming Languages and Translators Professor Stephen Edwards

CSC Java Programming, Fall Java Data Types and Control Constructs

Math for Liberal Arts MAT 110: Chapter 11 Notes

Sibelius Basics, Tips and Tricks

PieNum Language Reference Manual

Yamaha continues to offer incredible musical technology and innovation with the PSR-750 arranger keyboard.

CHIL CSS HTML Integrated Language

MUSICAL BEHAVIORS: LAYERED COMPOSITIONAL ALGORITHMS AS PLUGINS FOR THE TRANSFORMATION ENGINE

Exploring the HP-203 Roland Corporation US

PSP Rhythm User s Manual

You can divide the keyboard into left and right zones, and select a different tone for each zone.

PRG PROGRAMMING ESSENTIALS. Lecture 2 Program flow, Conditionals, Loops

Language Reference Manual

The TENORI-ON is provided with the four manuals listed below.

PSR550 Multi Track Recording Tutorial

Score Printing and Layout

Topics. Hardware and Software. Introduction. Main Memory. The CPU 9/21/2014. Introduction to Computers and Programming

VARIABLES & ASSIGNMENTS

SNS COLLEGE OF ENGINEERING,

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 3

CSC Web Programming. Introduction to JavaScript

An Easy Graph Language

Le L c e t c ur u e e 2 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Variables Operators

Announcements. Lab Friday, 1-2:30 and 3-4:30 in Boot your laptop and start Forte, if you brought your laptop

The musicography Package: Symbols for Music Writing with pdflatex

TR-808. Software Rhythm Composer Owner s Manual. Copyright 2018 ROLAND CORPORATION 01

2. Choose XPS-10 as the product name.

Basics of Java Programming variables, assignment, and input

The Design and Implementation of Multimedia Software

Media Computation. Lecture 15.2, December 3, 2008 Steve Harrison

CT 229. Java Syntax 26/09/2006 CT229

0. Overview of this standard Design entities and configurations... 5

CLIP - A Crytographic Language with Irritating Parentheses

Expressions and Data Types CSC 121 Spring 2015 Howard Rosenthal

Open Score Format PVG Digital Score Application Profile Specification. Version 1.0

Expressions and Data Types CSC 121 Fall 2015 Howard Rosenthal

10/24/2016. We Can Perform Any Computation with an FSM. ECE 120: Introduction to Computing. Find the Minimum Value Among Ten Integers

Roland Corporation US page 1 Education & Business Development Updated May 1, 2008 Exploring the HPi-7S

Laboratory Exercise #5

Yo : A Video Analytical Editing Programming Language

Standard MIDI File Format Dustin Caldwell

MainStage 2. Exploring MainStage

=About the Manuals. =About the Supplied CD-ROM

MintySynth Software Manual v. 4.2

Hand Controlled Audio Synthesizer

Exploring the FP-7. Roland Corporation US Exploring the FP-7 page 1

Audio involves developing a variety of techniques. In this short course, you will learn the necessary skills to do the following:

IDMT Transcription API Documentation

1.3 Surface Areas of Objects Made from Right Rectangular and Triangular Prisms

Midi Madness 3. Owner s Manual V3.0.2-RC1

CS 115 Lecture 4. More Python; testing software. Neil Moore

BoredGames Language Reference Manual A Language for Board Games. Brandon Kessler (bpk2107) and Kristen Wise (kew2132)

Transcription:

Sick Beets A Programming Language to Make Sick Beets plt-project-proposal.sb Stephen Edwards February 8, 2017 Manager: Courtney Wong (cw2844) Language Guru: Angel Yang (cy2389) System Architect: Kevin Shen (ks3206) Tester: Jin Peng (jjp2172) 1

Introduction Sick Beets is a programming language that allows users to compose music by generating.wav files. Sick Beets is inspired by the structured nature of music, which makes it easy to represent a composition piece by defining attributes of notes such as pitch or duration. Using Sick Beets, users can concatenate, overlay, and transpose a series of notes to digitally encode their compositions. Usage Sick Beets can be used to easily create music that involves multiple parts and instruments. Built in types allow the user to make interesting melodies and rhythms, and combine small sequences of notes to form a piece. Sick Beets can then output.wav files with the composed song. To create a piece in Sick Beets, the user can first create a tune, which is a series of notes played by a single instrument. Each note is represented by its letter value. Compositions are not created by specifying key signatures, but by specifying the keys that are being played (ie c#, b flat, a). Then, the user can create a phrase, which is the overlapping of one or more tunes. This means that one phrase can have different instruments playing at the same time. Phrases are then concatenated together to create a track. Tracks are then exported as.wav files. 2

Syntax Built-In Types Name Example Explanation int 8 An integer value string beets Simple text word note f#(-1) First letter represents pitch Second optional character represents sharp or flat Third optional integer designates shift in octaves notes [ c f#(-1) bb1 ] Sequence of notes duration hqi, q Letters designate whole, half, quarter notes, etc. Can be combined without spaces to produce various durations (whole: w, half: h, quarter: q, eighth: i etc.) rhythm tune [ q q q q q q h ] [ c e g ]:[ q q h ] Sequence of durations to be applied to each corresponding note The combination of a notes object with a rhythm object, joined with an : operator phrase {melody, bass} Overlapping of one or more tunes creates a phrase object. track instrument intro. chorus $kick, $clap, $violin, etc. A sequence of phrase objects creates a track object. Create a sequence using the. operator. The instrument specified for a tune. It is designated as an instrument with the $ symbol. Default is piano. Operators Operator Explanation = Assigns right operand value to left operand. = following another operator such as +,*,/,-,. performs the operation on the left & right operands and then assigns the resulting value to the left operand. + Adds values of left and right operands. 3

- Subtracts value of right operand from value of left operand. * Multiplies values of left and right operands. / Divides value of left operand by value of right operand. && Boolean operator AND. Boolean operator OR. : Applies the list of rhythms in the right operand to the notes specified in the left operand.. Concatenate the right operand to the left operand. Control Flow Control flow will include if-then-else statements, for loops, and while loops. The syntax will look like Python. An example is shown in our Example Code Usage section. Comments Single-line comments are designated by //. Multiline comments are enclosed by /* */. 4

Example Code Usage example.sb 1 notes = [ g f# e(-1) d e e ] 2 rhythms = [ q q q q i hqi ] 3 melody = notes : rhythms 4 kick = [ c c r c c r ] : [ q q h q q h ] $kick 5 clap = [ r c r c ] h $clap 6 chorus = {melody, kick, clap} 7 we_will_rock_you = chorus. chorus 8 export we_will_rock_you we_will_rock_you.wav 9 10 // iterating across instruments 11 song = {} 12 tune = [ c d e d ] q. [ c ] w 13 instruments = [ $guitar $saxophone $flute ] 14 for instrument in instruments: 15 song.= {tune instrument} 16 export song instruments.wav Lines 1 to 8 demonstrate the creation of a simple song, and the hierarchy of notes, rhythms, tunes, phrases, and tracks. Lines 1 and 2 specify the notes and the rhythms for 6 notes by using array-like structures. Notes are designated with the scale letters for an individual note (c, d, e, f, g, a, b), an optional # or b symbol to specify sharps or flats, and an optional octave offset. Rhythms are designated by reserved letters for each duration: w for whole, h for half, q for quarter, i for eighth, s for sixteenth, t for thirty-second. This design decision was based on how the music library, CFugue, defines a note s duration. Lines 3 to 5 create tunes in different manners, using different instruments. Line 3 combines a predefined series of pitches to a predefined series of rhythms using the : operator. If the number of pitches and rhythms don t match, an error will be thrown. A tune s default instrument is a piano. Line 4 merges a series of pitches to a series of rhythms and overrides the default instrument by adding the type of instrument after the notes and rhythms are specified. Line 5 takes in a series of pitches and one rhythm designation so it applies the rhythm to all the notes to create the tune. It also overrides the default instrument. Line 6 layers multiple tunes to create a phrase named chorus. Effectively, this plays the tunes simultaneously. Line 7 concatenates phrases into a track. Line 8 exports the track into a.wav file with the specified name. 5

Lines 10-16 show how a user can use a control flow statement to create a track and iterate through different instruments for a single tune. Line 10 demonstrates the syntax for comments. Line 11 creates a new phrase object, song. Line 12 creates a tune by concatenating two sets of notes and rhythms. Line 13 instantiates an array of instrument objects. Lines 14-15 concatenates the phrase objects {tune instrument} to the end of song. Each phrase object consists of the same tune, but with a different instrument used. Line 16 exports the song into a.wav file. 6