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
|