1 00:00:00,940 --> 00:00:01,720 (gentle music) 2 00:00:03,220 --> 00:00:04,780 - Welcome to the CircuitPython Show. 3 00:00:05,020 --> 00:00:06,220 I'm your host, Paul Cutler. 4 00:00:06,740 --> 00:00:08,600 This episode, I welcome Cooper Dalrymple. 5 00:00:09,220 --> 00:00:10,900 Cooper is a web developer and musician 6 00:00:11,140 --> 00:00:13,200 and has been contributing to the new audio effects 7 00:00:13,320 --> 00:00:14,620 available in CircuitPython. 8 00:00:15,500 --> 00:00:16,440 Cooper, welcome to the show. 9 00:00:17,060 --> 00:00:17,820 - Hey, Paul, how's it going? 10 00:00:18,220 --> 00:00:18,820 - It's going great. 11 00:00:18,960 --> 00:00:19,980 Thanks for making time today. 12 00:00:20,500 --> 00:00:21,280 - It's always a pleasure. 13 00:00:21,480 --> 00:00:23,060 I mean, hey, this is only my second time, 14 00:00:23,180 --> 00:00:25,900 but I'm excited each time, so it's great. 15 00:00:26,520 --> 00:00:27,240 - How did you first get 16 00:00:27,240 --> 00:00:27,540 started 17 00:00:27,600 --> 00:00:28,760 with computers and electronics? 18 00:00:29,500 --> 00:00:31,320 - Well, I've actually been working in this field, 19 00:00:31,380 --> 00:00:32,439 I guess, for a really long time. 20 00:00:32,500 --> 00:00:34,940 I started when I was a young kid, probably like 10 or so. 21 00:00:35,700 --> 00:00:37,320 But really, the first big thing that happened, 22 00:00:37,610 --> 00:00:38,380 I guess, in this field, 23 00:00:38,670 --> 00:00:40,740 if anyone out there maybe has heard of Science Fair, 24 00:00:40,960 --> 00:00:43,620 right, Intel, ISEF, it's like the International Science Fair. 25 00:00:44,070 --> 00:00:46,020 I kind of got into that, roped into it. 26 00:00:46,480 --> 00:00:48,260 And I actually started experimenting 27 00:00:48,640 --> 00:00:50,660 with electronics back then, with like Arduino, 28 00:00:51,580 --> 00:00:54,180 even some like Atom computers and stuff like that, 29 00:00:54,240 --> 00:00:55,400 doing a lot of computer vision. 30 00:00:55,850 --> 00:00:58,280 And it's really funny 'cause I look at what I did back then 31 00:00:58,280 --> 00:00:59,700 And it seems so primitive now. 32 00:00:59,700 --> 00:01:01,740 I was literally using Game Boy cameras. 33 00:01:02,090 --> 00:01:03,940 I would strip out the sensor from it 34 00:01:04,000 --> 00:01:07,360 and plug some wires in and use an Arduino library, et cetera. 35 00:01:07,930 --> 00:01:08,920 But now we've come so far. 36 00:01:08,980 --> 00:01:11,000 In fact, I know with Adafruit and stuff, 37 00:01:11,080 --> 00:01:14,600 they recently gave some support to the OpenMV project, which 38 00:01:14,660 --> 00:01:18,380 seems super cool and leagues beyond what I was doing back 39 00:01:18,440 --> 00:01:20,440 in, what, 2012 or so. 40 00:01:20,620 --> 00:01:23,140 So that's kind of what got me started really getting 41 00:01:23,300 --> 00:01:24,760 into hardware and programming. 42 00:01:25,320 --> 00:01:27,280 And I kind of followed along some 43 00:01:27,280 --> 00:01:29,300 of the companies around that time, like SparkFun, 44 00:01:29,520 --> 00:01:30,240 stuff like that. 45 00:01:30,799 --> 00:01:32,440 - How did you discover CircuitPython? 46 00:01:33,200 --> 00:01:34,940 - Well, I'd known about it for a while, 47 00:01:35,240 --> 00:01:36,600 though I hadn't really dived into it. 48 00:01:36,880 --> 00:01:38,920 I was definitely, for a long time, I was hardcore. 49 00:01:39,580 --> 00:01:42,640 If it's not C or C++, what are you doing? 50 00:01:42,960 --> 00:01:44,960 But I think a lot of that mindset came from, 51 00:01:45,480 --> 00:01:47,620 I think that early era, I say early, 52 00:01:47,900 --> 00:01:50,200 really, you go back to Intel 8080, et cetera, 53 00:01:50,660 --> 00:01:54,100 but really that early era of MCUs in the 2000s 54 00:01:54,140 --> 00:01:55,620 and early 2010s. 55 00:01:56,040 --> 00:01:58,200 I'm talking about like the ATmega328. 56 00:01:58,940 --> 00:02:01,380 Well, I mostly dealt with the ATmega stuff. 57 00:02:01,980 --> 00:02:05,680 And those processors, you're going at like eight megahertz 58 00:02:05,730 --> 00:02:10,500 or something with an eight bit core or maybe 16 bit. 59 00:02:10,899 --> 00:02:12,740 It's not really possible to do the kind of stuff 60 00:02:12,760 --> 00:02:14,200 you can do now with CircuitPython. 61 00:02:14,900 --> 00:02:18,140 That overhead of Python and all these awesome libraries 62 00:02:18,300 --> 00:02:19,880 was just too much to even consider. 63 00:02:20,640 --> 00:02:22,640 And then I think that started to shift. 64 00:02:23,320 --> 00:02:26,620 We started to go implementing all the ARM Cortex cores. 65 00:02:26,860 --> 00:02:29,040 In fact, I remember my first chip 66 00:02:29,200 --> 00:02:32,480 that was kind of in this realm was the ARM Embed, 67 00:02:32,640 --> 00:02:35,420 the original, I think it was blue or something like that. 68 00:02:35,880 --> 00:02:37,640 Pretty cool chip, I didn't get that deep into it, 69 00:02:37,640 --> 00:02:40,220 it was a little above my level at the time. 70 00:02:40,760 --> 00:02:42,220 But all of a sudden, you started being able 71 00:02:42,220 --> 00:02:43,500 to have all this power, you know, 72 00:02:43,500 --> 00:02:44,800 we're talking about dual core, 73 00:02:45,660 --> 00:02:47,400 hundreds of megahertz practically, 74 00:02:47,740 --> 00:02:49,660 and a 32-bit instruction set. 75 00:02:50,220 --> 00:02:52,700 And then you can start not worrying about it, right? 76 00:02:52,800 --> 00:02:55,460 you can start abstracting all of that 77 00:02:55,920 --> 00:02:58,300 and starting to work with something like CircuitPython 78 00:02:58,440 --> 00:02:59,520 and MicroPython. 79 00:03:00,020 --> 00:03:00,700 What did I learn about it? 80 00:03:00,740 --> 00:03:01,820 Well, I knew about Adafruit 81 00:03:02,440 --> 00:03:05,320 from purchasing just Raspberry Pi stuff back in the day, 82 00:03:05,880 --> 00:03:09,420 especially I really used to love the Pi Zero quite a bit. 83 00:03:09,460 --> 00:03:10,900 I still do, I really do. 84 00:03:11,140 --> 00:03:14,560 If you need Linux and everything in a small form factor, 85 00:03:14,900 --> 00:03:16,960 inexpensive, et cetera, it's a great board. 86 00:03:17,280 --> 00:03:18,820 And they have the Zero Two now, I believe, 87 00:03:18,880 --> 00:03:20,560 which I haven't really played around with much, 88 00:03:21,120 --> 00:03:22,180 but I really like that form factor. 89 00:03:22,720 --> 00:03:25,140 And I used to purchase some parts and stuff, 90 00:03:25,300 --> 00:03:27,860 but I didn't really get into CircuitPython 91 00:03:28,780 --> 00:03:30,520 until I discovered SynthIO, right? 92 00:03:31,320 --> 00:03:31,960 Thank you, Jeff. 93 00:03:32,640 --> 00:03:34,120 I feel like every time I talk about SynthIO, 94 00:03:34,240 --> 00:03:35,900 I have to give him some kudos. 95 00:03:36,440 --> 00:03:36,820 - Absolutely. 96 00:03:37,580 --> 00:03:40,000 - Yeah, Jepler on Discord and so on. 97 00:03:40,400 --> 00:03:41,700 So I had some experience, 98 00:03:41,700 --> 00:03:43,720 'cause I was always into synthesizers and stuff, 99 00:03:43,720 --> 00:03:45,960 and I had some experience with Mozzie on the Arduino, 100 00:03:46,160 --> 00:03:47,860 which I think is still around, still supported, 101 00:03:48,420 --> 00:03:50,060 but that was definitely kind of designed 102 00:03:50,160 --> 00:03:52,159 for those eight-bit microcontrollers 103 00:03:52,160 --> 00:03:55,340 where it's like you're really constrained within that space. 104 00:03:55,940 --> 00:03:59,120 And on top of that, like adding in control logic, 105 00:03:59,360 --> 00:04:01,040 driving displays, stuff like that, 106 00:04:01,120 --> 00:04:02,700 like you start getting really limited. 107 00:04:03,180 --> 00:04:04,820 And then when synthio came out, 108 00:04:05,460 --> 00:04:06,420 I don't know, it was just really exciting. 109 00:04:06,580 --> 00:04:08,720 Be like, hey, I can just build a synthesizer, 110 00:04:08,940 --> 00:04:10,060 I can give it my notes, 111 00:04:10,540 --> 00:04:12,820 I can control some basic parameters, 112 00:04:13,040 --> 00:04:14,060 I don't really have to think about it, 113 00:04:14,060 --> 00:04:15,280 it all works in the background, 114 00:04:15,720 --> 00:04:18,380 and I can focus on what actually makes my project cool. 115 00:04:18,880 --> 00:04:21,120 So I started working on some projects back then, 116 00:04:21,600 --> 00:04:23,060 but it was just kind of slow moving. 117 00:04:23,460 --> 00:04:27,300 That is until I think about 2019 or 2020 or so. 118 00:04:27,360 --> 00:04:28,960 Well, actually not 2020, that'd be COVID, 119 00:04:29,160 --> 00:04:31,180 but somewhere in that time span, 120 00:04:31,560 --> 00:04:32,960 I'm from Pensacola, Florida, 121 00:04:33,200 --> 00:04:35,600 which is this little Navy town, you know, 122 00:04:35,620 --> 00:04:38,260 on the coast of the panhandle of Florida. 123 00:04:38,940 --> 00:04:41,040 We don't have a whole lot of tech going on here. 124 00:04:41,160 --> 00:04:43,680 There's not a ton of maker spaces or anything like that. 125 00:04:43,720 --> 00:04:44,600 It's pretty sparse. 126 00:04:45,200 --> 00:04:47,660 But all of a sudden, somebody roped in, 127 00:04:47,720 --> 00:04:50,080 I think it was UWF, our local college here, 128 00:04:50,480 --> 00:04:54,020 roped in Maker Faire and started a Pensacool Mini Maker Faire. 129 00:04:54,420 --> 00:04:56,660 All of a sudden, the lights are flashing, 130 00:04:57,240 --> 00:04:59,460 I'm all excited, I got to do something with this. 131 00:04:59,760 --> 00:05:01,580 They were inviting community members because I 132 00:05:01,680 --> 00:05:03,620 wasn't a part of the university at the time. 133 00:05:04,220 --> 00:05:06,300 They're inviting community members to contribute to this. 134 00:05:06,660 --> 00:05:07,900 I was like, well, 135 00:05:08,140 --> 00:05:11,500 let's make some music and make it approachable. 136 00:05:11,620 --> 00:05:12,940 Because I know with a lot of these Maker Faires, 137 00:05:13,200 --> 00:05:14,820 there's a lot of younger students, 138 00:05:15,240 --> 00:05:17,780 people that don't know this whole world that we know, 139 00:05:17,880 --> 00:05:20,380 and they just want to see something fun and cool, whatever. 140 00:05:20,960 --> 00:05:24,000 And CircuitPython seemed like a great avenue for that. 141 00:05:24,510 --> 00:05:27,200 So I started a project called the PicoSynth Sandbox, 142 00:05:27,500 --> 00:05:30,720 which was supposed to be kind of like a do-it-all synthesizer 143 00:05:31,320 --> 00:05:35,540 with microphones, touchpads, MIDI, a display, et cetera, 144 00:05:36,120 --> 00:05:37,880 that utilized CircuitPython. 145 00:05:38,600 --> 00:05:40,620 So I put it on the back burner for a while, 146 00:05:40,820 --> 00:05:43,280 but that's something I'm hoping to revisit in the future. 147 00:05:43,800 --> 00:05:45,120 But it was a total success. 148 00:05:45,500 --> 00:05:46,900 A ton of kids had fun at that. 149 00:05:46,980 --> 00:05:49,880 I actually did two years in a row and I kind of expanded upon it. 150 00:05:50,400 --> 00:05:54,820 And I wish I had like some numbers here, like the number of students that came and interacted, 151 00:05:55,000 --> 00:05:55,420 but I don't. 152 00:05:55,560 --> 00:05:56,880 But it was a really good time. 153 00:05:57,840 --> 00:05:59,860 You were part of the panel discussion in the recent episode 154 00:05:59,860 --> 00:06:01,420 about audio effects, and shared 155 00:06:01,480 --> 00:06:03,880 that you have a background in music, which you've also touched on. 156 00:06:04,260 --> 00:06:05,580 What is your musical background? 157 00:06:06,780 --> 00:06:07,420 Good question. 158 00:06:07,820 --> 00:06:11,580 So I don't do as much as I used to do now. 159 00:06:11,960 --> 00:06:16,059 But back in the day, I used to play in a bunch of bands in high school and stuff, always 160 00:06:16,060 --> 00:06:21,320 kind of loaning myself out to whoever needed help as well as doing my own music and writing and 161 00:06:21,540 --> 00:06:26,920 recording. You know, especially being kind of tech literate, I guess. If you're into music, 162 00:06:27,080 --> 00:06:33,060 you usually get really into the weeds and all the recording and the hardware and, I don't know, 163 00:06:33,560 --> 00:06:38,800 tweaking up guitars, things like that. So I did that for a while. I had a pretty good band for a 164 00:06:38,800 --> 00:06:42,740 while called Crystal Coast. You know, we have a few music videos, that kind of thing. But we didn't 165 00:06:42,620 --> 00:06:48,040 really go too far. But since COVID happened, it kind of shut everything down for me with that. 166 00:06:48,040 --> 00:06:52,900 I kind of had to reevaluate and I found some other hobbies I was really interested in that were a 167 00:06:52,960 --> 00:06:59,480 little bit more, I guess, independent in nature. And so for music, what I ended up doing is I 168 00:06:59,600 --> 00:07:05,640 tried to go with this Relic idea that I had, which you might notice by my tag on GitHub and all that 169 00:07:05,720 --> 00:07:12,600 kind of stuff, Relic SE or just Relic depending. But basically, I wanted to focus more on the 170 00:07:12,600 --> 00:07:14,200 I wanted to create some electronic songs. 171 00:07:14,660 --> 00:07:15,580 I had all these ideas. 172 00:07:16,440 --> 00:07:19,100 Once again, I put everything on the back burner. 173 00:07:19,100 --> 00:07:20,440 I put this on the back burner a bit. 174 00:07:20,500 --> 00:07:21,800 I'm going a little slower now, 175 00:07:22,540 --> 00:07:25,040 whereas I was really putting out songs for a while. 176 00:07:25,530 --> 00:07:27,600 And that was on SoundCloud, nothing big. 177 00:07:27,800 --> 00:07:30,060 I only played one show so far. 178 00:07:30,520 --> 00:07:31,840 I ask people every now and then 179 00:07:31,900 --> 00:07:34,100 if they need an electronic band, 180 00:07:34,220 --> 00:07:35,820 but that's not very popular where I'm from. 181 00:07:35,960 --> 00:07:37,460 There's not a whole lot of this kind of shows. 182 00:07:37,860 --> 00:07:38,180 - Sure. 183 00:07:38,580 --> 00:07:39,660 - And fun fact here, 184 00:07:40,140 --> 00:07:41,440 the reason I came up with the name Relic, 185 00:07:41,540 --> 00:07:43,900 It's not because I'm 100,000 years old. 186 00:07:44,680 --> 00:07:48,340 It's actually for resistor, limiter, or inductor, sorry, 187 00:07:48,820 --> 00:07:49,840 capacitor, right? 188 00:07:50,020 --> 00:07:51,900 I was like, I had this cool idea about like, hey, 189 00:07:52,080 --> 00:07:54,900 the essential components of a passive filter. 190 00:07:55,330 --> 00:07:57,460 But now, right now, I mostly play drums. 191 00:07:58,060 --> 00:07:59,800 One thing I always like to say is, 192 00:08:00,060 --> 00:08:02,500 once you learn how to play something like drums or bass, 193 00:08:02,770 --> 00:08:04,660 you will always play drums and bass. 194 00:08:05,120 --> 00:08:07,280 Because every band doesn't have a drummer or bass. 195 00:08:07,700 --> 00:08:08,760 Everybody plays guitar. 196 00:08:09,100 --> 00:08:09,780 So as 197 00:08:09,780 --> 00:08:11,160 soon as you pick up those skills, 198 00:08:11,400 --> 00:08:13,400 That's the only thing you're going to be doing for a while. 199 00:08:13,560 --> 00:08:17,720 So I mostly play in metal bands and stuff like that on the side. 200 00:08:18,330 --> 00:08:20,880 You recently started designing hardware to use with your music. 201 00:08:21,180 --> 00:08:23,140 How has the learning process been in designing hardware? 202 00:08:23,940 --> 00:08:24,800 It's been a steep one. 203 00:08:25,060 --> 00:08:28,740 I feel like with every design I do, I learn a new skill, 204 00:08:29,190 --> 00:08:29,960 which is really scary. 205 00:08:30,100 --> 00:08:35,440 Because when you create one of these designs in KiCad or Eagle or whatever, 206 00:08:36,419 --> 00:08:37,719 you're like, yeah, everything works. 207 00:08:37,770 --> 00:08:38,320 This is great. 208 00:08:38,400 --> 00:08:39,180 My schematic's good. 209 00:08:39,240 --> 00:08:40,620 My hardware is good. 210 00:08:40,960 --> 00:08:43,780 so on, send it out to a PCB manufacturer, 211 00:08:43,919 --> 00:08:45,520 and it comes back, and there's problems. 212 00:08:45,700 --> 00:08:47,420 There's almost always problems. 213 00:08:47,920 --> 00:08:50,720 And I wish I could know where the problems were 214 00:08:50,920 --> 00:08:52,820 right from the beginning, but I don't. 215 00:08:53,260 --> 00:08:54,780 So I've kind of been leveling up. 216 00:08:55,000 --> 00:08:57,200 Honestly, I only learned how to do SMD, 217 00:08:57,480 --> 00:08:58,920 like reflow soldering and stuff, 218 00:08:59,320 --> 00:09:00,700 probably like two or three years ago. 219 00:09:00,840 --> 00:09:03,260 So for a while, I was only designing through-hole stuff, 220 00:09:03,340 --> 00:09:05,520 even then, very limited, 'cause I'd always be scared. 221 00:09:05,640 --> 00:09:06,740 The whole process is scary. 222 00:09:07,000 --> 00:09:09,100 And when you're doing something as a one-off, 223 00:09:09,940 --> 00:09:13,620 I usually just perf board or do crazy wire jobs 224 00:09:13,980 --> 00:09:14,720 and it's a mess. 225 00:09:14,940 --> 00:09:16,940 I've since learned it's typically better 226 00:09:17,040 --> 00:09:19,020 to get a PCB manufactured if you can. 227 00:09:19,340 --> 00:09:20,580 It's so inexpensive nowadays. 228 00:09:21,100 --> 00:09:21,860 It's really worth it. 229 00:09:22,280 --> 00:09:23,560 It's just scary, that's it. 230 00:09:23,900 --> 00:09:25,800 So lately I've been getting more, 231 00:09:26,160 --> 00:09:28,860 my components have been shrinking 232 00:09:29,060 --> 00:09:31,000 and shrinking and shrinking to the point 233 00:09:31,180 --> 00:09:32,920 I'm finally starting to design stuff 234 00:09:33,000 --> 00:09:36,720 with the RP2040 and 2350 in mind, 235 00:09:37,040 --> 00:09:41,920 that small QFN size with very specific capacitor placement, 236 00:09:42,290 --> 00:09:44,760 et cetera, and I can solder some of that stuff, 237 00:09:44,820 --> 00:09:46,680 I will admit, I have some experience with it, 238 00:09:47,260 --> 00:09:50,160 but I'm finally trying to do the assembly stuff 239 00:09:50,260 --> 00:09:51,780 with these PCB manufacturers. 240 00:09:52,640 --> 00:09:54,740 A, to save time, probably save cost, 241 00:09:54,820 --> 00:09:55,840 'cause it's always hard to source 242 00:09:55,890 --> 00:09:57,100 some of these components by yourself. 243 00:09:57,900 --> 00:09:59,240 And I don't know, just be better, 244 00:09:59,460 --> 00:10:02,300 'cause I feel bad for the people I've sold boards for 245 00:10:02,610 --> 00:10:05,839 and stuff in the past, there's probably flux on them 246 00:10:05,840 --> 00:10:05,960 and 247 00:10:05,960 --> 00:10:06,560 like this other 248 00:10:06,560 --> 00:10:08,680 job is just inadequate, 249 00:10:09,160 --> 00:10:11,800 but as long as it works, right? 250 00:10:12,360 --> 00:10:14,340 - So tell me about one of the boards that you've designed. 251 00:10:15,000 --> 00:10:15,720 - So I've done a couple, 252 00:10:16,220 --> 00:10:19,180 probably my most popular is what I call the PicoProm. 253 00:10:19,620 --> 00:10:22,240 It was actually a project started by George Foot 254 00:10:22,640 --> 00:10:23,800 on GitHub, right? 255 00:10:24,100 --> 00:10:26,660 And he just breadboarded Raspberry Pi Pico, 256 00:10:27,000 --> 00:10:28,720 and you're gonna hear me mention that a lot. 257 00:10:29,340 --> 00:10:30,020 It's one of my favorites, 258 00:10:30,640 --> 00:10:32,779 but it just a breadboarded a Raspberry Pi Pico 259 00:10:32,780 --> 00:10:36,260 to program EE proms, which are electrically erasable, 260 00:10:36,560 --> 00:10:39,000 programmable, read-only memory, which are commonly 261 00:10:39,380 --> 00:10:42,240 used in old computers, like the Apple II, things like that, 262 00:10:42,640 --> 00:10:44,700 as well as game cartridges and so on, 263 00:10:44,820 --> 00:10:47,500 like the NES and SNES and so on. 264 00:10:48,040 --> 00:10:51,840 So at the time, I was actually really into the Atari 2600. 265 00:10:52,560 --> 00:10:55,060 I'm a little bit of a masochist when it 266 00:10:55,060 --> 00:10:56,240 comes to programming sometimes. 267 00:10:56,920 --> 00:10:59,900 And I really like assembly code, like something about that. 268 00:10:59,940 --> 00:11:01,060 It's just so raw. 269 00:11:01,220 --> 00:11:02,960 and you're in control of everything. 270 00:11:03,200 --> 00:11:05,020 You're the one that has to write 271 00:11:05,220 --> 00:11:08,100 every single little instruction that that CPU processes. 272 00:11:08,540 --> 00:11:09,220 It's just really exciting. 273 00:11:09,400 --> 00:11:11,820 And the Atari was a great platform for that. 274 00:11:12,000 --> 00:11:14,400 So I actually made one game, it's called Spider Web. 275 00:11:15,139 --> 00:11:17,860 Nothing special, it's kind of goofy, a little arcade game. 276 00:11:18,680 --> 00:11:21,440 But I wanted to actually create physical cartridges, right? 277 00:11:21,740 --> 00:11:23,240 And so I needed to figure out a way 278 00:11:23,520 --> 00:11:25,040 to program these cartridges. 279 00:11:25,620 --> 00:11:27,640 And so I found that project, which is super simple. 280 00:11:27,740 --> 00:11:29,380 You know, the Pico has a ton of GPIO, 281 00:11:29,980 --> 00:11:32,780 and they're bidirectional, you can really control them 282 00:11:32,820 --> 00:11:35,340 how you want, and so they literally just plug straight 283 00:11:35,420 --> 00:11:38,080 to this chip to program it, which is great 284 00:11:38,440 --> 00:11:40,160 for if you're programming one or two chips 285 00:11:40,300 --> 00:11:41,700 and you're in a rush or something, 286 00:11:42,400 --> 00:11:45,520 but if you're like, I need to make 30, 40 cartridges, 287 00:11:46,340 --> 00:11:47,920 I gotta program a lot of chips for that, 288 00:11:48,300 --> 00:11:49,680 you need something a little bit more durable. 289 00:11:50,060 --> 00:11:52,780 So I took that design and I expanded it 290 00:11:53,260 --> 00:11:56,380 and added a few features, rewrote a lot of the software 291 00:11:56,480 --> 00:11:57,680 to be a little bit more dependable, 292 00:11:58,220 --> 00:12:01,940 and create a PCB for it and a case and everything, 293 00:12:02,000 --> 00:12:02,700 the whole shebang. 294 00:12:03,180 --> 00:12:03,980 And that did pretty well. 295 00:12:04,040 --> 00:12:05,800 I was pretty excited about that. 296 00:12:06,260 --> 00:12:08,680 Other than that, I've done a few smaller little boards, 297 00:12:08,760 --> 00:12:10,940 like little chip adapters, things like that. 298 00:12:11,660 --> 00:12:14,380 I've been working on two other projects. 299 00:12:14,920 --> 00:12:16,900 My synthesizer I mentioned earlier, the little sandbox, 300 00:12:18,520 --> 00:12:21,200 which at some point you have to decide when to stop. 301 00:12:21,760 --> 00:12:24,140 And so far I've done like four different revisions 302 00:12:24,380 --> 00:12:25,560 before even releasing anything. 303 00:12:26,440 --> 00:12:27,180 And I'm still not done. 304 00:12:27,680 --> 00:12:30,880 So, and then the other one is, I've been working a lot, 305 00:12:30,940 --> 00:12:33,380 like you mentioned the guitar, audio, say guitar, 306 00:12:33,600 --> 00:12:35,580 the audio effects stuff with CircuitPython. 307 00:12:36,199 --> 00:12:38,480 I've been working on a guitar pedal design. 308 00:12:38,840 --> 00:12:40,180 That's kind of been my dream, right, 309 00:12:40,180 --> 00:12:42,840 is to have a guitar pedal that you can just 310 00:12:43,240 --> 00:12:44,240 program how you want, you know? 311 00:12:44,660 --> 00:12:48,160 I probably have a shelf of like 50 pedals over here 312 00:12:48,240 --> 00:12:51,480 that all do very different, very weird bespoke things, 313 00:12:51,880 --> 00:12:53,700 which are really cool, but I feel like 314 00:12:53,700 --> 00:12:55,340 if I was starting out from scratch, 315 00:12:55,980 --> 00:12:58,580 I would, and you know, I like tinkering with this stuff, et cetera. 316 00:12:59,000 --> 00:13:03,040 I'd really like a pedal that, okay, when you get it, maybe it's a delay, 317 00:13:03,380 --> 00:13:06,400 something simple, but Hey, I want to play around with distortion. 318 00:13:06,540 --> 00:13:08,620 I'm playing, you know, some Metallica or something. 319 00:13:09,130 --> 00:13:10,440 You want something a little different. 320 00:13:10,830 --> 00:13:13,580 And instead of having to go off and get another pedal, Hey, why don't we 321 00:13:13,720 --> 00:13:15,620 just upload this Python script to it? 322 00:13:15,700 --> 00:13:17,460 Boom, totally different belt, that kind of thing. 323 00:13:17,670 --> 00:13:21,660 So I've been experimenting with that and, um, I'm on to my second revision. 324 00:13:22,340 --> 00:13:24,640 So hopefully it's the last, but we will see. 325 00:13:25,020 --> 00:13:25,340 Nice. 326 00:13:25,460 --> 00:13:28,820 >> You've contributed to both CircuitPython and Arduino. 327 00:13:29,580 --> 00:13:31,560 What are the advantages to each that you see? 328 00:13:32,380 --> 00:13:36,400 >> Both environments are a bit of a means to an end. 329 00:13:37,420 --> 00:13:38,860 With Arduino, to me, 330 00:13:39,160 --> 00:13:42,800 I really see that as bare metal programming. 331 00:13:44,200 --> 00:13:45,800 Sure, you have a lot of libraries, 332 00:13:45,960 --> 00:13:48,320 there's a uniform framework, 333 00:13:49,160 --> 00:13:51,080 and that helps you get started with certain chips, 334 00:13:51,080 --> 00:13:52,980 and you can port things between chips, 335 00:13:53,260 --> 00:13:58,280 where you can't necessarily do if you program specifically for one chip, you know, bare metal, 336 00:13:58,780 --> 00:14:04,000 whatever, within their SDK. So that's nice. And you know, Arduino has been around forever, 337 00:14:04,260 --> 00:14:08,540 you know, back in 2012, when I was doing some of this stuff, I was coding an Arduino and here in 338 00:14:08,560 --> 00:14:14,500 2025, 13 years later, it's still around. And so there's a lot of information out there. However, 339 00:14:14,780 --> 00:14:20,299 I do find that the documentation, there's no standardized format, right? And the documentation 340 00:14:20,300 --> 00:14:22,860 and get a little hairy, even, I'm sorry to say this, 341 00:14:23,000 --> 00:14:24,240 even with some of the Adafruit libraries, 342 00:14:24,310 --> 00:14:25,980 I find it a little bit hard to follow. 343 00:14:26,350 --> 00:14:27,500 And so what I end up doing, 344 00:14:27,650 --> 00:14:29,280 and thankfully I have the knowledge to do this, 345 00:14:29,360 --> 00:14:31,620 I end up going to the library's GitHub 346 00:14:31,940 --> 00:14:33,720 or whatever source code they're using 347 00:14:34,540 --> 00:14:36,540 and looking directly at the header files 348 00:14:36,640 --> 00:14:40,640 and just reading the C++ itself or C. 349 00:14:41,660 --> 00:14:43,780 And that's good, I can use that in a lot of cases, 350 00:14:44,020 --> 00:14:45,680 but I would definitely say for a beginner, 351 00:14:46,280 --> 00:14:47,320 that's pretty daunting. 352 00:14:47,760 --> 00:14:49,720 Doing basic stuff, Blink and stuff like that, 353 00:14:49,940 --> 00:14:51,580 Not a problem, but when you get in the weeds, 354 00:14:52,150 --> 00:14:55,860 you might as well be writing in the SDK for the hardware 355 00:14:55,920 --> 00:14:57,240 platform itself sometimes. 356 00:14:58,040 --> 00:15:01,660 However, I don't want to really poo-poo on Arduino too much, 357 00:15:02,180 --> 00:15:03,220 except I will poo-poo-- 358 00:15:03,220 --> 00:15:06,260 poo-poo, sorry, I don't know if that's the right word-- 359 00:15:06,260 --> 00:15:06,960 on its IDE. 360 00:15:07,340 --> 00:15:09,620 I really am not a fan of the IDE. 361 00:15:10,110 --> 00:15:11,940 I feel like it has a lot of growing pains, 362 00:15:12,530 --> 00:15:14,120 and hopefully they make a better one these days. 363 00:15:14,160 --> 00:15:16,360 I know there's V2 out already, and it's OK, 364 00:15:17,140 --> 00:15:18,700 but it's not my style. 365 00:15:19,990 --> 00:15:21,220 On the other hand, CircuitPython, 366 00:15:21,860 --> 00:15:23,680 anytime I wanna just make something happen, 367 00:15:23,690 --> 00:15:25,680 I wanna prototype something really quick, 368 00:15:26,280 --> 00:15:27,140 it is the way to go. 369 00:15:27,460 --> 00:15:29,560 There's so many libraries built into it 370 00:15:30,160 --> 00:15:32,560 that are at your fingertips that are dependable, 371 00:15:32,940 --> 00:15:34,200 have very good documentation. 372 00:15:34,440 --> 00:15:36,020 I think that's one great thing they did 373 00:15:36,240 --> 00:15:37,160 like with read the docs, 374 00:15:37,340 --> 00:15:39,820 making that the format across the board, 375 00:15:40,340 --> 00:15:42,500 everything's written out exactly as you need it. 376 00:15:42,900 --> 00:15:45,720 Now, there's still room for more learn guides, 377 00:15:45,900 --> 00:15:49,340 more examples, you know, it's when do you know when a circuit 378 00:15:49,450 --> 00:15:55,120 Python came out? 2017? Wow. Okay. Okay. Yeah, yeah. So I 379 00:15:55,120 --> 00:15:57,440 mean, there's still room for more examples more than great. 380 00:15:57,500 --> 00:15:59,540 It's but that'll always be the case, especially as new 381 00:15:59,840 --> 00:16:03,620 hardware comes out. But that the the art out of fruit supplied 382 00:16:03,720 --> 00:16:06,700 libraries, and even better the community libraries, just 383 00:16:06,760 --> 00:16:11,520 fantastic. Everything's I like what Scott does the he has a 384 00:16:11,540 --> 00:16:15,060 name for it where you're like the property based API APIs, 385 00:16:15,440 --> 00:16:17,440 where like, hey, you're using a temperature sensor 386 00:16:17,610 --> 00:16:19,560 instead of, hey,.getTemperature, 387 00:16:19,900 --> 00:16:21,900 you're actually just, what's the temperature, right? 388 00:16:21,970 --> 00:16:22,660 And that's really nice. 389 00:16:22,760 --> 00:16:23,720 I like that approach. 390 00:16:24,460 --> 00:16:26,240 I know when I wrote my first libraries, 391 00:16:26,960 --> 00:16:28,980 it was hard for me to get a feel for that, 392 00:16:29,040 --> 00:16:31,400 but now that I really understand how all that works, 393 00:16:31,860 --> 00:16:34,740 it's very cool, and I like working in it quite a bit. 394 00:16:35,640 --> 00:16:37,300 And also, on top of that, Circup, 395 00:16:37,380 --> 00:16:40,420 and I just learned about CircFirm, that tool. 396 00:16:40,780 --> 00:16:43,640 In fact, it was in the last, and I'm sorry to date this, 397 00:16:43,860 --> 00:16:46,460 but it was in the last weekly meeting they mentioned it. 398 00:16:46,460 --> 00:16:47,860 I was like, I didn't even know that exists. 399 00:16:48,360 --> 00:16:50,300 And it's just a quick command line 400 00:16:50,600 --> 00:16:51,800 to just install the firmware 401 00:16:52,540 --> 00:16:54,320 and upload any libraries, et cetera. 402 00:16:54,400 --> 00:16:54,880 It's awesome. 403 00:16:55,880 --> 00:16:58,880 Honestly, the device even being used as a USB drive, 404 00:16:59,020 --> 00:16:59,500 super cool. 405 00:16:59,860 --> 00:17:02,220 So I'm actually taking some classes right now 406 00:17:02,300 --> 00:17:03,560 in a community college of mine, 407 00:17:03,620 --> 00:17:05,600 just furthering education, et cetera. 408 00:17:06,160 --> 00:17:08,680 There's a student there that I've grown pretty fond of 409 00:17:09,020 --> 00:17:10,020 and they're a little bit newer, 410 00:17:10,319 --> 00:17:11,240 they're a little younger than me 411 00:17:11,959 --> 00:17:13,620 and they have no experience. 412 00:17:13,780 --> 00:17:17,220 in this and I started introducing like telling him about like how all this 413 00:17:17,420 --> 00:17:19,400 works and we were in like a robotics class, right? 414 00:17:19,480 --> 00:17:23,520 So they were just getting a hand of some of this and anyway, I ended up giving 415 00:17:23,839 --> 00:17:27,760 him an extra Pico I had laying around and I was like, I'm gonna load this 416 00:17:27,959 --> 00:17:31,540 thing up with CircuitPython, put some, you know, a little blink script on 417 00:17:31,580 --> 00:17:33,000 there, just get them familiar with it. 418 00:17:33,500 --> 00:17:36,860 And it kind of blew his mind that he could just plug it in and just shows up 419 00:17:36,880 --> 00:17:38,840 as a flash drive and the code's right there. 420 00:17:39,120 --> 00:17:40,520 There's no compilation, no nothing. 421 00:17:40,860 --> 00:17:43,200 And in fact, in the robotics class, we were using Arduino. 422 00:17:44,420 --> 00:17:46,100 And I remember it was so confusing. 423 00:17:46,220 --> 00:17:50,700 When we first did it, he was like, wait, so I have to-- 424 00:17:50,800 --> 00:17:53,440 it doesn't just upload to the board and compile there. 425 00:17:54,180 --> 00:17:55,840 It was new to that whole workflow 426 00:17:56,020 --> 00:17:58,940 of having to compile things for a different platform 427 00:17:59,120 --> 00:18:01,440 beforehand, and then uploading that firmware 428 00:18:01,490 --> 00:18:02,760 through the bootloader, all that. 429 00:18:02,760 --> 00:18:04,140 It was too complicated, et cetera. 430 00:18:04,840 --> 00:18:06,200 Now, I think there are still some growing pains. 431 00:18:06,840 --> 00:18:08,280 I've probably said that a couple of times now 432 00:18:08,380 --> 00:18:09,120 with CircuitPython. 433 00:18:09,820 --> 00:18:12,860 I know we're making the switch to Zephyr eventually, 434 00:18:13,500 --> 00:18:16,820 but I would really love to be able to use multiple cores. 435 00:18:17,520 --> 00:18:20,340 A lot of my programs, they typically have a core 436 00:18:20,440 --> 00:18:22,760 that's like for real-time processing, 437 00:18:22,810 --> 00:18:24,360 you know, audio, stuff like that. 438 00:18:24,820 --> 00:18:27,420 And then another core for updating displays, 439 00:18:27,740 --> 00:18:28,560 handling controls. 440 00:18:29,200 --> 00:18:31,020 I'd love to be able to use that in CircuitPython, 441 00:18:31,240 --> 00:18:34,280 especially because you do have a little bit of overhead, 442 00:18:34,580 --> 00:18:38,019 and I think that would drastically improve on boards 443 00:18:38,020 --> 00:18:40,220 that can support those multiple cores. 444 00:18:41,360 --> 00:18:42,740 - Yeah, it'll be pretty interesting to see 445 00:18:43,340 --> 00:18:45,480 what Zephyr brings to the table once that's integrated. 446 00:18:45,840 --> 00:18:46,240 - For sure, 447 00:18:46,600 --> 00:18:47,020 I'm excited. 448 00:18:47,140 --> 00:18:50,320 I know right now it's mostly focused on Nordic chips 449 00:18:50,660 --> 00:18:53,080 and some other stuff that I've never heard of before, 450 00:18:53,600 --> 00:18:56,520 but I'm excited to see what the process is gonna be like 451 00:18:56,600 --> 00:18:58,460 when it moves to SAMD21, 452 00:18:59,100 --> 00:19:02,020 ESP32, Pico, et cetera. 453 00:19:02,240 --> 00:19:02,640 That'd be great. 454 00:19:03,540 --> 00:19:05,680 - So we've mentioned the audio effects a couple of times. 455 00:19:06,260 --> 00:19:09,400 What are you working on next as far as audio effects go? 456 00:19:10,160 --> 00:19:12,600 I have to admit, I'm a little bit stale right now. 457 00:19:12,720 --> 00:19:14,820 I've mostly just been providing tweaks 458 00:19:14,900 --> 00:19:18,380 as we work towards the 10.x, alpha and beta, 459 00:19:18,580 --> 00:19:21,620 just improving things on existing effects. 460 00:19:22,400 --> 00:19:25,000 However, I still have some long-term features 461 00:19:25,040 --> 00:19:28,380 I've been working on, but they're hurdles for sure. 462 00:19:29,120 --> 00:19:33,200 One thing that is incredibly important is bi-directional I2S. 463 00:19:34,060 --> 00:19:41,480 In case viewers aren't familiar, I2S is pretty much the standard, I guess, for audio data 464 00:19:41,680 --> 00:19:46,120 transmitting real-time DACs and ADCs and so on. 465 00:19:46,470 --> 00:19:51,160 There are other standards, PDM, or you could always just do PWM out, et cetera. 466 00:19:51,660 --> 00:19:55,260 But for a lot of the projects that I want to do, I want to have audio input. 467 00:19:55,560 --> 00:20:00,320 And right now, that's very difficult within CircuitPython, just with the way that the 468 00:20:00,480 --> 00:20:01,680 framework is constructed. 469 00:20:02,600 --> 00:20:08,420 I've begun the process of introducing some actual audio input that goes into the whole 470 00:20:08,940 --> 00:20:09,680 audio stream. 471 00:20:09,840 --> 00:20:15,040 So just like it is now where you can bring up a wave file or synthesizer and play that 472 00:20:15,080 --> 00:20:19,680 out through an audio output, you can do the same with real-time audio. 473 00:20:19,920 --> 00:20:22,340 But it's not great. 474 00:20:23,380 --> 00:20:25,320 There needs to be some core changes. 475 00:20:26,050 --> 00:20:31,040 And I've done some of those changes, but I'm still dealing with some intermittent issues. 476 00:20:31,720 --> 00:20:35,420 So right now there's a PR on CircuitPython with some of my work on that. 477 00:20:35,540 --> 00:20:36,440 That's just a draft. 478 00:20:36,800 --> 00:20:41,540 I haven't touched it in a while, but I really need to, especially if I want to realize some 479 00:20:41,540 --> 00:20:42,960 of these projects I've been working on. 480 00:20:43,920 --> 00:20:44,680 And I think it's just cool. 481 00:20:45,020 --> 00:20:45,600 It's just really cool. 482 00:20:46,580 --> 00:20:46,880 I agree. 483 00:20:47,720 --> 00:20:52,140 I've also been playing around with a lot of different audio effects in Arduino. 484 00:20:52,640 --> 00:20:58,000 In fact, the pitch shift effect I recently added to the core, that was kind of one of 485 00:20:58,000 --> 00:20:59,880 the foundations of what I was working on there. 486 00:21:00,560 --> 00:21:02,900 And there's a couple other effects that we've been working on-- 487 00:21:02,900 --> 00:21:05,200 flanging, things like that-- 488 00:21:05,200 --> 00:21:06,340 which aren't quite ready, that I've 489 00:21:06,360 --> 00:21:07,420 been playing around with in Arduino, 490 00:21:08,160 --> 00:21:10,680 that hopefully should be pretty easy to go in. 491 00:21:11,160 --> 00:21:13,860 I've also been wanting to streamline the entire effects 492 00:21:13,960 --> 00:21:14,200 system. 493 00:21:14,320 --> 00:21:16,040 Right now, there's a lot of duplicate code. 494 00:21:16,520 --> 00:21:18,460 And I'm sure some of the other contributors 495 00:21:18,880 --> 00:21:20,500 aren't a huge fan of that, because we're 496 00:21:20,680 --> 00:21:22,620 reducing that flash size little by little. 497 00:21:23,300 --> 00:21:26,640 So I think there's a lot of room to streamline that and save 498 00:21:26,660 --> 00:21:29,959 a lot of flash and make it easier for other people 499 00:21:29,960 --> 00:21:32,620 to add effects in the future, where you don't have to worry 500 00:21:32,720 --> 00:21:34,580 about all the framework so much. 501 00:21:34,620 --> 00:21:36,220 You can just be like, hey, here's my effect. 502 00:21:36,560 --> 00:21:37,620 Here's the properties I need. 503 00:21:38,060 --> 00:21:38,940 And here's the process. 504 00:21:39,380 --> 00:21:40,080 That would be great. 505 00:21:41,130 --> 00:21:42,220 If anyone wants to learn more 506 00:21:42,220 --> 00:21:43,060 about your work, 507 00:21:43,200 --> 00:21:43,840 where should they go? 508 00:21:44,880 --> 00:21:46,920 So if you want to support my work, 509 00:21:47,580 --> 00:21:49,500 right now I do have a Tindy store. 510 00:21:50,000 --> 00:21:52,460 I kind of took some notes from some other contributors 511 00:21:52,620 --> 00:21:55,320 to CircuitPython and put up some of my products on there. 512 00:21:55,440 --> 00:21:56,440 And so far it's been cool. 513 00:21:56,960 --> 00:21:58,240 But I've kind of slowed down a bit. 514 00:21:58,560 --> 00:22:07,460 Some stock is you know I'm out of stock on a couple of my big products which I I need to increase on but there's still a few things on there if you want to check it out. 515 00:22:08,020 --> 00:22:14,040 But on top of that for my music I do have SoundCloud which I'm sure will be shared in the description on this. 516 00:22:14,700 --> 00:22:17,940 And then for my just general stuff I'm doing I do have a blog. 517 00:22:18,340 --> 00:22:19,100 I have. It's weird. 518 00:22:19,200 --> 00:22:27,380 There's like four different blogs on it for you know different projects I'm working on my music and then also just some old stuff I have up there. 519 00:22:27,680 --> 00:22:31,540 It's probably not great, but better there 520 00:22:31,640 --> 00:22:32,680 than the Wayback Machine. 521 00:22:33,280 --> 00:22:35,240 That's generally how you want to get in touch with me. 522 00:22:35,500 --> 00:22:37,760 I have contact forms, email, et cetera. 523 00:22:38,520 --> 00:22:40,240 - I'll link to all of those in the show notes. 524 00:22:40,560 --> 00:22:41,300 - Oh, I forgot to mention, 525 00:22:41,630 --> 00:22:43,160 I do have a YouTube channel as well. 526 00:22:43,700 --> 00:22:46,040 I'm not as prolific now, but every now and then 527 00:22:46,080 --> 00:22:47,820 when I have a big product update, 528 00:22:48,260 --> 00:22:50,160 or if I have CircuitPython libraries, 529 00:22:50,300 --> 00:22:51,660 I've been working on little projects. 530 00:22:51,850 --> 00:22:54,440 I do my own little show and tells on there sometimes, 531 00:22:54,920 --> 00:22:55,600 and deep dives. 532 00:22:56,140 --> 00:22:59,940 I'm taking a lot of keys from out of fruit on this one, but if you're interested in some 533 00:22:59,940 --> 00:23:00,060 of the 534 00:23:00,060 --> 00:23:02,040 work I do, that's where you can find it. 535 00:23:02,590 --> 00:23:06,120 Last question I ask each guest, if starting a new project or prototype, 536 00:23:06,580 --> 00:23:07,120 what board do 537 00:23:07,120 --> 00:23:07,660 you reach for? 538 00:23:08,280 --> 00:23:09,920 So I am a glutton for the Pico. 539 00:23:11,020 --> 00:23:14,820 I got to say, you know, there's a lot of boards out there, but the Raspberry Pi Foundation 540 00:23:15,220 --> 00:23:18,040 has done a great job and they always have providing documentation. 541 00:23:19,120 --> 00:23:22,840 I was going to say supply, but I know there was a big shortage on pies a couple of years 542 00:23:22,980 --> 00:23:24,520 ago, reasonably so. 543 00:23:25,260 --> 00:23:28,020 It's just such a cool little fun, inexpensive. 544 00:23:28,480 --> 00:23:29,060 That's another thing. 545 00:23:29,120 --> 00:23:30,780 I'm very cost driven, you know, 546 00:23:30,780 --> 00:23:31,980 'cause anything I work on, 547 00:23:31,980 --> 00:23:34,840 I wanna make sure that I could take something like that 548 00:23:34,900 --> 00:23:36,780 to market at some point if I really wanted to. 549 00:23:37,340 --> 00:23:39,220 And when you're working with a platform where it's like, 550 00:23:39,280 --> 00:23:41,940 well, it's 30, 40 bucks for this dev board, 551 00:23:42,400 --> 00:23:44,700 it makes it a little bit harder to recommend, you know, 552 00:23:44,820 --> 00:23:46,600 and potentially sell at some point. 553 00:23:47,280 --> 00:23:48,300 So the Pico is great for that. 554 00:23:48,340 --> 00:23:49,880 And I love the cast lead pads 555 00:23:49,880 --> 00:23:52,100 where you can just plop it on a board and solder it down, 556 00:23:52,140 --> 00:23:52,920 make it pretty permanent. 557 00:23:53,580 --> 00:23:54,180 It's just awesome. 558 00:23:54,820 --> 00:23:58,040 And I use some other Pico-based boards, you know, some of the Adafruit ones, 559 00:23:58,180 --> 00:23:59,520 some of the smaller form factors, 560 00:24:00,040 --> 00:24:00,960 but I just, I love that 561 00:24:00,960 --> 00:24:01,820 platform. 562 00:24:03,260 --> 00:24:03,920 That's a great pick. 563 00:24:05,060 --> 00:24:06,100 Cooper, thanks so much for coming on 564 00:24:06,100 --> 00:24:06,460 the show. 565 00:24:07,040 --> 00:24:07,480 No problem. 566 00:24:07,560 --> 00:24:09,100 Thank you so much for inviting me, Paul. 567 00:24:09,260 --> 00:24:10,160 I really appreciate it. 568 00:24:10,160 --> 00:24:12,660 I love what you do here and I love listening to the podcast. 569 00:24:12,900 --> 00:24:13,540 So I'm 570 00:24:13,540 --> 00:24:14,220 looking forward to it. 571 00:24:14,940 --> 00:24:16,840 Thank you for listening to the CircuitPython show. 572 00:24:17,420 --> 00:24:20,120 You can find links to Cooper's blog, YouTube channel, and 573 00:24:20,120 --> 00:24:21,480 Tindy store in the show notes. 574 00:24:21,980 --> 00:24:25,260 And if you'd like to learn more about the new audio effects in CircuitPython that Cooper 575 00:24:25,400 --> 00:24:28,620 has contributed to, check out the panel discussion in episode 43. 576 00:24:29,160 --> 00:24:29,840 Until next time, 577 00:24:30,000 --> 00:24:30,780 stay positive.