# \[Book\] Will Pirkle - Designing Audio Effect Plug-Ins in C++ (2nd edition)

**URL:** <https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027>\
**Category:** General JUCE discussion\
**Created:** [June 20, 2019, 11:09pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027 "2019-06-20T23:09:15Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![pauloesteban](https://avatars.discourse-cdn.com/v4/letter/p/a5b964/32.png) [@pauloesteban](https://forum.juce.com/u/pauloesteban)\
**Post date:** [June 20, 2019, 11:09pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/1 "2019-06-20T23:09:15Z")

</div>

The 2nd edition of this book is out

> **[Designing Audio Effect Plugins in C++](https://books.google.com.ec/books?id=rVKWDwAAQBAJ&dq=Will%2BPirkle%2B-%2BDesigning%2BAudio%2BEffect%2BPlug-Ins%2Bin%2BC%2B%2B%2B2nd&source=gbs_navlinks_s)**
>
> 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,...

Did someone around here buy and read it? Thoughts?

Best,  
Paulo

---

<div class="post-metadata">

**Author:** ![holy-city](https://avatars.discourse-cdn.com/v4/letter/h/8491ac/32.png) [@holy-city](https://forum.juce.com/u/holy-city)\
**Post date:** [June 20, 2019, 11:48pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/2 "2019-06-20T23:48:10Z")

</div>

I picked up a copy. Disclaimer: I’m a former student of his and took his plugin/synth design courses with the first editions, many many moons ago.

The book layout is straightforward, the first chunk is implementation details on the AU, VST3, and AAX plugin APIs, while the second chunk is a walk through of basic DSP theory and algorithms, with some cool additions not available in the first edition. I really like it as a quick reference and have bookmarked several algorithms to use in real projects (in particular his approach for dealing to frequency warping).

The code quality for the DSP is much better, but it may be a little opaque to some folks more familiar/comfortable with OOP. What he does is handle state/parameters by indexing into coefficient and state arrays in a DSP structure using hard coded indices, as opposed to doing raw field access.

If you’re not very familiar with DSP, it’s an excellent way to get your feet wet.

The new plugin wrapping code is [on github too](https://github.com/willpirkleaudio/ASPiK).

---

<div class="post-metadata">

**Author:** ![bgporter](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/bgporter/32/12710_2.png) [@bgporter](https://forum.juce.com/u/bgporter)\
**Post date:** [June 21, 2019, 2:30pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/3 "2019-06-21T14:30:08Z")

</div>

I’m about halfway through, and my own disclaimer – Will and I were in school at the same time, but traveled in different circles.

This book is a big upgrade from the first edition, largely in terms of structure and depth, presumably based on a few years of him using that edition as a textbook.

Something that I really like about this book as compared to most (if not all) of the other DSP books I’ve read is that it reverses its explanations in a way that makes more sense to me – instead of topics being presented as “_math math math math_ and because of these equations we can see that it’s intuitively obvious that _concept_,” he builds up a conceptual layer first and then backs it up with the math.

---

<div class="post-metadata">

**Author:** ![arifd](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/arifd/32/6075_2.png) [@arifd](https://forum.juce.com/u/arifd)\
**Post date:** [June 21, 2019, 2:37pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/4 "2019-06-21T14:37:19Z")

</div>

@bgporter, You do a hell of a lot of reading it seems. I’ve got Meyers effective C++ and effective modern C++ (basically because I’ve seen you recommend them elsewhere on the forum, but I haven’t started them yet) I’m almost half way through Soustroup’s Tour of C++, I started Thinking in C++, I’ve attempted the Core Guidelines, and have started working through a ton of others, but had to put most of them on hold because they would race through at a pace that was a little bit too advanced, or I later found out was teaching me WAAAY outdated stuff.

I want to do this right, and I’m willing to read anything.

What is in your must read list, and importantly, in what order would you recommend them?

Many thnaks.

---

<div class="post-metadata">

**Author:** ![TheWaveWarden](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/thewavewarden/32/13708_2.png) [@TheWaveWarden](https://forum.juce.com/u/TheWaveWarden)\
**Post date:** [June 21, 2019, 3:22pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/5 "2019-06-21T15:22:16Z")

</div>

I’d also be happy about any reviews especially compared to the first book.  
I learned both C++ and DSP while coding my first synth with the FX and Synth book some years back. Recently I found out I managed to lose the FX book (as if it was possible to lose a 600page, brown book with a footprint ~0.5m²).

Anyway I always considered the synth book to be superior, but if the second FX edition comes to the same level, I’d buy again!

EDIT: To any readers, is it still geared towards RAFX as much?

---

<div class="post-metadata">

**Author:** ![bgporter](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/bgporter/32/12710_2.png) [@bgporter](https://forum.juce.com/u/bgporter)\
**Post date:** [June 21, 2019, 5:14pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/6 "2019-06-21T17:14:18Z")

</div>

Actually, I don’t have a lot of recommendations of _modern_ C++ books past what’s here. I’m also going through the latest edition of “C++ Concurrency in Action” because my understanding of this topic in a multi-core world is less solid than I thought it was. Most of the C++ books on my shelf are either out of print or C++98-era and would need to be read through a filter of “no, that detail is no longer how we do things…”

Maybe follow Herb Sutter’s [website](https://herbsutter.com).

A good [cheatsheet](https://github.com/AnthonyCalandra/modern-cpp-features) on what’s been added to 11/14/17/20 that I keep bookmarked.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [June 21, 2019, 5:33pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/7 "2019-06-21T17:33:47Z")

</div>

I went to the github repo for the book to see if the code looked better than the last edition, but I’m afraid that I only lasted a few seconds before having to leave… All the files I looked at contained a random mixture of tabs and spaces, so when viewed in github (or presumably any editor other than whatever the author uses), it’s just a total mess to look at. Unfortunately, I’m too OCD to ignore that and judge the content on its merits… sorry!

---

<div class="post-metadata">

**Author:** ![cpr2323](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/cpr2323/32/18682_2.png) [@cpr2323](https://forum.juce.com/u/cpr2323)\
**Post date:** [June 21, 2019, 5:50pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/8 "2019-06-21T17:50:51Z")

</div>

I really enjoyed this book: [Modern C++ Programming Cookbook](https://www.amazon.com/Modern-Programming-Cookbook-multithreading-networking/dp/1786465183)

---

<div class="post-metadata">

**Author:** ![jakemumu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/jakemumu/32/13038_2.png) [@jakemumu](https://forum.juce.com/u/jakemumu)\
**Post date:** [June 22, 2019, 12:31am UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/9 "2019-06-22T00:31:31Z")

</div>

I haven’t checked out the new addition, but I did learn a lot from the first addition when I was in college. I learned c++ mostly through coding the examples from that book in JUCE. It took me a while of coding with more senior people to undo a lot of the bad habits code wise I had picked up from the book, but, the DSP theory and explanations were invaluable to me at the time.

If you separate the code quality for the quality of the DSP explanations, like @bgporter said, it’s really a terrific way at looking at things from a more intuitive perspective. Especially when you consider a lot of time domain audio processors can be coded intuitively.

---

<div class="post-metadata">

**Author:** ![olilarkin](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/olilarkin/32/7142_2.png) [@olilarkin](https://forum.juce.com/u/olilarkin)\
**Post date:** [June 22, 2019, 11:03am UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/10 "2019-06-22T11:03:01Z")

</div>

I haven’t seen the new book, but I also checked out the framework and find it incredibly verbose and fiddly compared to the alternatives. Even though the topics and DSP stuff covered look great I imagine it would be quite confusing and frustrating to deal with all of that boilerplate framework code as a beginner. It would be better IMHO if it just taught the algorithms via portable C++ code.

---

<div class="post-metadata">

**Author:** ![TheWaveWarden](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/thewavewarden/32/13708_2.png) [@TheWaveWarden](https://forum.juce.com/u/TheWaveWarden)\
**Post date:** [June 22, 2019, 7:50pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/11 "2019-06-22T19:50:04Z")

</div>

> [@olilarkin](#):
>
> I haven’t seen the new book, but I also checked out the framework and find it incredibly verbose and fiddly compared to the alternatives.

Well the code will look fugly in the end, but all of the GUI code is generated by RackAFX. So it’s actually the other way around - you as a beginner don’t have to worry about connecting sliders and stuff other than drag’n’dropping one in and setting limits and can focus on the DSP part entirely.

---

<div class="post-metadata">

**Author:** ![abaga1291](https://avatars.discourse-cdn.com/v4/letter/a/ac8455/32.png) [@abaga1291](https://forum.juce.com/u/abaga1291)\
**Post date:** [June 26, 2019, 8:34pm UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/12 "2019-06-26T20:34:25Z")

</div>

I’m also curious about the 2nd edition. I owe most of what I know about DSP to the first edition of this book. I would even go as far as to say that the first edition is my favorite book that I’ve \> ever owned.

> Even though the topics and DSP stuff covered look great I imagine it would be quite confusing and frustrating to deal with all of that boilerplate framework code as a beginner.

IMO the DSP and explanation of the algorithms are written clearly enough to make up for the boilerplate. When I was first learning DSP I used the book along with wdl-ol and later Dplug to write the examples and experiment. RackAFX didn’t look like what I wanted since I was interested in making nice looking UIs as well.

The thing I’m wondering is if anyone who has read both editions thinks that the second edition is a large enough improvement over the first to justify owning both copies. I’m currently on the fence about buying it since I’m not sure if it is just the same algorithms and examples from the first edition.

---

<div class="post-metadata">

**Author:** ![Matthewh806](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/matthewh806/32/4748_2.png) [@Matthewh806](https://forum.juce.com/u/Matthewh806)\
**Post date:** [March 24, 2021, 11:01am UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/13 "2021-03-24T11:01:12Z")

</div>

I’m reading through this book now. I’m on about the 14th chapter now and finding the explanations very thorough and clear, along with the coding examples & exercises its certainly helping me sharpen up my DSP.

The main problem I have with it though & its really starting to get alarming is the number of mistakes littered through the book. (this is the 2nd edition btw). Perhaps I’m just quite alert to them based on how closely & carefully I’m reading the book, but the mistakes seem to be littered everywhere. From incorrect equations, wrong chapter reference numbers, sentences which seem to contradict other statements… my word. I’m kind of worried that I’m just picking up on the _obvious_ errors and missing more fundamental errors which could hinder my learning as a result.

I think Will, the author, has been quite upfront about the number of errors in discussions on his forum and has published an errata. But still, it undermines an otherwise good book in my opinion, I’m quite shocked that it managed to get to print in this state to be honest. Kind of feel a bit short changed as the book ain’t cheap either… Just a word of warning

---

<div class="post-metadata">

**Author:** ![matthieu-brucher](https://avatars.discourse-cdn.com/v4/letter/m/a5b964/32.png) [@matthieu-brucher](https://forum.juce.com/u/matthieu-brucher)\
**Post date:** [March 24, 2021, 11:37am UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/14 "2021-03-24T11:37:21Z")

</div>

I read the first edition and the code was so bad that I will give a pass on any books he writes, unless it’s a pure theoretical book. But then, there is DAFX for that.

---

<div class="post-metadata">

**Author:** ![JanWilczek](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/janwilczek/32/21823_2.png) [@JanWilczek](https://forum.juce.com/u/JanWilczek)\
**Post date:** [September 4, 2023, 7:35am UTC](https://forum.juce.com/t/book-will-pirkle-designing-audio-effect-plug-ins-in-c-2nd-edition/34027/15 "2023-09-04T07:35:00Z")

</div>

FYI, I’ve published a full review of the book in a video&article form: [https://youtu.be/8VPdm-yNCsk](https://youtu.be/8VPdm-yNCsk)  
Posting in case someone’s considering whether to read this book 🙂
