Skip to Content

Making Music with Computers

Creative Programming in Python

By Bill Manaris, Andrew R. Brown

Chapman and Hall/CRC – 2014 – 472 pages

Series: Chapman & Hall/CRC Textbooks in Computing

Purchasing Options:

  • Pre-Order NowPaperback: $59.95
    978-1-43-986791-4
    May 23rd 2014
    Available for pre-order

Description

Teach Your Students How to Use Computing to Explore Powerful and Creative Ideas

In the twenty-first century, computers have become indispensable in music making, distribution, performance, and consumption. Making Music with Computers: Creative Programming in Python introduces important concepts and skills necessary to generate music with computers. It interweaves computing pedagogy with musical concepts and creative activities, showing students how to integrate the creativity and design of the arts with the mathematical rigor and formality of computer science.

The book provides an introduction to creative software development in the Python programming language. It uses innovative music-creation activities to illustrate introductory computer programming concepts, including data types, algorithms, operators, iteration, lists, functions, and classes. The authors also cover GUIs, event-driven programming, big data, sonification, MIDI programming, client–server programming, recursion, fractals, and complex system dynamics.

Requiring minimal musical or programming experience, the text is designed for courses in introductory computer science and computing in the arts. It helps students learn computer programming in a creative context and understand how to build computer music applications. Also suitable for self-study, the book shows musicians and digital music enthusiasts how to write music software and create algorithmic music compositions.

Web Resource

A supplementary website (http://jythonMusic.org) provides a music library and other software resources used in the text. The music library is an extension of the jMusic library and incorporates other cross-platform programming tools. The website also offers example course and associated media resources.

Reviews

"Bill Manaris and Andrew Brown have created this marvelous book that will engage and inspire you to learn more about the science and art of creating music through computation. … Bill and Andrew offer an accessible path into a wonderful world that is both as modern as your new laptop and as ancient as Plato. In that world of music and mathematics, they construct a sandbox of computational tools. They encourage you to create, compose music, and play with patterns and data."

—From the Foreword by Mark Guzdial, Georgia Institute of Technology

"Making Music with Computers by Bill Manaris and Andrew Brown is a perfect accompaniment to programming music with the computer language Python. Written clearly, succinctly, and including many appropriate diagrams, this book is a must for anyone desiring to create their own applications for composing and making music. First rate in every way."

—David Cope, Computer Composition Pioneer and Professor Emeritus, Music Department, University of California, Santa Cruz

"This is an impressive text. Its material is accessible to a reader who may know little to nothing about either music or computing/programming. The text has the characteristics of an agile, graceful delivery, quite a breadth of topics, and numerous apt, helpful, and often imaginative example programs.

Early chapters clearly and economically explain the elements of music, its terminology and notation, and the elements of compositional structure (notes, phrases, parts, and scores). Evidence of the musical reach of the book is given by the authors’ précis to the middle chapter: ‘Randomness and creativity, indeterminism, serialism, stochastic music, and … generative music.’ Eventually they exemplify such topics as sonification, as put to the purpose of giving an alternative representation of a large data set, also interactive music generation, and the creation of musical compositions as inspired by natural phenomena such as the flocking behavior of birds, or inspired by mathematics, such as fractals.

The authors use the programming language Jython with a focus on music; they provide the software libraries to do this via downloads. The explication of Jython is effortless, even breezy, also unfussy, but with a thoroughness that positions the reader well to start wedding the computer to one’s musical interests. By the end of the text the authors have discussed the use of functions, software design principles, recursion, GUIs and event-driven programming, and the defining of classes.

Special mention should be given to the book’s examples. There are numerous, tidy, complete, and working Jython programs throughout the text, which the reader can duplicate and run. They serve both as exemplars of Jython programming, which the reader can learn from and emulate as well as be inspirations for composing one’s own computer-generated music."

—William A. Greene, Professor Emeritus, Computer Science Department, University of New Orleans

Contents

Introduction and History

Overview

Connecting Music, Nature, and Number

Computer Music History

Algorithms and Programming

The Computer as a Musical Instrument

Software Used in This Book

Building Blocks

Overview

Music Is Sound and …

Notes

Rests

Variables and Assignment

Numbers

Input and Output

Data Types

Organization and Data

Overview

Musical Organization

Phrases

Python Lists

Adding Notes with Lists

Case Study: Ludwig van Beethoven—"Für Elise"

Musical Scales

Musical Instruments

Setting the Instrument

Case Study: Harold Faltermeyer—"Axel F"

Chords

Parts

Scores

A Complete Example

MIDI Drums and Percussive Sounds

Top -Down Design

Input and Output

Transformation and Process

Overview

Gestures, Emotion, and Musical Structure

Minimalism

Modifying Musical Material (Mod Functions)

Musical Canon

Viewing Music

The Software Development Process

Case Study: Computer-Aided Music Composition

Iteration and Lists

Overview

Iteration

Case Study: Arpeggiators

Python List Operations

Iterative Musical Processes

DNA Music

Randomness and Choices

Overview

Randomness and Creativity

Indeterminism and Serialism

Python Random Functions

Stochastic Music

Harnessing (or Sieving) Randomness

Selection

Python Relational Operators

Python Boolean Values

Python Logical Operators

Sonification and Big Data

Overview

Data Sonification

Case Study: Kepler—"Harmonies of the World" (1619)

Python Strings

File Input and Output

Python while Loop

Big Data

Python Functions

Image Sonification

Interactive Musical Instruments

Overview

Building Musical Instruments

Graphical User Interfaces

Case Study: Random Circles

GUI Widgets

Case Study: A Simple Musical Instrument

Play Class

Case Study: An Audio Instrument for Continuous Pitch

AudioSample Class

MidiSequence Class

Paper Prototyping

A Simple Methodology for Developing GUI s

Event Handling

Case Study: A Virtual Piano

Scheduling Future Events

Making Connections

Overview

MIDI Devices—Connecting to Pianos, Guitars, etc.

OSC Devices—Connecting to Smartphones, Tablets, etc.

Music, Number, and Nature

Overview

Origins and Representations

Case Study: Music from Math Curves

Math Library

Case Study: The Harmonograph

Case Study: Kepler’s Harmony of the World, No. 2

Exploring Powerful Ideas

Overview

Fractals and Recursion

Fibonacci Numbers and the Golden Ratio

Python Classes

Case Study: The Note Class

Case Study: A Slider Control

Animation

Cymatics

References

Appendix A: MIDI Constants

Appendix B: Music Library Functions

Appendix C: GUI Library Functions

Appendix D: Other Functions

A Summary appears at the end of each chapter.

Name: Making Music with Computers: Creative Programming in Python (Paperback)Chapman and Hall/CRC 
Description: By Bill Manaris, Andrew R. Brown. Teach Your Students How to Use Computing to Explore Powerful and Creative Ideas In the twenty-first century, computers have become indispensable in music making, distribution, performance, and consumption. Making Music with Computers: Creative...
Categories: Programming & Programming Languages, Algorithms & Complexity, Computation