1st Edition

Making Music with Computers Creative Programming in Python

By Bill Manaris, Andrew R. Brown Copyright 2014
    502 Pages 63 B/W Illustrations
    by Chapman & Hall

    502 Pages
    by Chapman & Hall

    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.

    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.

    Biography

    Bill Manaris, Andrew R. Brown

    "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