
-
DISPONIBILITÀ IMMEDIATA
{{/disponibilitaBox}}
-
{{speseGratisLibroBox}}
{{/noEbook}}
{{^noEbook}}
-
Libro
-
- Genere: Libro
- Lingua: Inglese
- Editore: Routledge
- Pubblicazione: 05/2019
- Edizione: Edizione nuova, 2° edizione
Designing Audio Effect Plugins in C++
pirkle will c.
208,98 €
198,53 €
{{{disponibilita}}}
NOTE EDITORE
Designing Audio Effect Plugins in C++ presents everything you need to know about digital signal processing in an accessible way. Not just another theory-heavy digital signal processing book, nor another dull build-a-generic-database programming book, this book includes fully worked, downloadable code for dozens of professional audio effect plugins and practically presented algorithms. Sections include the basics of audio signal processing, the anatomy of a plugin, AAX, AU and VST3 programming guides; implementation details; and actual projects and code. More than 50 fully coded C++ audio signal-processing objects are included. Start with an intuitive and practical introduction to the digital signal processing (DSP) theory behind audio plug-ins, and quickly move on to plugin implementation, gain knowledge of algorithms on classical, virtual analog, and wave digital filters, delay, reverb, modulated effects, dynamics processing, pitch shifting, nonlinear processing, sample rate conversion and more. You will then be ready to design and implement your own unique plugins on any platform and within almost any host program. This new edition is fully updated and improved and presents a plugin core that allows readers to move freely between application programming interfaces and platforms. Readers are expected to have some knowledge of C++ and high school math.SOMMARIO
Table of Contents Dedication List of Figures List of Tables Preface 1 Introduction 1.1 Using This Book 1.2 Fundamentals of Audio Signal Processing 1.2.1 Acquisition of Audio Samples 1.3 Reconstruction of the Analog Signal 1.4 Numerical Representation of Audio Data 1.5 Analytical DSP Test Signals 1.5.1 DC and Step (0 Hz) 1.5.2 Nyquist 1.5.3 ½ Nyquist 1.5.4 ¼ Nyquist 1.5.5 Impulse 1.6 Signal Processing Algorithms 1.6.1 Bookkeeping 1.6.2 The One-Sample Delay 1.6.3 Multiplication With a Scalar Value 1.6.4 Addition and Subtraction 1.6.5 Some Algorithm Examples and Difference Equations 1.7 1st Order Feed Forward and Feed Back Algorithms 1.8 Bibliography 2 Anatomy of an Audio Plugin 2.1 Plugin Packaging: Dynamic-Link Libraries (DLLs) 2.2 The Plugin Description: Simple Strings 2.2.1 The Plugin Description: Features and Options 2.3 Initialization: Defining the Plugin Parameter Interface 2.3.1 Initialization: Defining Channel I/O Support 2.3.2 Initialization: Sample Rate Dependency 2.4 Processing: Preparing for Audio Streaming 2.4.1 Processing: Audio Signal Processing (DSP) 2.5 Mixing Parameter Changes with Audio Processing 2.5.1 Plugin Variables and Plugin Parameters 2.5.2 Parameter Smoothing 2.5.3 Pre and Post-Processing Updates 2.5.4 VST3 Sample Accurate Updates 2.5.5 Multithreaded Software 2.6 Monolithic Plugin Objects 2.7: Bibliography 3 VST3 Programming Guide 3.1 Setting up the VST3 SDK 3.1.1 VST3 Sample Projects 3.1.2 VST3 Documentation 3.2 VST3 Architecture and Anatomy 3.2.1 Single vs. Dual Component Architectures 3.2.2 VST3 Base Classes 3.2.3 MacOS Bundle ID 3.2.4 VST3 Programming Notes 3.2.5 VST3 and the GUID 3.2.6 VST3 Plugin Class Factory 3.3 Description: Plugin Description Strings 3.4 Description: Plugin Options/Features 3.4.1 Side Chain Input 3.4.2 Latency 3.4.3 Tail Time 3.4.4 Custom GUI 3.4.5 Factory Presets and State Save/Load 3.4.6 VST3 Support for 64-bit Audio 3.5 Initialization: Defining Plugin Parameters 3.5.1 Thread Safe Parameter Access 3.5.2 Initialization: Defining Plugin Channel I/O Support 3.5.3 Initialization: Channel Counts and Sample Rate Information 3.6 The Buffer Process Cycle 3.6.1 Processing: Updating Plugin Parameters from GUI Controls 3.6.2 Processing: Resetting the Algorithm and Preparing for Streaming 3.6.3 Processing: Accessing the Audio Buffers 3.6.4 Processing: Writing Output Parameters 3.6.5 Processing: VST3 Soft Bypass 3.7 Destruction/Termination 3.8 Retrieving VST3 Host Information 3.9 Validating your Plugin 3.10 Using ASPiK to Create VST3 Plugins 3.11 Bibliography 4 Audio Unit Programming Guide 4.1 Setting up the AU SDK 4.1.1 AU Sample Projects 4.1.2 AU Documentation 4.2 AU Architecture and Anatomy 4.2.1 AU Base Classes 4.2.2 MacOS Bundle ID 4.2.3 AU Programming Notes 4.3 Description: Plugin Description Strings 4.4 Description: Plugin Options/Features 4.4.1 Side Chain Input 4.4.2 Latency 4.4.3 Tail Time 4.4.4 Custom GUI 4.4.5 Factory Presets and State Save/Load 4.5 Initialization: Defining Plugin Parameters 4.5.1 Thread Safe Parameter Access 4.5.2 Initialization: Defining Plugin Channel I/O Support 4.5.3 Initialization: Channel Counts and Sample Rate Information 4.6 The Buffer Process Cycle 4.6.1 Processing: Updating Plugin Parameters from GUI Controls 4.6.2 Processing: Resetting the Algorithm and Preparing for Streaming 4.6.3 Processing: Accessing the Audio Buffers 4.6.4 Processing: Writing Output Parameters 4.7 The AU/GUI Connection 4.7.1 Cocoa’s Flat Namespace 4.7.2 The AU Event Listener System 4.8 Destruction/Termination 4.9 Retrieving AU Host Information 4.10 Validating your Plugin 4.11 Using ASPiK to Create AU Plugins 4.12 Bibliography 5 AAX Native Programming Guide 5.1 Setting up the AAX SDK 5.1.1 AAX Sample Projects 5.1.2 AAX Documentation 5.2 AAX Architecture and Anatomy 5.2.1 AAX Model-Algorithm Synchronization 5.2.2 AAX Base Classes 5.2.3 MacOS Bundle ID 5.2.4 AAX Programming Notes 5.2.5 AAX Class Factory 5.2.6 AAX Effect Categories 5.2.7 AAX Algorithms: Channel Processing Functions 5.2.8 AAX Algorithm Data 5.2.9 Algorithm Data Contents 5.3 Description: Plugin Description Strings 5.3.1 Description: Defining AAX Algorithms 5.4 Description: Plugin Options/Features 5.4.1 Side Chain Input 5.4.2 Latency 5.4.3 Tail Time 5.4.4 Custom GUI 5.4.5 Factory Presets and State Save/Load 5.4.6 AAX Notification System 5.4.7 AAX Custom Data 5.4.8 AAX EQ and Dynamics Curves 5.4.9 AAX Gain Reduction Meter 5.5 Initialization: Defining Plugin Parameters 5.5.1 Thread Safe Parameter Access 5.5.2 Initialization: Defining Plugin Channel I/O Support 5.5.3 Initialization: Channel Counts and Sample Rate Information 5.6 The Buffer Process Cycle 5.6.1 Processing: Updating Plugin Parameters from GUI Controls 5.6.2 Processing: Resetting the Algorithm and Preparing for Streaming 5.6.3 Processing: Accessing the Audio Buffers 5.6.4 Processing: Writing Output Parameters 5.6.5 Processing: AAX Soft Bypass 5.7 Destruction/Termination 5.8 Retrieving AAX Host Information 5.9 Validating your Plugin 5.10 Using ASPiK to Create AAX Plugins 5.11 Bibliography 6 ASPiK Programming Guide 6.1 Plugin Kernel Portability and Native Plugin Shells 6.2 Organizing the SDKs: AAX, AU and VST 6.2.1 Your C++ Compiler 6.2.2 Setting up the AAX SDK 6.2.3 Setting up the AU SDK 6.2.4 Setting up the VST SDK 6.2.5 Creating the Universal SDK Folder Hierarchy 6.2.6 Adding the VSTGUI4 Library 6.2.7 CMake 6.3 Creating a Plugin Project with ASPiKreator: IIRFilters 6.3.1 ASPiK Project Folders 6.3.2 Running CMake 6.4 Adding Effect Objects to the PluginCore 6.4.1 The PluginCore Constructor 6.4.2 IIRFilters: GUI Parameter Lists 6.4.3 Parameter Smoothing 6.4.4 Handling the String-List Parameters 6.4.5 IIRFilters: Declaring Plugin Variables 6.4.6 Parameter Object Enumerations for Attributes 6.4.6.1 Continuous Floating Point Parameters & Discrete Integer Parameters 6.4.6.2 String-List Parameters 6.4.7 IIRFilters Object Declarations & Reset 6.4.8 IIRFilters: GUI Parameter Updates 6.4.9 IIRFilters: Processing Audio Data 6.4.10 Buffer Pre-Processing 6.4.11 Buffer Post-Processing 6.4.12 Buffer versus Frame Processing 6.4.13 processAudioFrame: Information About the Frame 6.4.14 processAudioFrame: Input and Output Samples 6.5 Defining Factory Presets 6.6 Basic Plugin GUI Design with ASPiK’s PluginGUI 6.7 GUI Design with VSTGUI4 6.7.1 Modifier Keys 6.7.2 Zooming (Scaling the GUI) 6.7.3 Reserved control-tags 6.7.4 VSTGUI4 Objects 6.7.5 Creating a GUI with VSTGUI 6.7.6 Important GUI Designer Terms 6.8 VSTGUI C++ Objects 6.8.1 Basic GUI Design 6.8.2 The GUI Designer Workspace 6.8.3 Changing Your GUI Canvas Size 6.8.4 Setting up the Control Tags 6.8.5 Importing the Graphics Files 6.8.6 Assembling the GUI 6.8.7 Setting the Background 6.8.8 Adding the GUI Elements 6.8.9 Saving and Re-building 6.8.10 Scaling the GUI 6.8.11 More ASPiK Features 6.9 Bibliography 7 Using RackAFX to Create ASPiK Projects 1 7.1 Installing RackAFX 2 7.2 Getting Started with RackAFX 2 7.3 Setting up Your Project Preferences & Audio Hardware 4 7.4 Installing VSTGUI4 4 7.5 Creating a Project and Adding GUI Controls 4 7.5.1 Numerical Continuous Controls 7 7.5.2 String-List Controls 8 7.5.3 Meters 10 7.6 Anatomy of your RackAFX project 11 7.7 Testing Audio Algorithms with RackAFX 13 7.8 RackAFX Impulse Convolver and FIR Design Tools 14 7.9 Designing Your Custom GUI 16 7.10 Exporting Your ASPiK Project 17 7.11 Bibliography 8 C++ Conventions & How to Use This Book 8.1 Three Types of C++ Objects 8.1.1 Effect Objects Become Framework Object Members 8.1.2 All Effect Objects and Most DSP Objects Implement Common Interfaces 8.1.3 DSP and Effect Objects use Custom Data Structures for Parameter Get/Set Operations 8.1.4 Effect Objects Accept Native Data from GUIs 8.1.5 Effect Objects Process Audio Samples 8.1.6 Effect Objects Optionally Process Frames 8.2 Book Projects 8.2.1 ASPiK Users 8.2.2 JUCE and other non-ASPiK Users 8.2.3 A Sample Plugin Project: GUI Control Definition 9 How DSP Filters Work (Without ComplexAUTORE
Will C. Pirkle is Associate Professor and Program Director of Music Engineering Technology at the University of Miami Frost School of Music. He teaches classes in C++ Audio Programming, Signal Processing, Audio Synthesis, and Mobile App Programming. In addition to 14 years of teaching at the University of Miami, Will has 20 years of experience in the audio industry working and consulting for such names as Korg Research and Development, SiriusXM Radio, Diamond Multimedia, Gibson Musical Instruments, and National Semiconductor Corporation. An avid guitarist and studio owner, Will still seeks projects that combine all his skills.ALTRE INFORMAZIONI
- Condizione: Nuovo
- ISBN: 9781138591899
- Dimensioni: 9.25 x 7.5 in Ø 3.23 lb
- Formato: Copertina rigida
- Illustration Notes: 106 tables, 20 halftones and 327 line drawings
- Pagine Arabe: 656
- Pagine Romane: xlviii