Setting Up Your Work Environment
Setup View in Browser for Windows
Accessing the Chrome Developer Tools
Troubleshooting Problems and Getting Help
2. Getting Started with JavaScript and the Web Audio API
Documenting Your Code with Comments
Exploring Variables with an Oscillator
How to Determine the Data Type of a Variable
Examples of Arithmetic Operators
Greater Than and Less Than Operators
Greater Than or Equal to Operator
Less Than or Equal to Operator
4. Conditional Statements and Loops
When to Use for Loops and When to Use while Loops
Abstracting Oscillator Playback
Why You Should Always Declare Your Variables with var
How Hoisting Affects Functions
Working with JavaScript’s Built-In Callback Functions
When to Use Objects Rather Than Arrays
How to Check If an Object Has Access to a Particular Property or Method
7. Node Graphs and Oscillators
How to Stop Oscillators and Restart Them
8. Using HTML and CSS to Build User Interfaces
Explanation of the HTML Template
Removing List Element Bullet Points
Font Size, Style (Type), and Color
Centering Block-Level Elements
9. DOM Programming with JavaScript
How Does JavaScript Communicate with the DOM?
How to Trigger an Oscillator by Clicking a Button
Programming the Frequency Slider
Changing the Frequency in Real Time
Completed Code with Waveform Selection
Giving an Outline to the Selected Waveform Type
10. Simplifying DOM Programming with JQuery
Storing DOM Selectors as Variables
JQuery/JavaScript to Change a Single Property
JQuery/JavaScript to Change Multiple Properties
Refactoring the Oscillator Player to Use JQuery
Setting Up the Event Listener for the User-Selected List Element
Modifying the Code in setInterval
setInterval Method without JQuery
setInterval Method with JQuery
11. Loading and Playing Audio Files
The Two Steps to Loading an Audio File
A Word on Audio File Type Compatibility
Synchronous versus Asynchronous Code Execution
Processing the Audio Buffer with the Node Graph
12. Factories and Constructors
JavaScript and the Concept of Class
Constructors and the new Keyword
Adding Methods to Constructors
The Prototype Object and the Prototype Property
Why Do Constructors Exist If You Can Do the Same Thing with Factories?
13. Abstracting the File Loader
Thinking about Code Abstraction
14. The Node Graph and Working with Effects
How to Think About the Node Graph
The Placement of Nodes Is Up to You
How to Determine the Nodes You Need to Create the Effect You Want
Some Effects Require Development Work
Where to Get Pre-Recorded Impulse Response Files
Controlling the Amount of Reverberation
17. Stereo Panning, Channel Splitting, and Merging
Merging All Channels of a Multichannel File into a Single Mono Channel
Using the Merger and Splitter Nodes Together
Update Your Audio Loader Library
Changing Audio Parameters over Time
The exponentialRampToValueAtTime Method
The linearRampToValueAtTime Method
The setValueCurveAtTime() Method
21. Creating Audio Visualizations
A Brief Word on Fourier Analysis
A Brief Explanation of Binary-Coded Decimal Numbers
Storing the Frequency Data in an Array
How to Think About the frequencyData Array
Building the Display Interface
Connecting the Analyzer to the DOM
22. Adding Flexibility to the Audio Loader Abstraction
An Explanation of the Previous Code Edit
Can I Use setInterval or setTimeout?
Playing Back Sounds in Sequence
Creating the User Interface Grid
Adding Interactivity to the Grid Elements
Making an AJAX Call to the iTunes Search API
Creating Your Own Web API to Reference Synthesizer Patch Data
25. The Future of JavaScript and the Web Audio API
Raw Modification of Audio Buffer Data
18.191.223.123