 And welcome to the show. Here we are. It is the big 200th episode of John Park's workshop. I'm John Park. Here we are broadcasting live for Adafruit Industries. And wow, I am so excited to have everyone here hanging out over in the Discord chat and the YouTube chat. So thank you, thank you, thank you for showing up to this. It's really fun and exciting to look down at my notes. I keep notes for every episode as I create the show and I just have them all in one big huge document. And I number them and then I just saw the other day, hey, we're creeping up on 200. So let's make a little bit of an event of it. So here we are. I am hopeful that we've got a clean and clear stream today. Let me know if you're seeing terrible amounts of glitching but it looks like things are off to a smooth start. We're broadcasting all over the place. So we go to Facebook, we go to Twitter, which is Periscope, Twitch, LinkedIn Live, YouTube of course and probably a couple other places I'm not thinking of. And yeah, it looks good. I'm seeing one small warning over on the YouTube dashboard saying it doesn't love the bit rate but we'll see. Hopefully that's just an old error and it hasn't bothered to clear that. Hi, Rich Sad, he says clean and clear. Well, thank you, everyone. By the way, who am I talking to? You may wonder, this is our Discord channel and we have a Discord server, the Adafruit Discord server. You can get there by going to adafruit.it slash discord. You'll get an instant invite, join in. And this is the live broadcast chat channel. We have a whole bunch of different channels that cover a bunch of different things but this is the one where people tend to gather to hang out while we're doing a live stream which is indeed what we're doing right now. Let's see, let me pull that off of there and let's see. The, wow, it's distracting. I have an external monitor over here. It's called a confidence monitor that shows my live stream. It's positioned right in front of the camera. I look at what I'm at the workbench and it is glitching. I think it's just an HDMI glitch but that's disturbing. I don't think you guys are seeing that glitch. So let's see. First of all, as part of the 200th episode festivities and thank yous, I want to present you with a coupon code in case you were thinking of going and buying some stuff over in the Adafruit store today. So you can head to Adafruit and throw some stuff in your cart and at the end, on the way out, you can type in this coupon code, JPthanks. JPthanks is going to get you 10% off, I believe, in the store. So go check out some cool products, some cool things over in the Adafruit.com store. And on the way out, it'll ask for a coupon code. You can type in JPthanks and that is going to get you the 10% off on the entire order. So I believe that's good on anything except for gift certificates and subscriptions, such as the Adabox subscription. Let's see. Speaking of Adabox subscriptions, I wanted to say head on over to adabox.com. It looks an awful lot like this right here. If you head to adabox.com, you can subscribe. I think we still have some subscriptions left. And that's going to be coming out in October, later in October. So we're excited. This is a Halloween edition, as you might have guessed. I don't think I'm giving too much away when I say that. So head on over there. Subscribe or subscribe someone. If you know someone who you think would like an Adabox in their life, you can go and get them one. All right. So the other thing I wanted to mention early on is we've got our jobs board. So if you head to jobs.adafruit.com, you can participate in a free and excellent job board where you can post up positions that you are looking to fill or you can look for work if you're in the market for freelance work, contract work, full-time, part-time, remote on location. It's all there. Have you seen this one? Seeking an influencer and content creator Rockstar, DigiKey is looking to bring someone on to do more content, more video content, I believe. So if that's you, go check out that listing and apply for that. That looks exciting and fun. DigiKey are great people to work with. So if you build projects and like to show them off, that could be the job for you. All right. Let's see. What else is happening here? Let me turn our attention to my product pick of the week this week. So I do a show on Tuesdays. It's called JP's product pick of the week. And every week, I highlight a product from the Adafruit Store, show it off, play around with it, get excited about it, hopefully get you excited about it. And this week, I did the BrainCraft hat for Raspberry Pi. The show is normally around 20 minutes, give or take. And during the show, you get a 50% off discount on most of the products. This week, it was a 50%, whopping 50% off on the BrainCraft hat, which is perfect if you're interested in doing machine learning types of things. And then I make a one minute little recap video of that, which I will show you right now. Check it out. It is the BrainCraft hat for machine learning on the Raspberry Pi. Raspberry Pi 4 with the BrainCraft hat right on top of it. I'm running the TensorFlow Lite object recognition. And it is searching for objects. I actually have the headphone output going into a little amplifier and speakers. Let's start off with a really popular one. Coffee mug. Coffee mug. Excellent. It did a good job with that. Screwdriver mug. It nailed it. Screwdriver. OK, just for the heck of it. What happens with Lars? What does it think of Lars? It thinks Lars. Oh, it thinks Lars is a teddy. That's very cute. He's not, and he's not safe. So don't use that as an example of things you should do, kids. It is the BrainCraft hat. All right, yeah, so go check that one out. It was a fun project to work on. I've never done any of the machine learning stuff on Raspberry Pi. That was using the demo that we have, the learn guide that we have, both Lamor and Melissa have put a lot of work into that. So it's pretty straightforward. It takes some time to get everything set up, but it's really straightforward to get up and running using the little Raspberry Pi camera to look at objects. You can train it yourself. So that's a level I haven't gone. But you could train it on, let's say, lots and lots of different creepy stuffed animals. And then it might be able to actually distinguish our good friend Lars from your average, everyday teddy bear. That's him right there. All right, so how about we do a little thing called the Circuit Python Parsec next? I say yes. Let's do it. The Circuit Parsec. So this is a really simple one today. For the Circuit Python Parsec, what I wanted to do was show you how to constrain range of numbers to a minimum and a maximum that's useful to you. What I have here is a Circuit Playground Express with a potentiometer hooked up as an analog input. So it's being read on pin A2 here, and it's got power and ground. Basically acts as a voltage divider. If you look at the code, I'm importing the things that matter here, the board, so I get pin definitions and analog IO. I actually don't need time in there. I was using that earlier. I'm not now. What I do is I set up that analog pin, pin A2, to be an analog input that I can read with the phrase analog in, that's a variable name, equals analog IO dot analog in board dot A2. Then inside of my main loop, what I'm doing is creating a variable called knob, which is using this key phrase, minmax analog in value, comma, my minimum number. I want it to have a minimum of 20,000. And my maximum, I want to have a maximum of 50,000. So if you watch here when I turn this knob, it's got a little bit of a dead zone at the beginning. And then it grabs it at that 20,000 mark, and it goes up to, it hits 50,000 and stops there. So what this allows me to do is ignore some of that sort of little sloppy beginning and end zone there, which can vary from potentiometer to potentiometer. And instead, I use the nice meaty center where it's predictable. And so that is how you can constrain a set of values using minmax inside of Circuit Python. And that is your Circuit Python Parsec. All right, by the way, I had a question in the chat or on the side there. Someone asked, are you running at 1080p in this stream? Isn't it normally 720p? So I'm running, I actually run this stream at 1080p, which has worked great for nearly 200 episodes. It may be that something has degraded recently in the internet connection or restream or something like that. So I may drop it back down to 720p, which is what I had to do on the Tuesday show. But funnily enough, as I say that, the little YouTube dashboard just gave the all clear, saying that there's no slowdown of the data. Oh, now it's saying that again. OK, so we'll see. Hopefully it's not too maddening for you if that is. I will keep that in mind and maybe try to change that to 720p for the next time. That's the resolution, by the way, the vertical lines of resolution. All right, let's see. Next up, what's happening here? OK, what did I want to do? Oh, you know, before I forget this, I'm going to remind you again that this coupon code JP THANKS will get you 10% off in the store. And that's kind of a segue for me to jump into some THANKS. And that's just because I didn't want to forget later. So I will not thank 200 people or entities, but I did want to thank, first of all, you, the audience and the community of Adafruit, the people who hang out in our chat and our Discord, as well as everyone who is involved in our open source projects, such as CircuitPython in particular, libraries that we have, as well as people who are part of the greater community of creating and sharing these projects, as well as learn guide authors, bloggers, and people who are involved. It is a huge part of this, one of the really exciting parts of this for all of us, I think, is the sense of community that we have with it. So we're really appreciative, and I want to thank you. And it's what makes it possible for me to keep these lights on and do this show week after week. So thank you. And then I also wanted to thank a bunch of people, particularly within Adafruit and some others. I'll say a few by name, I wrote it down so I wouldn't forget, but I want to thank Lamor and PT, of course, and then Stella, and then we have a huge list of people who are in our creative engineering team, and Brent, Colin, Dan, Dylan, Jeff, Catney, Melissa, Noe, Pedro, Phil, B, Scott, Tom, Trevor, Tyler, Justin, Marty, Stephanie, people in our community support, Jelly, new products, and then some people, in particular who help out with some things on the side, particularly when I get confused or need to learn a new thing about code that I just don't know or circuits. In particular, Todd Kurt and Mr. Certainly, C Grover, thank you all so much. And oh, someone said to thank me for taking time to talk to Simply Electronics. That's right, so I spoke with, I did an interview on the Simply Electronics podcast, which will be launching tomorrow, and I'll put a blog post up about that. So that was nice timing just because I'm feeling reflective about all this great fun stuff that I get to do. So thank you, thank you, thank you. And I thank you to Johnny Bergdahl, who I think suggested that I do that podcast. Thanks, Johnny. All right, so enough of that mushy stuff. No, I'm always up for mushy stuff. Why don't we get into some project stuff? Hey, how about that? So just since I set up the green screen and put some layers up, this is a little something we'll be talking about today. So this is the circuit, very simple circuit, for using one of our snap apart NeoKey ortho snap apart PCBs to create a simple four by four layout. So this thing starts out six high, or rather six wide, five high. You can snap it apart into grids. You saw last week I snapped it apart into some unusual shapes to do the number pad, the numpad 4,000, but this one's actually a little more straightforward. And so I think people will like this because it shows you, once you've snapped off the stuff you don't use, you can simply connect to the columns and rows of the matrix one per pin on your GPIO pins of your microcontroller. And then we have power ground and the NeoPixel, which sees that green wire there. So with that layout, the reason I did a four by four layout is because of this, let me pull a cable over here, this really gorgeous aluminum case for mechanical keyboards. So you can see, oh, I've got some knockout happening there from the green screen. You can see we've got this case that has a nice polycarbonate frosted bottom. It has a little metal kickstand there for setting it at an angle on your desk and a little slot there for USB to plug into. And I've got keys and key caps there. In fact, let me pull this up. There's a nice picture of this up on the Adafruit site. Let me switch over to this view here. It is called the four by four key deluxe aluminum keypad shell enclosure. What a name. If you take a look at that, what it has is the key plate for snapping in your mechanical key switches. And then you could use any four by four PCB that fits in there. We're using one with the hot swap sockets. So those little sockets allow you to put different key switches in there and they'll snap into that key plate on the top. And then there is a tiny little bit of room underneath. Here you can see it with some key switches or key caps rather on top. The bottom actually has the, that's a peel off that you get. So it's a bonus gift. If you like peeling off a little protective film, you get to do that. So one of the cool things about this project is that there's just enough room to fit a small microcontroller, such as the QDPI that I have in here. I'm using a QDPI M0, but you could also do QDPI RP2040. I think that would just fit. Should be able to fit an itsy bitsy RP2040 as well. And with either of those RP2040s, you should be able to use Circuit Python. The M0 QDPI is a little too small to actually run some of the keypad things and HID things that we want to fit on there in this particular project. You might be able to really optimize things and get that to work. But I opted to use on LeMore's suggestion, said, hey, why don't you do this in Arduino? So I did. So this is actually a nice opportunity to go back and use Arduino keypad library, which is really also very nice. And we'll take a look at that code in a second. But what this gives us is we have per key NeoPixels and we have HID for USB keyboard stuff or consumer control stuff. So you can use it to launch shortcuts and those types of things. What I set it up for right now is actually USB MIDI and I'm using it as a controller for my, let me switch views here for my little sample station called the black box. Get me out of the way there. So you can see here, this is a little synthesizer that can host a USB MIDI device. Get it to move sideways there. I've got some tight chords plugged in. This thing normally uses a touchscreen, which is pretty cool, but for things like really performance playing and using. So if you look, this is kind of a one-to-one, or it is rather a one-to-one of each of those samples in there. So I've got a kick and a snare. I've got a different kick and a snare. I've got some toms or these. And so this is all just sending out note-on-note-off information, like we've seen before with USB MIDI stuff. I'll do a little brief bit of finger drumming, which again, I am no noise Ruiz, guys awesome, but this is, get ready for it, a beat. I should stop there, because that was largely in time. So I've put on a little closed hat, open hat, some snare-ish or a crash-ish thing, a little cowbell and hand clap, clave kind of sound. So you can also launch little sequences on this, which I've actually done before, and I'll point you, if you're interested in this sort of stuff, I've got a Git repository that I set up for this. Let's go here for a second. So this is under my GitHub, so it's at J Edgar Park. And if you just look in there, I don't have that much code. This is the Neo Trellis Black Box Triggers project. And I originally did this on both the Neo Trellis M4, which basically gives us both functions, the pad playing and the sequence launching. And then I also did it on a 4x4 Neo Trellis driver board, which is, again, at boot up, you can pick which thing it's gonna do. So I may make this work in that way. But I'm excited about this because it allows me to have a version for Arduino as well as Circuit Python. The Neo Trellis stuff was on Circuit Python. And to get it onto mechanical key switches, you can hear, you may be able to hear a little click as I'm pressing. Because I used these box jade super, super clicky switches. If that feels good, great. You might want tactile switches like the MX Browns, or you might just want linears like black or red. So you get a little bit of variety there, some customization in what you want that to feel like, how hard it should be when you press, which is nice because with the elastomer pads of things like the Neo Trellis, you kind of get what you get. It's not that straightforward to customize those. So here you get a bunch of options to pull out your keycaps and try over again. So, and just also I wanted to show, since I didn't really do a gear report, and I've mentioned this thing before, the device I'm playing on is this black box from 1010 Music. And I love this thing to death. This is not a product placement thing. I bought it myself with my money. So I'm happy to share it on here for people who are looking for a desktop sampler workstation type of thing. It's not inexpensive, but it is really cool, particularly if you wanna get away from using the computer if you wanna go doll-less and build songs and sequences and deal with your samples in one place. That's the black box, that's the gizmo that you see there that I'm using. So it's fun. All right, so now since we're digging into this project a little bit, what I wanna do is I wanna head over to the workbench and show you the guts of this thing, because there's an interesting problem to solve which is with that socketed PCB that we have there, we've eaten up about a millimeter or so of room, and there's not a lot of room in here. So in order to fit things like the cutie pie, the wiring, and the USB connection into there, I had to get a little bit creative with some pretty cool Adafruit products. In fact, I wanna show these before I go further, so let me bring back the webpage and I'll show you what product this is. What are these called? The DIY USB connectors. Okay, so let me bring this up here. So if you go to Adafruit, type in DIY USB. These are fantastic. These have solved problems for me in a couple of instances where I'm adding a microcontroller inside of an enclosure. Sometimes it's a commercial product and I don't have a lot of room to work with and I don't wanna modify it. These DIY USB products at Adafruit include these thin little ribbons. I'll show some of this stuff off over at the workbench actually, whoops. And they, wait, I just wanna swap out this view for this, this one here real quick and whoops. Hey now, who's that? That's, there we go. So we get thin little ribbons that connect into these connectors and then you can use things like this Micro-B Jack. Click on that and bring that up. See that, yeah. So this is real thin inline with the board using that ribbon cable and then we can extend USB. So it's a way to make a really thin USB extender without using like a big honkin' one that's sort of a panel mount one. So we have those in the jack and plug for USB Micro-B. We have them for mini. And then we have all, these are really useful for some cases, these right angle ones. There's right angle up and right angle down which let you kinda change the direction of where things can sit. But for this project, these straight ones really saved the day for me. So let's head over to the workbench and I will, I'll show you how that all came together. So let's do a little thing like that. And I'm heading over there right now. You can't see me, but it's true. Hey look, there we are. So here we've got, I can pull some keycaps on this just so you can see what's going on inside. And a keycap puller by the way definitely helps. It's kinda hard to get in there and get enough of a grip on these to yank them with your fingers. These are these pudding keycaps they're called. They have a glowy white side and a black top with a little glow through. So there you can see, you might as well pull this all apart. So I was thinking of changing these out for some different keycaps. And it's fun. Now that I've started, it's hard to stop. Come on, there we go. Get in for you a bit. There we go. So this has a nice metal plate for the key switches. Similar idea and design to what I've done with some of these 3D printed ones but it's not gonna flex at all. These 3D printed ones will flex. So there we go. By the way, some keycap pullers you'll see have this little gripper on the end. That's not for keycaps, it's actually for keys. So with these, you gotta get in there but there's often a little clip at the front and the back that's holding that into the plate. And so if you can get that wedged in there that's how you can pull those out to swap them for other ones. It's pretty tricky to get these out by hand otherwise. So that's a pretty good gripper for it. And it's plastic so you're less likely to mar things and scratch things up. But we don't need to actually pull these off to do what we're gonna do here. I'm gonna unscrew this if I can unloose my screwdriver, there's one. So this little case has these four Phillips screws in the corner that go over this nicely countersunk whole heaven polycarbonate cover which as you saw earlier allows you to see the glow through of some of those neopixels. And that actually goes through two layers. So we have this polycarbonate cover which you can see it's a little frosted which is nice. And then there's this whole kickstand part or rather I'm sorry, no the kickstand is integrated this metal cover here. And of course all of this stuff is optional. You could make a different bottom for this. You could probably go with just the this one here if you want you could use standoffs and make a bigger space for yourself or three print something. So you have a lot of options there but using the stock stuff I wanted to see if I could get that to work. And so now what you see in here, oh sorry, I'm covering that with that. And oh boy, sorry this camera is shaking because of the AC. You know what, I'm gonna stop that for a little bit here and hopefully my equipment and I won't overheat, we'll see. So that camera should steady in a second here since it's not being blown on. So here you can see what I've got in silicon wiring. And I may try to neaten these up with a little bit of heat shrink or something on the final one. I think I'll be doing some rebuilding of this for the learn guide. And then if I pull my USB cable, you can see here this is this really nice extender. Unfortunately, the QDPI itself would not fit right up against that port hole you can see there with this plug in place. It just was a little too thick and the angles weren't right. So that was gonna cause problems. So it'd be lovely if that just happened to fit but it didn't. And so this is, you'll run into this in life. And I think these are really a great solution because you've got this lovely little ribbon cable here which you can actually fold and bend. You don't wanna go crazy with it but you could fold that at right angles, diagonally fold it back on itself. So that is the kind of extension that we get using these little ribbon cables. And these come in different lengths. This is a much longer one here for a different type of project which really lets you change where that USB connection is which is terrific. And this, by the way, here's an example. I've got a little box of these. Here's an example of a right angle plug micro USB one. Like I said, these come in a few different flavors of USB. So that'll allow you to plug into something and then have that ribbon cable coming down at a 90 degree angle, really useful. So I have the plug side going into the QDPI right there. And then I have the jack side up here where it gets plugged into the USB cable. Now that's pretty good as far as strain relief. This will not fit through here. So this would just simply detach if, oops, sorry, this will simply detach if this gets too close. I think in the final what I'm gonna do is try to fix it to this because this is exactly where it fits into that. So I may try using some epoxy or something else, even maybe some Capton tape or something to hook that right to there. So it's not going anywhere. It'll make it easier to unplug that cable there. By the way, another nice thing about these is you can, oh wait, let me switch, let me see if I can switch cameras here, another nice thing about these little DIY USB guys and these ribbon cables is it allows you to change the USB type really easily. So you can see I've got micro USB on one end and USB-C on the other since that's what the QDPI had. If you were switching over to let's say the itsy-bitsy, which I believe has the micro USB, you would just change out which little end on there and these things come apart just by pulling a little retention clip and then sliding out the ribbon cable and then switching for another one. So let's see if we can put that back together actually. I'd love to get that all back in there. Also, I should be insulating some things with some Capton tape. It turns out the way I have this, everything is kind of resting on top of the ribbon cable and I'm not shorting anything, which is good, but it wouldn't hurt to make sure. So let me re-plug my USB cable. And then there, I think so. Switch camera views, there we go. Gotta sweep those off to the side too. So yeah, getting a little bit of heat shrink around those to keep them put would be a good idea. Okay, so you can hear the clicking of all those keys. So that fits there pretty nicely. You could, if you wanted to, leave this open and then have the option to run, let's say a STEMI QT cable out of here or something like that, but for the basic use here, not necessary. So I'll set that back on there and let's put those corner screws back in like so. So this is really, you know, it's fun to make your own 3D printed cases for these keyboard projects or to layer up some acrylic, but it's hard to deny that a milled aluminum enclosure like this is really nice. I think it's milled. It lends a lot of heft and weight to it. This is sturdy as heck. You know, I'm not gonna break this dropping it, which as I've mentioned before, I happen to do that a lot with my 3D printed stuff. They tend to crack when I drop them. This also, the case comes with some rubber feet, little bumper feet to put on here so it doesn't slide around. I just haven't put those on yet, so it's a little slidey. And let's drop that key back on there. It's ready to go. I'm not gonna add the key caps back. I'll just bring this back over to here. And since we're done with this camera for now, I'm gonna put the AC back on. And this is that terrifying moment when I come back into view of chat to hope that people aren't saying that we've dropped frames or gone silent, looks like maybe not. So let me go, let me give you a down shooter view when I plug this in. This will be a lot brighter now without those key caps in the way. And that's, I think, at partial brightness. So yeah, look at that. Oh yeah, that's really blowing this camera out. Let me drop the exposure on that a little bit. A little better. What I actually wanted to do is show you some of the code that goes into this. So let me swap out camera views there. And check in on the, I'm checking in on the chat, by the way. I just gotta pop this up for a second. Someone has given us a terrifying screen cap of Lars. Is that just what's happening in my, that's just what's happening here? Sorry. All right, so code-wise, like I mentioned, I've got this running in Arduino. Where is my Arduino window? There you are. So here's what's happening. Import Adafruit Tiny USB. Include that library if you're using Tiny USB as your USB protocol. If you don't import that, there's some errors with serial right now. So I learned that yesterday. And then I'm importing Adafruit keypad. And keypad is very similar in a lot of ways to Dan Halbert's Circuit Python keypad library. Has some differences, but it's a similar sort of thing. So it's doing this diode matrix keypad very easily and just returning column and row hits. We set it up pretty much the same way. So we tell it which pins we're using for the columns and the rows. And in this case on a QDPI, I'm using A3, A2, A1 and A0 for my rows and the SCL, serial clock A6, A7 and A8 as my columns. And by the way, that's one thing you should know about the, let's see if I can bring this up. You should know about the QDPI is that the pins all serve multiple purposes. So while you may think, oh, there's only so many digital pins I can use and then there's this RX and TX and SCL and SDA, pretty much all of those can be used as digital pins and some of them can also be used as analog pins. So in a case like this, it's no problem to have nine IO pins. I've got four columns, four rows and the one neopixel pin. So that works really well on the QDPI. It's a pretty minimal microcontroller board for this type of use case and it works very nicely. Has all we need. I set up USB MIDI on here you can see and I'm sending it out to MIDI channel one. Then I'm defining the, this I'm not using actually, this is leftover from the example where these print out serial letters that are based on a typical phone keypad. The thing that does matter is the pads are sending out MIDI notes and I've set these up to be MIDI notes 36 through 51, which is what happens to work on the black box to correlate to these pads right here. If you're doing sequence launching, it's a different set of 16 numbers there. Then I set up my pixel order. So the keypad essentially goes zero, one, two, three, four, five, six, seven, eight, nine, 10, 11, 12, 13, 14, 15. Neopixels go zero, one, two, three, four, five, six, seven, eight, nine, so it's a snaking pattern. So at first if you forget this like I did and you just set it up to say, hey, whichever matrix pin key I've pressed down, light up that Neopixel, the first row looks great and then you press the first button of the second row and then the last one lights up. So every other row is backwards. So this fixes that by saying my order is zero, one, two, three, seven, six, five, four, eight, nine, 10, 11, 15, 14, 13, 12. Then we're setting up the keypad object. So that's this line here. It says Adafruit Keypad, Custom Keypad, that's the name of the object, is Adafruit Keypad, Make Keymap Keys, which I'm actually here, this is everything that then runs forever and ever in the code. So custom keypad.tick, that's the sort of clock that checks every cycle through. It looks and sees what's been pressed and then while that's happening, if there are events, any of these keys being pressed, and by the way, you can press multiples at once. So here's both that and that at the same time, or right, so you can press everything, makes an unholy noise. But while a key is pressed, let's simplify it and say one, we are checking and if it's been pressed, then we get the number of the pin that's been pressed or the key that's been pressed, and I'm calling that N and that uses this E.bit.row times rows plus E.bit.column that returns a value 0 through 15. Then I'm sending a MIDI note, which is one of those MIDI notes from that array up above that correlates to that index. I'm sending them at a value of 127, which is sort of full pressure or full velocity rather on MIDI and then going out over the MIDI out channel. I'm then setting a pixel color to correlate to that array I made of the snaking Neopixel, and that's why you'll see these turn magenta when they're pressed and they turn cyan when they're released again. That all happens here in this release section where we send the note off command. So if it's something with a sustain, which none of these are drum noises, so none of these samples sustain or I don't have them set up to, it doesn't matter as much, but you do want to send a note off command, otherwise it'll just drone on forever. So we send MIDI note off and then we change the pixel color back. And then there's a little tiny delay here. It's 10 milliseconds. You could probably drop that or maybe even remove it altogether if you're feeling like you're getting a delay on there. And that wraps it. That's how this works. So I'm gonna close that stuff there. Let's head back over to the chat here for a second and let's see what's going on. So, oh, over in YouTube chat, hello and gamer versus Taylor says, glad we caught this cheers from the School of Cosplay. Good to see you, John. Hello, good to see you too. More cowbell says, Sadie. No, that's not it. That's not it. There we go. And over here in our Discord, what's going on? The, oh, doctor says they've got a QT Pi with the SAM D21. That's the M0, the same one I'm using here. I don't know what to do with it because I ordered them to be a micro macro pad and they can't handle the libraries. Yes, you could use an Arduino or you could look and see what it takes to recompile the CircaPython with the embedded key pad library. Might work on the HackSpress if you add the little two meg flash to it. Let's see, a couple minutes ago, YouTube is back after buffering, says C Grover. So I guess that went bad on us. Sorry about that. All right, I'll try the 720p next Thursday. That's too bad because Thursdays were streaming strong for me before. Yep. Hey, Funkfinger says, funny coincidence, my test plates were delivered during your live stream. Hey, look at this. Let me, look at those beauties. I love it and great looking number pad, some cool, what's that keycap set called, like 1979 or something like that? Really cool looking set and you've got the stabilizer cutouts in the plate there too. So this is someone who's making a really nice looking pad. What's the microcontroller on that, Funkfinger? I'm curious. Yeah, nice looking keycaps. All right, so I think that's gonna do it. Let's head back to that, which is my overwhelming sentiment, thank you. Thanks everyone for coming to watch the show week after week and allowing us to do this. My little additional thank you, putting money where the mouth is this coupon code. So if you wanna go pick up some cool stuff in the Adafruit store and get yourself a nice little 10% off discount on the entire order, other than software gift certificates and subscriptions, then type in JP, thanks in your coupon code section of the cart. All right, 1976. Okay, I'm looking at the, looking at the chat there, that key set is called the 1976. It's a SA profile, which I love, cool keycaps. All right, well, thank you all so much. Thanks, Rich, Seth. Thanks, Andy Calloway. Thank you, Conor McCarter. Thanks to extra Starboard. Thanks, Cup of Coffee. I appreciate it so much and go out and make some fun stuff. Go out and cook up some cool things, all right? Thank you, I'm gonna get out of here and I will see you next Tuesday with another JP's product pick of the week and I'll see you next Thursday with episode 201. And so with that, I will sign off for Adafruit Industries. I'm John Park and this has been John Park's 200th Workshop. Bye-bye, everyone.