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.
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.
Table of Contents
Introduction and History. Building Blocks. Organization and Data. Transformation and Process. Iteration and Lists. Randomness and Choices. Sonification and Big Data. Interactive Musical Instruments. Making Connections. Music, Number, and Nature. Exploring Powerful Ideas. References. Appendices.
"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