- Book author
- Donald P. Pazel
This book takes the reader on a journey through music concepts in an organized approach that develops music essentials from the concepts of tone, pitch, and time, through notes, intervals, chords, and scores while at the same time interpreting these elements as software artifacts. Close attention is paid to the organization of and relationships amongst these concepts and their representation as Python classes and objects, to learn about music from a software design viewpoint.
The first part of the book focuses on software representation of the main elements found in music theory. Its objective is to provide direction to students on how to build a music software model from basic concepts and grow towards more complex concepts. Chapter by chapter, music concepts are introduced, and each is broken apart into related data properties and methods with the goal that by the end of this section, the reader will have developed a relatively complete library of music elements in software. The second part takes on the task of applying that foundation to the subject of “music transformations”. The focus is on localized transformations, that is, transformations isolated to a few measures. After a general introduction, the discussion includes topics of pitch assignment, key change, melodic inversion, melodic shaping, harmonic transcription, retrograde, melodic search and dilation.
This textbook is designed as a principal or supplemental source for computer science, software engineering, and programming courses. It can also be used as a main textbook for advanced computer music courses or electronic music courses. Computer music software professionals interested in learning how to model the complexities of music theory artifacts, or music students who want to learn advanced programming techniques in their domain will also find the book helpful.
Suppose you have an interest in programming computer music and need a starting point. Perhaps you have tried various music applications or tools, such as mixers, production systems, or notation systems, but feel a need to dig deeper, to be more hands-on and work with music fundamentals. Perhaps you have familiarity with concepts of musical notes, keys, chords, scores, and other music elements, but you don’t know where to begin in designing and programming about them, let alone translating them to MIDI®1 . You want to be able to put all those elements to work through programming, but you need direction to get to that next killer music app that you have in mind. This book guides you to that sweet spot of developing and using your programming skills to design and build systems about music.
However, this book does more than provide that kind of instruction. This book takes the reader on a journey through music concepts in an organized approach that develops music essentials, from the concepts of tone, pitch, and time, through notes, intervals, chords, and scores while at the same time interpreting these elements as software artifacts. As these many concepts are covered, we do so with close attention to the organization of and relationships amongst these concepts and reflect those as Python classes and objects, and so learn about music from a software design viewpoint. By this process, we approach this design in a logical and structured way.
The objective for doing this is to make music theory elements programmatically accessible. The resulting software should allow you to be able to code in the language of music, letting you to think primarily in musical concepts about your programming objectives, while leaving various music calculations, such as key or chord construction, transparent. That is the point behind the software discussion on music representation in the first part of this book.
The second part of the book is devoted to music transformation algorithms. These transforms comprise an interesting application of music representation for modifying music through key change, melodic reflection, and much more. This part of the book is more academic and has more of a research feel. However, the connection to programming prominently remains with discussions grounded in implementation details and software structure considerations. We hope the reader finds inspiration in this section for novel applications or advanced interests in the wide area of computer music research.