Preview only show first 10 pages with watermark. For full document please download

Synthadeus

   EMBED


Share

Transcript

Synthadeus Page 1            Synthadeus      Synthadeus Page 2  Software Requirements  Specification  for  Synthadeus  Version 1.0 approved  2015­10­19        Prepared by:  Anthony Allen   James Bellard Hunter Crossett   J. Everett Moser   Ronald Richardson II  Dan Robert    Justin Ross      Synthadeus Page 3  Table of Contents  Table of Contents Revision History 1. Introduction 1.1 1.2 1.3 1.4 1.5       Purpose   Document Conventions   Intended Audience and Reading Suggestions Product Scope   References   2. Overall Description 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Product Perspective   Product Functions   User Classes and Characteristics   Operating Environment   Design and Implementation Constraints User Documentation   Assumptions and Dependencies   3. External Interface Requirements 3.1 3.2 3.3 3.4       Performance Requirements   Safety Requirements   Security Requirements   Software Quality Attributes   Business Rules   6. Other Requirements Appendix A: Glossary Appendix B: Models Reference Appendix C: Digital Synthesis Overview     Audio Graph   Oscillators  Envelopes  Equalizers  Filters  Sample Output  Real­time Audio Playback  5. Other Nonfunctional Requirements 5.1 5.2 5.3 5.4 5.5   User Interfaces   Hardware Interfaces   Software Interfaces   Communications Interfaces   4. System Features 4.1 4.2 4.3 4.4 4.5 4.6 4.7           Synthadeus Page 4  Revision History  Name  James Bellard  J. Everett Moser  Hunter Crossett  Ronald Richardson II  Dan Robert  Dan Robert  J. Everett Moser  Justin Ross  J. Everett Moser            Date  10/16/15  10/16/15  10/18/15  10/18/15  10/18/15  10/19/15  10/19/15  10/19/15  10/19/15  Reason For Changes  Nonfucional reqs  System Requirements  Editing  Appendix A   Hardware interfaces  GUI  Formatting  Editing  Prioritization  Version  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  Synthadeus 1. Introduction  1.1 Purpose   Page 5  Synthadeus 1.0 is an easy­to­use software synthesizer intended for audio engineers, audio  producers, and music enthusiasts alike. The Software Requirements Specification document  provides details for the entire system, including the application’s audio engine features and the  graphical user interface​ . The document will also cover software dependencies as well as optional  hardware requirements.   1.2 Document Conventions  Words that are ​ bolded​  are described in further detail in ​ Appendix A​ . Additionally, for more  information about audio synthesis in general, please see ​ Appendix C​ . All diagrams can be  referenced from ​ Appendix B​ . All references to together sections will be directly stated, and the  specific section letter or number is ​ bolded​ .   1.3 Intended Audience and Reading Suggestions  This document is designed for project managers, marketing staff, and, to a lesser extent,  users. The document is broken up into two parts, requirements and relevant information.  Requirements will be introduced throughout the major sections of the document while relevant  information can be found in the appendices at the end of the document.     This document assumes the reader is knowledgeable about the basics of audio synthesis.  For those who are not familiar with audio synthesis, start with ​ Appendix C​ . This document uses  several terms relating to digital signal processing and audio synthesis which the reader may not be  familiar with. Many of these terms will be defined in ​ Appendix A​ , and the section is designed as a  reference while reading the document.      For information about the project in general, please see ​ Section 2 ​ and ​ Section 3​ . These  sections give a broad overview about what the product is and what the product does. For those  readers interested in the graphical user interface and other aspects relating to the visual aspects of  the project and how the user experience operates, see ​ Section 3​  and ​ Section 4.1​ . These sections  will give an overview of how the product should look and what each visual item represents. For  those readers interested in the individual synthesis features of the project, please see ​ Section 3.2  and ​ Section 4​ . These sections specifically describe features that will be included in the application.  For requirements not covered in this document, please see​  Section 6​ .   1.4 Product Scope  Synthadeus is a software synthesizer designed to allow users to easily create and modify  sounds. Sounds (and their modifications) are represented as ​ nodes​ , which can be linked together  to be altered. ​ Nodes​  can be linked many­many allowing easy modifications to entire groups.    Synthadeus Page 6  Nodes​  may also represent effects which may affect sounds. These effects can be used along with  the sounds to create the final audio ​ sample​ .     Synthadeus is powerful and easy to use. Beginners will find creating and adjusting sounds  to be easy and intuitive, while experts will be able to create a wide variety of sounds and fine tune  them as they see fit. For a more detailed description of user classes, please see ​ Section 2.3​ .     The purpose of Synthadeus is to supplement the audio producer or musician’s sound  creation library. Synthadeus can be used to render simple or complex sounds, rendering audio files  which can be loaded into a​  digital audio workstation​  and used in other parts of the audio  professional’s work flow.     1.5 ● ● ●       References  For more information about this project, please view ​ https://everettmoser.me/synthesizer​ .   For more information about digital signal processing, please refer to ​ Signals and Systems  by Alan V.   For more information about ​ DirectX​ , please see the Microsoft Documentation found at  https://msdn.microsoft.com/en­us/library/windows/desktop/ff476080%28v=vs.85%29.aspx?f =255&MSPPError=­2147217396​ .     Synthadeus 2. Overall Description  2.1 Product Perspective  Page 7  This product is the first of its kind. It will enter the space of music creation software as an  intermediary between the artist and a ​ digital audio workstation​ . Many software packages in this  realm emulate a specific synthesizer or method of synthesis, sticking as closely to tradition as it  can. This is a new approach to creating seemingly endless sounds and instruments. This new take  on audio synthesis will allow users to have more control over the synthesis process and ultimately  come closer to the sound they desire to create. This product is being designed to supplement work  already done with ​ digital audio workstations​ , and it should add to the existing work flow audio  producers or artists already have in place. For more information about audio synthesis, see  Appendix C​ .        Synthadeus 2.2 Page 8  Product Functions        The software application needs to take the user’s ideas and translate them into actual sound. To  do this, the software package must provide:  ● Oscillators  ● Envelopes  ● Filters  ● Equalization  Each of these takes input and generates output, ultimately producing a sound from the user’s  speakers. Each of these output can also feed input for other components as well. In addition, the  system needs a real­time audio playback system so the user can listen to the sounds he/she  creates. Finally, the user must be able to export the sound as a ​ .wav file​  so they can import it into  a ​ digital audio workstation​  and utilize it in audio production.   2.3 User Classes and Characteristics  There are two kinds of users anticipated to use the system: enthusiasts and professionals.  Enthusiasts shall be classified as users who use this product less than 4 days within a given week  time­span. Professionals shall be classified as users who use this product more than 4 days within  a given week time­span. The most important user class is the professional, and each recruitment  described in this document shall outline this as a software application for a professional.  Enthusiasts are not differentiated from professionals in terms of product features. This project may  be forked in the future to accommodate both user types if feedback from both groups yields    Synthadeus Page 9  different feature requests. The main philosophy used when creating this application should be  “​ Easy enough for an enthusiast, powerful enough for a professional.​ ”  2.4 Operating Environment      This product must operate in a PC running Window 7 SP1, Windows 8/8.1, or Windows 10  operating system. The system is compiled as an x86 program, and it is dependent on Windows  binaries as well as ​ DirectX​  binaries being present on the system. The application expects a ​ GPU  to be present on the system, however, the application must run on hardware configurations without  it. The hardware is expected to have, at minimum, a 2.0 GHz dual­core processor, 4 GB or RAM,  and a NVIDIA GT 620.   2.5 Design and Implementation Constraints  The real­time audio engine must be able to achieve uninterpretable playback on a standard  PC, with  minimum specifications described above. All graphical and audio operations must have a  moderate level of efficiency. The system is designed to crash on failure, regardless if the failure is  recoverable. The developers will use Incremental Implementations to manage the priorities. The  priorities in order of importance to the end user are incremented as follows:     Phase 1    ● Oscillator ​ ­ ​ Section 4.2  ● Audio Graph​  ­ ​ Section 4.1  ● Playback ​ ­ ​ Section 4.7    Phase 2    ● Sample Export ­ Section 4.6  ● More Audio Nodes ­ Section 4.3, Section 4.6  ● Equalization ­ Section 4.4    Phase 3  ● Filter ­ Section 4.5  ● Envelopes ­ Section 4.3  ● GUI Enhancements ­ Section 3.1    Synthadeus 2.6 Page 10  User Documentation  The end­user documentation provided with Synthadeus will include a local copy of a  manual written as an web page. This will include descriptions of all product functionality and  provide basic How­To’s for common tasks. To supplement the How­To’s, various videos will be  available via the YouTube streaming service which will also guide the users through the same list  of How­To’s. These videos will not be provided at launch, but instead will be released over the  course of time as a tutorial series.   2.7 Assumptions and Dependencies  It is assumed the system has ​ DirectX ​ installed for the proper binaries required for the 2D  graphics component installed prior to the installation of Synthadeus. Synthadeus will not attempt to  check for the presence of these binaries or prompt the user to install them prior to or during use of  the application.     3. External Interface Requirements  3.1 User Interfaces  Graphical User Interface  This is the Synthadeus graphical user interface. There are several features needed to  create the interface, but the features will be implemented progressively each time the product  iterates.     Synthadeus Page 11  Central graph display:   ● Allows selecting, deleting, copying, and making connections between ​ nodes​ .  ● Allows searching for ​ nodes​  in current project by name.  ● This is the main feature of the ​ GUI​ .     Project folder sidebar:   ● Allows quick access to a listing of recent projects and their ​ nodes​ .  ● Nodes​  can be pulled from this sidebar into the central graph display.  ● This is a relatively low priority feature, and it will probably be implemented in a future  release of Synthadeus.        Node sidebar:   ● Allows editing the details/attributes of the selected ​ node​ .  ● Can create/delete ​ nodes​  from this sidebar.  ● This is a main feature of Synthadeus and it has a high priority.     Tab bar:  ● Allows switching between multiple projects open at the same time.  ● This is a relatively low priority feature, and it will probably be implemented in a future  release of Synthadeus.       Synthadeus Page 12  File menu:  ● Allows creating, opening, and saving projects.  ● This is a main feature of Synthadeus and it has a high priority.    Edit menu:  ● Allows undoing or redoing recent changes.  ● This is a relatively low priority feature, and it will probably be implemented in a future  release of Synthadeus.    View menu:  ● Allows menu/sidebar placement settings to be changed.  ● Can change central graph display zoom setting.  ● This is a relatively low priority feature, and it will probably be implemented in a future  release of Synthadeus.    Help menu:  ● Directs user to basic application functions tutorial.  ● This is a relatively low priority feature, and it will probably be implemented in a future  release of Synthadeus.    Synthadeus’s graph­based music building ​ GUI​  is based on the Unreal Engine 4 game  development editor (shown below).          Synthadeus 3.2 Page 13  Hardware Interfaces  Input:  Synthadeus takes in data from various input devices in ​ Musical Instrument Digital  Interface (MIDI) ​ standard. These devices, or controllers, include:  ● Music Sequencers  ● Instrument Controllers  ● Fingerboards  ● Guitar Synthesizers  ● Wind Controllers  ● Electric Drums  As long as the device follows ​ MIDI​  protocol, it can be used to input data into the  Synthadeus application. Each of these controllers can add extra functionality to this  synthesizer and help create a broader range of unique sounds. However, they are not  required. In fact, a vast array of musical sounds can be created using only a basic keyboard  as input. That is because Synthadeus allows a keyboard to provide similar functionality to  that of a piano.     Output:  Synthadeus outputs graphical data to the monitor and audio data to the  speakers/headphones.    Graphical data is processed by the ​ GPU​  and then rendered onto the screen. 2­D geometry  rendering tasks are handled with the help of Microsoft’s Direct2D API, while text rendering  tasks are handled with the help of Microsoft’s DirectWrite API.  Audio data is handled with the help of Microsoft’s Windows Core Audio API’s.         Synthadeus 4. Page 14  System Features  This project has a few subsystems which will be used to build into the following list. At its  core, the application allows the user to create, modify, and manage sounds through a graphical  layout of the synthesis process. Underneath, the application uses a robust, custom­built audio  engine and an efficient 2D rendering component.   4.1 Audio Graph  Users should be able to design and refine their sound via a sound ​ graph​ . This is essentially  a bunch of visual ​ nodes​  the user can link inputs and outputs together to create a synthesized  sound.   4.1.1 Description and Priority  This is the main feature the user will interact with. The rest of the features of the  product will revolve around making this a very unique way to interface with synthesized  sounds. As such, the whole focus of the project is to get this aspect right. For more  information about audio synthesis, see ​ Appendix C​ .   4.1.2 Stimulus/Response Sequences  The graph should visually represent nodes and links on the screen. The user is  allowed to click and drag ​ nodes​  around the screen, modify values by adjusting components  on the ​ nodes​ , create or break links, and move the viewing area round the ​ graph​  area with  the mouse and arrow keys.   4.1.3 Functional Requirements  The ​ graph​  needs to visually keep track of the audio flow within the application.  Additionally, users must be able to modify the ​ graph​ .     ● AGR­REQ­1: Allow the user to create ​ graph nodes​  to represent various  component.    ● AGR­REQ­2: Allow the users to move the ​ graph​  ​ nodes​  around the viewing area.   ● AGR­REQ­3: Allow the users to connect ​ nodes​  together with the appropriate  outputs only feeding the correct inputs.   ● AGR­REQ­4: Allow the user to break links between ​ nodes​ .  ● AGR­REQ­5: Allow the user to remove ​ nodes​  from the ​ graph​ .   4.2 Oscillators  This is feature every synthesizer must have, and it is required to produce sound.   4.2.1 Description and Priority  For the definition about what an ​ oscillator​  is, see ​ Appendix A​ . The user should be  able to create ​ oscillators​  as they wish, and they application should support up to 10  different ​ oscillators​ , each with their own properties and inputs.     Synthadeus 4.2.2 Page 15  Stimulus/Response Sequences  Users should be able to create ​ oscillators​  using the ​ GUI​  interface. Once created,  the various properties should be alterable within the main client window. The defined  waveform​  should be shown graphically. Upon input from an audio input device, the  oscillator should generate audio and pass it to the next ​ node​  in the ​ Synthesizer Graph​ .    4.2.3 Functional Requirements  An ​ oscillator​  has a few parameters which the user may alter. These are ​ volume​ ,  panning​ , ​ frequency​ , and ​ waveform​ . Each of these input values must be provided by a  proper input ​ node​ , and the ​ node​  should refuse connections from invalid input sources.     ● OSC­REQ­1: Oscillators​  will accept constant input into its input parameters.   ● OSC­REQ­2: Oscillators​  will output a ​ waveform​  output.   ● OSC­REQ­3: Oscillators​  will show a graphical representation of its ​ waveform​ .  4.3 Envelopes  This is a common synthesizer feature, and it helps give the user more control over the  sound they desire to create.   4.3.1 Description and Priority  For the definition about what an ​ envelope​  is, see ​ Appendix A​ . The user should be  able to create ​ envelopes​  as they wish, and they application should support up to 10  different ​ envelopes​ , each with their own properties and inputs.   4.3.2 Stimulus/Response Sequences  Users should be able to create ​ envelopes​  using the ​ GUI​  interface. Once created,  the various properties should be alterable within the main client window. The defined  function should be shown graphically. Upon input from an audio input device, the ​ envelope  should generate the appropriate value with respect to time and pass it to the next ​ node​  in  the synthesizer ​ graph​ .    4.3.3 Functional Requirements  An ​ envelope​  has a few parameters which the user may alter. These are ​ attack​ ,  decay​ , ​ sustain​ , and ​ release​ . (​ ADSR​ ) Each of these input values must be provided by a  proper input ​ node​ , and the ​ node​  should refuse connections from invalid input sources.     ● ENV­REQ­1: Envelopes​  will accept constant input into its input parameters.   ● ENV­REQ­2: Envelopes​  will output a piecewise­function­esque output.   ● ENV­REQ­3: Envelopes​  will show a graphical representation of its value with  respect to time.  4.4 Equalization  This is a common audio feature found in many audio playback software packages. It helps  give the user more control over the sound they desire to create.     Synthadeus 4.4.1 Page 16  Description and Priority  For the definition about what an ​ equalizer ​ is, see ​ Appendix A​ . The user should be  able to create ​ equalization​  filters as they wish, and they application should support up to 10  different ​ equalizers​ , each with their own properties and inputs.   4.4.2 Stimulus/Response Sequences  Users should be able to create ​ equalizers​  using the ​ GUI​  interface. Once created,  the various properties should be alterable within the main client window. The defined  function should be shown graphically. Upon input from an audio input device, the ​ equalizer  should generate the appropriate value with respect to time and pass it to the next ​ node​  in  the synthesizer​  graph​ .  ​ Equalizers​  will operate on two frequency bands at minimum.   4.4.3 Functional Requirements  An ​ equalizer​  has a two parameters per frequency band which the user may alter.  These are ​ frequency​ , and value. Each of these input values must be provided by a proper  input ​ node​ , and the ​ node​  should refuse connections from invalid input sources.     ● EQL­REQ­1: Equalizers​  will accept constant input into its input parameters.   ● EQL­REQ­2: Equalizers​  will output a ​ waveform​ .   ● EQL­REQ­3: The ​ equalizer​  will have a graphical display of its values in the  frequency​  domain.  4.5 Filters  This is a common synthesizer feature, and it helps give the user more control over the  sound they desire to create.   4.5.1 Description and Priority  For the definition about what an ​ filter ​ is, see Appendix A. The user should be able  to create ​ filters​  as they wish, and they application should support up to 10 different ​ filters​ ,  each with their own properties and inputs.   4.5.2 Stimulus/Response Sequences  Users should be able to create ​ filters​  using the ​ GUI​  interface. Once created, the  various properties should be alterable within the main client window. The defined function  should be shown graphically. Upon input from an audio input device, the ​ filter​  should  generate the appropriate value with respect to time and pass it to the next node in the  synthesizer ​ graph​ .  Filters may either be high­pass or low­pass ​ filters​ .   4.5.3 Functional Requirements  An ​ filter​  has a two parameters which the user may alter. These are cutoff  frequency​ , and ​ resonance​ . Each of these input values must be provided by a proper input  node​ , and the ​ node​  should refuse connections from invalid input sources.     ● FIL­REQ­1: Filters​  will accept constant input into its input parameters.   ● FIL­REQ­2: Filters​  will output a ​ waveform​ .     Synthadeus Page 17  ● 4.6 FIL­REQ­3: domain.   The ​ filter​  will have a graphical display of its values in the ​ frequency  Sample Output  The system needs to transition from an Audio Graph to an actual audio clip ​ sample ​ so the  user may use the sounds created in the application in other parts of the audio production process.   4.6.1 Description and Priority  Not only should the user be able to construct sounds through the Audio Graph, the  user should also be able to export these sounds as a ​ .wav​  ​ file​ .   4.6.2 Stimulus/Response Sequences  User should be able to bring up a dialog box. This box should then prompt the user  to select a file path and a file name. After that occurs, the program will create a ​ .wav file  with at least 2 seconds of audio.   4.6.3 Functional Requirements  The output must accept file name and path as input parameters and write a ​ .wav  file​  to the user’s chosen location. If the application does not have privileges to write to the  given location, the application will not save the file.     ● SMP­REQ­1: The user must be able to specify file name and path.  ● SMP­REQ­2: The file must contain at least two seconds of audio data.   ● SMP­REQ­3: The file format will always be ​ .wav​ .   4.7 Real­time Audio Playback  The system can preview the sound the user creates at various pitches.   4.7.1 Description and Priority  The application should allow a way to preview the sound. The application should respond to  keyboard events and/or ​ MIDI​  events to produce sound at specific frequencies.   4.7.2 Stimulus/Response Sequences  Upon a key press or a ​ MIDI ​ event, the application should produce the appropriate playback  based on the key ​ frequency​  from the input. Upon key release, the should stop  playback. During playback, there should be some animation of the graphics  representing oscillators, ​ envelopes​ , ​ filters​ , and ​ equalizers​ .   4.7.3 Functional Requirements  The system should     ● RTP­REQ­1: The playback should correspond to key presses and/or ​ MIDI​  events.  ● RTP­REQ­2: The key or ​ MIDI​  event should correspond to a note used as an input  parameter to the Audio Graph.   ● RTP­REQ­3: The system should have a response time less than 50 ms.       Synthadeus Page 18  5. Other Nonfunctional Requirements  5.1 Performance Requirements  5.1.1 Description and Priority  These are the ​ minimal ​ performance requirements. After doing a bit of research, we found  that these specs are the minimum for the what humans what humans normally require for audio  and video. However, contrary to the popular myth, humans can perceive higher than 30 FPS, and  milliseconds also make a difference. So, the end goal is to actually get response times as low as  possible, and (less importantly) graphic speed as high as possible. The audio should run as close  to 44100 Hz as possible, as this is considered optimal.  5.1.2 Nonfunctional Requirements  ● ● ● ● 5.2 PFR­REQ­1: 2D Graphics will run at at least 30 ​ FPS​ .   PFR­REQ­2: Audio will run smoothly at a 44100 ​ Hz sample rate​ .   PFR­REQ­3: Audio will be produced within 50 milliseconds of keyboard input so  that there is no audible input lag for someone playing music using Synthadeus.   PFR­REQ­4: Graphics will display on the monitor within 100 milliseconds of user  input, so that there will be no production lag for someone using Synthadeus’s GUI  features.  Safety Requirements  5.2.1 Description and Priority  Although safety is not an area of concern with our product, there are some minimal  requirements (which should be requirements for every piece of software) that must be  met.  5.2.2 Nonfunctional Requirements  ● ● 5.3 SFT­REQ­1:  The software should not cause any memory leaks (it should not write   to memory it does not own).   SFT­REQ­2: Operations should not overexert the hardware and cause hardware  failures.   Security Requirements  There are no anticipated security requirements for this project.   5.4 Software Quality Attributes  These qualities should be captured if the functional requirements are fulfilled. We will use  specific hardware to test it, because this is hardware that we have (testable) and because the  Lenovo ThinkPad is affordable.     Synthadeus Page 19    5.4.1 Description and Priority  Priority of these qualities are in this order: reusability, customizability, portability.  5.5.2 Requirements  ● SQA­REQ­1:  Synthadeus will be easy to customize. To achieve this, we allow  users to   craft their own sounds using Synthadeus’s ​ GUI​ .  ● SQA­REQ­2:  Synthadeus will be reusable. The user can save and load crafted with   Synthadeus’s GUI.  ● SQA­REQ­3:  Synthadeus must be portable It must be able to run on a Lenovo   ThinkPad laptop with Windows 7 installed.    SQA­REQ­3: Synthadeus must be portable. We will use the AKAI MPK keyboard to  test it (along with the laptop).      ● 5.5 Business Rules  5.5.1 Description and Priority  Synthadeus is freely available for download on GitHub. Anyone who downloads Synthadeus  will be free to use it to synthesize whatever music they like. Anyone will be free to  modify the source code of Synthadeus. Anyone will be free to redistribute  Synthadeus.    The creators of Synthadeus take no responsibility or liability for any damages including, but  not limited to:indirect or consequential damages or any damages arising from use or  loss of use, data, or profits, or other action, arising out of, or in connection with  Synthadeus.    All music created with Synthadeus shall not be associated with the creators of Synthadeus  and rights to the content shall remain under the user provided the user has no other  business restrictions to what he/she creates.   5.5.2 Requirements  ● BSR­REQ­1: An info document will be included with Synthadeus, which will be a  copy of our business rules above.  ● BSR­REQ­1: Synthandeus will be freely available to download on GitHub.    6. Other Requirements   Our project is self contained. Synthadeus does not have any need for databases,  international requirements, legal requirements, reuse objectives, or anything that needs to be    Synthadeus Page 20  otherwise stated.  Unless a requirement has been specifically stated, it may be left up to the  judgement of the development team as issues arise.           Synthadeus Page 21    Appendix A: Glossary    Analogue Synthesizer ­​  Combines voltage controlled circuits such as filters, oscillators, and etc.  to generate and shape sound electronically.     ADSR ­ ​ A four letter acronym which stands for attack, decay, sustain, release. These are the four  parameters which control an envelope.     Attack ­​  The time it takes for a note to reach its maximum level.   ∞  Convolutions​  ­ Function multiplication. It is defined as  ∫ f (t − s)g(s) ds . This operation applies a  −∞ filter to a waveform.     Cutoff Frequency ­​  The frequency either above or below where the output is reduced to a  specified level.    Decay ­ ​ The time it takes for a note to go from the maximum level to the sustain level.    Digital Audio Workstation (DAW) ­ ​ The main software program used by professionals to make  music.     Digital Synthesizer ­ ​ Signal flow is digital, containing a string of zeros and ones fed from one  algorithm to another to create sound.     DirectX ­ ​ An API that consists of predefined functions and commands for rendering graphics with  the GPU.     Equalizer ­ ​ A component used to adjust the tone or frequency response of an audio system.     Envelope ­​  The change of intensity of a sound over time. It is controlled by four parameters:  attack, decay, sustain, and release.     Filter ­​  Circuits that operate on a frequency that selectively filters one frequency or range of  frequencies out of a mix of different frequencies.     Frequency ­​  The measurement of how often a given event repeats in time. This is the amount of  time it takes to complete a full cycle of a waveform.     Frequency Modulation ­​  A method of synthesis such that audio is created by chaining together  several operators, which contain an oscillators, an envelope, and a filter.     Frames Per Second (FPS) ­​  This is a unit that measures the performance of a device’s display.     Graphics Processing Unit (GPU) ­​  Graphics processing unit. A single chip processor that is used  for computing 3D functions.     Synthadeus Page 22    Graphical User Interface (GUI) ​ ­ Includes graphical elements such as windows, icons, and  buttons.     Music Instrument Digial Interface (MIDI) ­​  The protocol designed to record and play back music  on digital synthesizers.     Node ​ ­ A vertex in the audio graph specifying an operation which must be performed to audio.     Oscillator ­​  A device that generates oscillating electric currents or voltages. In the digital world, it  generates discrete samples to represent these electric currents or voltages.      Panning ­​  The spread of a monaural signal in a stereo or multi­channel sound field.     Pitch ­​  Determines the key or keynote of a sound or melody.     Release ­​  The time it takes for a note to fall from the sustain level to zero when released. Zero  represents silence.    Resonance ­​  A parameter of filters relating to energy loss for a given signal. It is also known as the  Q factor.     Sample ­​  A digital representation of an analog signal.     Sample Rate ­ ​ Measured in hertz, it is the rate at which samples of an analog signal are taken to  be converted into digital form.     Subtractive Synthesis ­ ​ A simple chain of an oscillator running through a filter which is sent to an  amplifier for gain staging and ADSR control.     Sustain ­ ​ The volume level while a note is held after the initial attack and decay.     Waveform Audio File Format (.wav file) ­ ​ A wave file, containing raw audio data and the file’s  number of tracks (mono or stereo), sample rate, and bit depth.     Waveform ­​  A representation of how a signal changes over time.           Synthadeus Page 23  Appendix B: Models Reference  The following have been used within the document at an earlier point in time. The figures are  provided here again for reference along with the section number on which they appear.    Audio Flow Diagram (Section 2.2)    Application Architecture Diagram (Section 2.1)    Synthadeus Page 24      Wave Construction Diagram (Appendix C)            Synthadeus Page 25  Appendix C: Digital Synthesis Overview  One of the key elements of modern music in the 21st century is the Synthesizer. Synthesis  is the process of generating a waveform for a desired sound. There are several different  synthesizers, but they can generalized into larger categories for simplicity. Audio synthesis, at its  very basics, is simply adding the right sine functions and ​ convolutions ​ together in sequence to  produce a waveform between 20Hz and 20KHz. These waveforms are sent to your speakers or  headphones to produce audible noise.     There are two kinds of overall groups of synthesizers, Analogue synthesizers, or hardware  synthesizers, and Digital synthesizers, or software synthesizers. Both undergo the same  operations in the same sequence, but analogue synthesizers rely on electrical components to  compute the waveform function while digital synthesizers generate the waveform in software.    Synthesizers also have two main methods of generating waveforms: ​ Subtractive  Synthesis ​ and ​ Frequency Modulation​ . Subtractive synthesis begins with a waveform that has  lots of activity within the frequency spectrum and uses filters to remove the non­desired portions of  the sound. Frequency modulation takes wave operators, or a string of synthesis components, and  adds a few together to create the desired sound.    There are typically three main components in a synthesizer: the Oscillator, the Filter, and  the Envelope. Each of these controls specific aspects of the sound and are crucial to the  production of the correct waveform. An oscillator generates a basic waveform for manipulation. A  filter takes a waveform and raises or lowers specific frequencies. An envelope is a basic function to  control the different wave parameters.    There are three properties of a audio wave: Pitch, Volume, and Panning. These deal with  how sound is hear within the listener's ear. Pitch deals with how high or low a wave sounds, and it  is correlated with the frequency of the wave. Volume is how loud or soft a wave sounds, and it is  correlated with the amplitude of the wave. Panning deals with spatially where the sound is    Synthadeus Page 26  presumed to be heard from, and it correlates to how much of the wave is sent to the left and right  speaker to be heard.                                                                  S​ noop ​ D​ ogg ​ APPROVED