 Welcome to the show. It's me, John Park. It's time for John Park's workshop. How are you doing today? And if you're wondering, well, he doesn't really want to hear an answer. How could he possibly hear an answer through the internet? Well, I'll recommend a couple of ways. One, head over to the YouTube chat. Two, head over to the Discord chat. Adafruit's got our own Discord server. And we have the live broadcast chat channel, in effect. It looks like this. This is it right here. Hey, C Grover. Nice to see you. Okay, you're on. Paul Cutler. Tyath. Yes. Andy Cowley. We love an electronic life. Nice to see you. And over in our YouTube, David Desa, Saitha. Saitha, Saitha? I don't know what that is. Hello. Hey, thin man. Hey, Joel H. and Company. Greetings. Thanks for coming here today. I do have a series of tubes right here in my workshop. And I will use them to share with you some neat stuff today and see what you've got going on. So please let me know what's happening over in the chat. Let's see. Stuff that I've got going on. First of all, this. Let me switch to this camera right here. Hey, look. You can see it's kind of dark in the workshop because it turned out some lights to highlight this. This is the L-Cars display that I've been working on and I am this close to being finished. I'm just waiting on some new M4 screws. I added a couple of layers to the back of this, so I need some, I think, 40 or 45 millimeter screws. So I got a new little assortment there that should help with the final assembly here. It works. I've got it now with a couple of different display modes. If we click the middle switch on the matrix portal, we go between nothing and animated mode here. And then you saw it over in the still mode before. I've also got another button that allows you to switch between brightness levels. This is, let's see, I think I've got like eight levels. One, two, three, four, five, six, seven, eight levels of brightness you can do. I have got the mahogany veneer on there, which I stained and put some lacquer on. I think that's looking nice. And I'm super excited because I found some images. Let me see if I can pull these up for you actually. I found some images that Okuda and the art director on Star Trek Picard posted of this exact panel in use. It's like three different places in the Enterprise D. In the bridge there, there's a, let me pull this up. Hold on one second. Let me find the link that I had. Let's see. I think I've got that here in Slack. Stand by. This was a design that was identical to one from the next generations and has been replicated here in, here we go. Let's see if this will lead us there. Okay. Check this out. Let's bring that view there. I'll get myself out of the way. So this was a tweet from Dave Blass. And I don't know Dave, but I think Dave worked on the show. Here's some other people working on the show. If you look at some of these before and afters of the original show and the one they did in Picard, I mean they just nailed it. And you can see right here there's a couple of panels, open image in new tab. So that right there, look, that's it, that's the exact panel. And the reason I have this is this one's actually from the set. This was one that wasn't used because the tinting, they were doing some samples of tinting, but a friend of mine, Ryan, was working on the show and he got permission, he didn't steal, he got permission to bring one home. Another interesting thing I noted, if you look at my, the one that I have here, which I'm making for Ryan by the way, this is not mine to keep, you'll see that it is actually not terrible as far as the glare goes. So if I get a light on there, you'll see it's a little bit matted. This was a coating that they came up with for this. It was not in the original. It was really hard to film these L cars on the original show without getting a lot of glare, so they made a little improved surface ink on top of the acrylic there. So yeah, thin man said interested in the code used to dim the matrix display. I will share that in the guide. That was from C Grover who helped me out with the code. Thank you so much for that. C Grover also has a palette fader that's useful for cases where you have color. I'm actually just blasting white behind the panel here and the color that's baked into the vinyl there is what you're seeing. So I've got that finished up. I'll be writing the guide and I will hopefully, I will hopefully do a little mini page in there of making your own. This will work on any kind of vinyl backlit thing, but I'll see if I can make some some vector graphics that you could use to maybe print out something like this at a sticker shop. You probably do a smaller scale version of this using any of the sticker services out there and then use some front mount adhesive. Question about veneer. Did you follow a guide for veneering or were you already a pro? Neither. I just bought 3M backed adhesive backed veneer. Here's some right here. You can just look for 3M adhesive veneer. So I didn't have to do any gluing or anything like that. It just is mounted on this really great 3M stuff. I've used this before a long time ago to make a wood back on an iPhone. It's great. I in this case cut it first before staining it. Since I'm using a laser cutter and I didn't want to catch on fire and I wasn't sure about the flammability of some of the stains and and lacquers. So cut it then on the laser cutter. You could of course cut it with with any tool that's good at cutting. Veneer really, really sharp knife would work well and then peel off the the sticker there and adhere it. So that was the method there. I took some photos of that in process. I'll show you. Here's the I think this is the exact piece. That came out of the center of that one there. So that should match grain wise there. Yeah, so if you needed to, I guess I could stain that and you could have a little ninety night thing or just lacquer it. Leave it separate color. So that was that on veneer. Fire is bad. Yes, we don't want a big, big fire. Here's another post, actually. Let me see if I can copy image URL with this work. Let's see. It will. OK, so this is really cool. This was actually the first post I saw online of this in use on the on the show. So for Picard. Art director asked Okuda to make something that would go into these two little panel areas on next to some of the the seeding there. And one of them is a pretend cup holder. So that's a little bonus thing there. It looks like a cup holder. It's not a couple of and then right above it is the same panel here. I think it's a different color because my color is baked in there. So so that's not the exact one. But I've seen if you look there, it's a 040278. That's the same number up on the top. So I'm very attuned to this one since I've been staring at it for months now. Where did that post come from in case you're interested? That was Mike Okuda right there. Yeah, that's the post. When we did the Enterprise D in 87 illustrator Andrew Probert wanted to the bridge to have coffee cup holders. This was never added when we recreated the set for Picard. Art director Liz Kluskowski asked me to add a bit of subtle detailing to two small blank black panels. And there you go. There's the cup holder. Yeah, it looks like a cup warmer warmer. Actually, that's that's probably what it is. Hugely unstable cup warmer mug warmer. Keep your coffee hot. So anyway, that is status of that. Look for the guide coming soon. I'll go ahead and put this away. Keep it nice and safe so that I can give that to Ryan. It is right there. So yeah, the backing. I've got an extra layer. You can sell fingerprints on there on the bear acrylic. I've got an extra layer of my foam to give some spacing for some of that wiring. And then I've got a back panel of acrylic, the eighth inch acrylic that'll go on there. And therefore, if you see, I've got these six screws here, those go into thread standoffs, heat set standoffs. So the length needs to be pretty close within about three millimeters or so. So hopefully the new screws that I've got will do that. They've got to be like 40, I think it's 42 millimeters or something like that. I'm not above cutting some screws to length and retapping the tips of them. If I have to, we'll see. All right, well, what else? What else is going on here? We've got a show here. And what I'm going to do on the show today, I've got a coupon code for you that you can use in the Adafruit store. I've got a product pick of the week recap. I have a Circuit Python Parsec. And if you're here, Sea Grover, I think I saw you wave. This one involves you. I'm going to use one of your cool bits of code for touch screens. You'll see in a moment. What else? I've got a new project that I'm launching into here. You can see here, DJ Hero turntables. So after I finish up on the L cars display, I'll be getting back on my computer perfection synth IO synthesizer. But I've got this one that I want to launch off today that'll follow that one up pretty quickly, hopefully. So let's get to it. First of all, coupon code, if you want to go to the Adafruit store, buy some cool stuff, and get a lovely discount, that'll get you 10% off in the store today. You can see we've got some new products listed right there. You can click on View All New Products. The return of the RGB Matrix Shield for Arduino. They've got a new Pi cowbell with a CAN bus connection on it. We have a GPS breakout. We have a light sensor, color sensor breakout. These, I'm going to order a couple of these. These are the conductive plastic slide potentiometer caps or nubbins. These are for our powered flying fader linear actuator style potentiometers so that you can do touch sensing, which is great. I've done that on this project. And actually, when I get these, maybe I'll get three of them. I'll make sure that they work on this project if you remember this one when I touch. It knows I'm touching, so it pays attention, turns the motor off, and when I release, it stays there. So that has been a bit of a journey. These are hard to find. So thanks to Mary and Lamor for hunting these down and getting some in. So I think we've got 100 in there. If you ever wanted to use our motorized slide pots, then this will allow you to use their capacitive touch feature as well. So that's just some of this new stuff. We also got these cool PCB aluminum and FR-4 PCB coasters. Only $2.50. Go grab yourself a coaster. We don't usually do branded stuff with logos, with Adafruit logos. So it's a rare, rare thing. You might also find them useful for a project of some kind. I don't know. Turn them into a touch sensor. I don't know, a giant piano. Scytha asks, do they code the same as regular potentiometers? Yeah, so those slide pots there, they work the same as a voltage divider style potentiometer slide pots. You'll put power, ground, and read the analog output of the wiper. There's an extra pin for driving the motor. And there's another pin for supplying power to the motor. And then there is a pin for reading the capacitive touch sensing. So it's like a regular potentiometer, plus a couple of extra things. We have some guides on them. If you are interested, let's see how quickly we can get to that guide from this. Go to the motorized slide pot. And there's a guide on using the flying faders that I did, just the basics of flying faders, as well as the Darth faders for a more complete project. But this is a good getting started. It'll show you how to send the little motor where you want, how to read the potentiometer, and store some settings. Yeah, so now we have these nubs. Go get some nubs. And like I said, if you want to do all of that and save some money, then Scratch will get you 10% off in the store today. And that's good on any stuff. It won't work on gift certificates, software, or subscriptions, so just physical stuff. But 10% off on your order. Also, by the way, we have a bunch of free stuff. If you go and type in up at the top, just like that, you'll see the offers we have. For $99 or more offers, you get a free permaproto half-size breadboard PCB for $149 or more, not $1.49. $149 or more, you'll get that, the first level prize, plus I probably can't legally call that a prize, freebie. And you'll get a KB2040. I believe the KB2040s now are back to matte black. We are out of the pink ones, so back to matte black KB2040. And if you do a $200 or more, you will get the first two enticements plus the UPS ground shipping for free in the Continental United States. And you'll get 10% off your order with that coupon code Scratch right there. All right, so on Tuesdays, I've got a show. That happens at this very time, 4 o'clock Eastern, 1 o'clock Pacific. And by the way, that reminds me, hold on, I've just interrupted myself, but that reminds me, over on Discord now, I don't know if you knew this, you could type in question mark show times. And that'll tell you what time shows are. We've added a thing. It's question mark show times, let me see, GMT. And that will give you the show times in a particular time zone. So if I do show times Pacific Daylight, did that work? Let me do it this way. Show times Pacific Standard, it doesn't know that one. I'm breaking it, or we're all hitting it at once. I'll leave it alone. But clearly, I don't know very well how this works, but it's there. So explore that. That is a way to now ask for different time zones when you inquire about the show times. If anyone knows how that works, please fill me in and do an example of it over in our chat. That would be great. Show times Pacific, thank you. That worked, excellent. Oh, did you do help show times or man show times? All right, there's a lot I don't know there. But anyway, we've got a bot there, and it'll help you. Oh, there's a pinned message from Katnick, perfect. Thank you. All right, so that said, I've got this show right here on Tuesdays at some particular time, depending on your time zone. And in it, I pick a product. I show you how it works. I give you a big discount. This week, we had 50% off on this display. Here's a little one minute recap. Bam, bam, bam. It is the 1.54 inch 240 by 240 IPS TFT display with micro SD breakout and iSpy connector. Got a little lo-fi hip hop girl action and her cat playing on there. That's the GIF running with direct blitting to the screen. So really nice and smooth. You can see the beautiful colors and resolution. A gorgeous looking display. And as I mentioned, viewing angles. Wow, look at that. Even at indirect oblique kinds of angles and dead on. It all looks really good. That's my product pick of the week this week. It is the 1.54 inch 240 by 240 IPS TFT LCD display breakout with iSpy and micro SD card. That's a lot of letters. IPS TFT LCD, that's a lot. Cool display. So go get yourself some. Unfortunately the discount is only during the show, but tune in next week. And now everyone knows how to find out exactly what time it is over on Discord. There's lots of versions of this being attempted. And tune in next week to find out what the new, is it only three time zones? Oh no, we should have more. Find out next week what the new product pick is and get yourself a discount. If it's something you would like. All right. So next up, I've got a circuit Python Parsec for you. The circuit parsec. All right, for the circuit Python Parsec today, I wanted to show you how to calibrate a touch controller. So you can see here I've got a resistive touch controller. This one happens to be the one that's built onto the Pi portal, but this will work for any of our touch controllers. And what I'm displaying there as well as in my REPL is an X position and a Y position and the touch pressure. So we care mostly about the X position and the Y position. So you'll see here, when I go all the way up to the top I kind of expect that to be a zero and it's not. It's around 12. And when I go to the bottom, I expect that to be about 240 and it's not. It's around 220. So this clearly needs to be calibrated. If you look in my code here, you'll see that there is a fairly standard. This is just the code from the sample for the touch library, the Adafruit touchscreen library. You'll see here we are including this calibration line that says essentially the minimum and maximum values that we're getting on the screen for X and Y. These are the defaults. I don't know what display those were done on, but it's not this exact one that I have here. So those are off. So you have a couple of choices. One, you could go in and just start noodling with these numbers, raising and lowering the pair of them to come up with something that works. Or you can use this excellent script that Cedar Grove maker wrote that we have up on the GitHub and I'll put a link over in the blog post about this later today or tomorrow. This is, one second, I'm getting a lot of alerts I'm gonna go to just do not disturb mode. Okay, this is a bit of code that if I save this, it's going to ask me to calibrate by essentially using a stylus so you could use your finger or fingernail, you want it to be fairly small. The full range left and right and up and down. You'll notice at first this little dot is gonna kind of be way off because it thinks the calibration values are something that are definitely wrong. But the beauty of this is as I go and set a minimum and a maximum on X. Let's see, it's tracking a little better. And as I set a minimum and a maximum on Y, we now get really tight tracking of that cursor dot there. That's fantastic. And it has spit out some values there that you could write down or you could just copy and paste out of your REPL. So you'll see in my REPL now I have this tuple that says a minimum and a maximum value that are quite different than what I was using before. So I'm gonna copy those. I'm going to go ahead and paste them into whatever my real sketch is, whatever my real code is. In this case, I'm just gonna be looking at some numbers. So I'm gonna paste that in there. Very different values. Hit save and now you can see if you look at my X, Y values, they will go down to zero on X, up to 320 on X, down to zero on Y, and up to 240 on Y. So now I have really nice tracking that I can use for whatever I wanna use my touch controls for. And that is how you can calibrate a touch screen inside of Circuit Python. That is your Circuit Python Parsec. Yes, Circuit Python. Yes, that is fantastic. Some people in the chat saying, holy cow, that's amazing. See Grover, well done. It's so helpful. It's just what I've always been looking for. And someone just took the words out of my mouth, Joel, H and company, that reminds me of calibrating my Palm Pilot. Absolutely. I remember that whenever you'd open up a Palm Pilot and reset it or put in fresh batteries the first time and it would always say touch each corner here so that it had an idea of this exact thing. What are the real resistance values that the screen is reading so that they can then get remapped to the screen real estate that you have to work with. Really cool calibration code. In fact, let me, give me a second and I'm gonna go ahead and paste that into the chat so that people can use that. Let's see, you know what? Let me show you what I'm looking at here as I do it. In fact, so first of all, this is the Adafruit touchscreen library API and read the docs. And this right here is some sample code that you'll find if you look at any of our resistive touch screens. We'll have some similar code to this which will include in it the ability to set values for calibration. But the mystery is always, how do I get those values? If you go to the library for CircuitPython Touchscreen, so that's in GitHub under Adafruit, Adafruit CircuitPython Touchscreen, you can just search Touchscreen in our GitHub and then go into the examples. You'll see there is the Touchscreen Calibrator built in as well as Touchscreen Orientation and Touchscreen Simple Test. So I'll just post this and you can look at all three of those just in our chats there if you wanna go check those out. I've tried this just on this PyPortal. I believe it'll work on breakouts as well but you'll just have to change your code a little bit to tell it what things are plugged into. The example assumes a built in so something like a PyPortal where the screen is part of the microcontroller so the board definition knows what pins to use but should work just with a little bit of adjustment for pretty much any of our touch screens that need calibration. So thank you again, Seed or Grove Maker for writing that and sharing that, it's really excellent. All right, let's see, so next up, let me unplug this and move that over there. By the way, the stylus I'm using there is a old Nintendo DS stylus, these are great. In fact, you saw this one has that clear tip so you could actually see the glow through of the dot on there but you could use any non-marring tool, something that's not too sharp. Well, that worked on a feather TFT with built in and reverse TFTs. Those don't have touch screens, yeah, that's right. But there are a couple of feather wings, there's some TFT feather wings that do have the touch screen and those are a great one to try as well. Let's see, okay, so what have we got up next? Let me talk about that, why is that the coupon code today? That is the coupon code today, so I should mention again, if you wanna get 10% off in the store, just type in scratch. Here's the reason, DJ Hero turntables. So I've showed these on my shows before, I've had these forever, I had DJ Hero for the Wii, I somehow ended up with more controllers than I know what to do with it. I think I have three of these turntables and two of these mixers, these come apart so you can unlock the peripherals from each other and pull them apart. This is the typical thing you would get if you'd gotten the game back in the day, I think you would get one turntable and one mixer. And like so many of these peripherals on the Wii, especially stuff based on any of the guitar hero types of instruments, there's a port, I'm missing a door here, I think I know where it is. There's a port here where you put your WiiMote. So the clever thing here is they saved money by not having to put the wireless microcontroller, battery, all of that into every device that they sold. So if you get a PS3 version or the Xbox 360 version, those would be more expensive and they would have electronics in them that does all of the redundant stuff that a controller does. On the Wii, you just shove the WiiMote in there and this little connector here is speaking I square C. So essentially we have an optical encoder for rotation of this turntable platter. We have these three buttons here that can be read, all that's being sent over I square C. We have a rotary encoder here, that's a little endless encoder knob there. We have a slide potentiometer with a nice detente and that's particularly useful if you have both controllers and you wanna do mixing type of stuff between the two. What they call the euphoria button, so there's a power up that you can hit in the game that that button triggers. There's a plus and minus button and those are useful for navigation on the main menu screens. And there's a joystick here, X, Y, axis, dual potential, or joystick that is useful for navigation as well. So all of the sensors in here are going over a funky little port. I don't know what that port is. It looks vaguely like a mini USB, but a little bit bigger. So that port is essentially connecting up these three buttons in that rotary encoder to this. And this has got a little circuit board in there that is then allowing it to take these buttons and encoders and send all that data via I square C over to the Wii. So as you know, we have a little Wii breakout that we like to use for these types of projects. These have existed over the years, Adafruit's not the first company to make these. It's a simple little breakout that fits inside, has two connectors on the top and three conductors on the bottom. Slots in there and then we can break that out over to our microcontroller. In the past, the code for trying to do something with this outside of the actual intended use on the Wii has been either non-existent or eventually someone, and I'll show the link to this, someone came up with a way to use this with a teensy and a little, I think there was even maybe a custom breakout board. But recently I was looking at the, what's the name of it? The Wii Chuck, I forget, let me check my, oh, I'll check my code in a second. But anyway, there is a library in the community bundle that handles the Wii Nunchuck, the Wii Classic Controller, I think a Guitar Hero Controller, the UDraw, drawing tablet, pen tablet, and this, I noticed. And it wasn't always there, I don't know when they added it, but I just recently noticed, oh wow, they say DJ Table is one of the classes that you can import, so let's give it a spin, pardon the pun. So that is what I did. So let me grab the one that I've set up here and show you how I have it set up. So this is, yeah, this is another one of my added, another one of these peripherals. This one does have the door, but the hinge is starting to break off. And so you can see what I've done is I've plugged in, I'm gonna go to the overhead actually, some stuff, change a camera, and switch to that view. Give me a moment to just focus and do some other adjustments. That's pretty good. So here you can see there's the existing Wii Chuck connector. I've plugged it into our little breakout and then our breakout has either pins for using on a perm proto or a circuit or a breadboard. Also has StemAQT out. So I've got a wildly long StemAQT cable going to a little QT pie here. And then the QT pie, I will go, just go ahead and plug into USB-C. So that'll plug into my computer there. And let's go to this little view right here. Paul Cutler, so you're saying I need to buy another turntable. I'm sorry, you don't need to, but you might want to. That's fun. Oh good, it opened the code. The sublime text just automatically opens the new code.py if it's plugged in. Let me reconvince the QT pie. Okay, let me reconvince the terminal there to connect. All right, so here's what we've got going on. In code here, I'm taking the WeChuck, that's the name of the library. Taking the WeChuck library from the Circuit Python community bundle. And I'm importing the DJ table class from that. This example here, I'm using, so there's an example in the code in the GitHub for this that reads all of the data and just spits it out for you, which is great. So I've really only added two things. One, I was getting kind of constant spamming when I pressed a button, so I added sort of a debounce or a state kind of thing. So it just, when something changes, it lets me know. So there's the euphoria button being pressed. And then the other thing I did was I added the HID keyboard and HID mouse libraries. So you can see here from Adafruit HID key code and from Adafruit HID mouse, I'm importing keyboard. Got to mention that, key code and mouse. So with those in, I can now say when I press something, I want you to do a send of a mouse click, a mouse X or mouse Y position or any keyboard item that I press. So what I have so far, you can see some of these in action. First of all, let's see, can you see my cursor pretty well? Let me move some windows so I can see what you're seeing. Okay, you should be able to see my cursor. It's gonna be not so smooth on the broadcast, but it's super smooth here. What I'm doing is every time I touch this turntable, the value is at zero essentially when it's not being touched. Any amount that it turns to the right, it registers as a one, any amount it goes to the left, it registers in this library as a negative 31. And so I'm just telling it, if that value goes over one, then we're gonna move the mouse, relative mouse position on X, 20 steps. So you could use this down to one and be really fine grained about it, but I want to use this in a turntable game that requires some pretty large movements. The same sort of thing is happening with my rotary encoder there. You can see as I'm twisting the rotary encoder, I'm up-arrowing and down-arrowing. So that's actually not mouse. It could be mouse, but it's not, just because of how the game I wanna use works. It is sending up arrows and down arrows. And you can see it's real fast. One issue that I have that I need to adjust, make a little bit of code to outsmart this is that the way the effects dial, which is what this is called, the way the effects dial in the library reports its position, it loops back around to 31 and then back to zero. So you'll see at some point there I jumped in the wrong direction for a moment. So if I'm coming down, it just jumped up. Down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, down, and it jumped back up. So I'll adjust that in code. The buttons here you can see when I press this euphoria button it's actually hitting the space bar. I actually don't want those spaces in there. Again, because of the target game that I have. The joystick, I don't think I've mapped that to anything yet, but you can just see I'm spitting out raw values. So X goes from zero to 63 and Y goes 63 down to zero. Then I'm not doing anything with this slider here, this crossfader other than spitting out its values. So nice thing is this library makes it so easy. If you look here in my main, actually up in my setup code first thing I'm doing is creating an object called DJ. And that is DJ table and then I square C port. This happens to be on the STEMI QT I square C port rather than the board I square C. Then I in my main loop here, I have every time the code cycles around, I define these variables, joystick, buttons, turntables, dial, and slider, which is what asking the library for DJ.values spits out. Those can then be sort of deconstructed into joystick X and Y. The turntable you can see here, this is actually called turntable right. And that is because like I said before, you can actually plug in a second one. So all of the library takes care of this for you would just be asking for the turntable left. So turntable left, turntable right, and the three buttons on the left and the three buttons on the right, all of that is built right into there, which is great. The buttons just overturn a true if they're pressed. So I'm taking those and turning those into some key presses. I don't have the right thing set up for blue right there right now. I don't know why, I can't remember what that's supposed to be. And so that's about it. I'll show you right now. Let's take a look in my Chrome view here. The Dave Madison, who goes by parts not included, Dave originally made this work as a controller for Overwatch. He's in the Lucio character, so great. I love that absurd use, but it was kind of a fun, funny thing to do, kind of a weird controller for a first person shooter. He had Lucio running around and was controlling his direction with the turntable. But he went and rewrote the code to work on a DJ Hero-like game. DJ Hero was for the Xbox Wii and the PlayStation 3. Dave made this version work with SpinRhythmXD, which I had never heard of until yesterday when I was looking up, hey, can I find something to use this with? SpinRhythmXD is 20 bucks on Steam. I bought it, it's awesome. It's just like the DJ Hero-style game. And I'll put this link here if you're interested in checking this out. I'll put that over in the YouTube as well. So this, you can check out. He's got a video that shows it in action in the game. That's what the game looks like right there. And then under the controller setup, so he used a little Teen CLC, and he made a little custom bracket, beautiful little custom bracket 3D printed to hold the Teen C in the little Wii controller, Wii remote compartment there. And there's a little, I think maybe he cut just a little bit of plastic out so that he could plug USB in right there. And then you can see, he's got a little Wii Chuck adapter there plugged in. And then he's got code written in Arduino that does essentially all these things that I'm doing here, except now I'm able to do it in circuit Python. Made a nice little vinyl sticker for the platter. And then most importantly, he made it really easy to find out what game controls to send to the game as keyboard commands. Now, you've actually got a couple of options in this game. You can use MIDI based DJ turntables. So there's a lot of these that companies make for using with DJ software on your computer or on your iOS device. And they spit out MIDI. So I could, and I may try that as well, to have this spit out MIDI and see if there's any benefits to that in the game. But normally when you just download and play this game, it uses mouse left and right to turn the little platter there. And then it uses a couple of mouse buttons for some things and some keys, space bar and some other keys. So that's what I've mapped it to and Dave shows what to do there. There's also, if you're using two wheels there, there's a little demo of that which is kind of cool. You can see the crossfader tells the software which turntable to pick up. So he's just doing that all on the microcontroller and then spitting out either one or the other. So that was hugely helpful for me to get this up and running right away. What I love to do is jump over to the workbench here and show you this in action a little bit. I'm brand new at this game and I barely have things set up right so it'll be terrible. But it should be fun. So let's jump over to this view of the world and I'm gonna bring my controller with me and I'll just set this kind of vertically to make it fit. Let me go fix that camera. That should work. And you know what, I'm gonna turn off the AC just because it'll make it a little easier for me to hear and for you to hear the music. Oh, and I'm gonna shoot a B-real real quick. Smile everyone. We're on B-real. Okay, so let me log into this here. Goose the brightness up there. Let me hit cancel on that. Okay, so I'm gonna open up my Discord chat so I can make sure you can hear this. Okay, so let's plug in. You know what? I think I'm gonna quit and relaunch the game here just to make sure it's happy. Uh-oh, that's not good. Let me re-launch Steam as well. All right, okay, here we go. We have sound. Okay, so I'm actually, let me pull this down so you can see this a little better. So first of all, check it out. You can use this, remember I did up arrow and down arrow for that effects knob. So one of the goals with doing this kind of alt controller is to allow you to use it for all the menu navigation stuff so that you're not having to also have a secondary controller. Dave mentions this in his blog post, almost word for word and I've run into this before just with doing weird alt controllers is kind of in ideal to have to have a couple of controllers together. So if you can, have the controllers work the menus as well. So here if I go to play, I'll hit the plus on here which acts as a return. And we'll go to a new game, which I'll fail instantly because I don't know what I'm doing and I have some things set up wrong. But you will see, I can move my, oops, there we go. So circular ones, I just run over with the right color. Square ones, I hit the red button, or yeah, the red button. And hopefully we don't get a copy strike for this music. Maybe I should turn that down a little. So that there, I just spun it kind of fast and that worked, you can also press I think the euphoria button for those. Oh, I'm gonna fail soon here if I'm not careful. You can see why sideways would be better. Did that work? Yeah, I think that worked. So let me pause here. Oh, and I could have paused with this. The minus key on here is the pause key. So one thing you'll see is that I don't have any sort of acceleration on my turntable. So if you look at that nice big fat cursor there, you can see that moves at this 20 mouse units per touch, essentially. Anytime I touch the turntable in one direction or another and as I keep going, it just keeps that rate. This actually outputs higher values the faster it's going to the circuit playground express. So ideally I can come up with some code that will accelerate that mouse motion to track that as well, which means you could do faster spins or get somewhere more quickly, but be a little more precise while you're just touching it there. So that is, I don't know what else to say about it. That is the basics of getting this thing up and running and using it on a HID, USB HID type of thing. If I quit out of here, you can see it just works as a mouse. So if I click on something on my desktop, let's see if I can, hello, nope, not you. Let's see if I can click on that. Yeah, so you can see I'm moving, I've got a mouse button actually I could press this, right? Oh no, that's press and release, that's send. So I don't have a hold on there, I might need that. But if I do a press on my mouse or my track pad there, you can see this is just acting as a mouse X. So you can imagine with two of them, you could do mouse X, Y, it could make a big weird etch a sketch, no problem. And then as you can also imagine being able to send out MIDI, either USB MIDI or even some serial MIDI, some traditional MIDI over TRS would give us the opportunity to interface it with all kinds of different synthesizers, which is a lot of fun. So let's see, any thoughts in the chat? Let's see. It is a very smooth and responsive controller. Yeah, I actually, let me plug it back in over here where you can see the output from it. I'm really impressed. One thing that David noticed in his guide there on his webpage was that if he went real fast on the turntable, he was getting some spurious button press types of reactions and I have not seen that. I might need to adjust some debug code to make sure, make it a little easier to see. But if you look here at these values we're getting, so I'm getting just straight one and pretty much negative 31. But if I'm going to the right a little faster, you can see twos and threes, a lot faster, five, six, seven actually spin it real fast, you get a 30. I don't see it sending anything weird in there. I'd have to go back and look at that log, but so that's nice. And it doesn't seem to like glitch around. It's actually working really, really well, really smoothly. So also hats off to the creators of this library. I think John Furcian and David Gee, I think. Yeah, David Galday. I think you also worked on this library, right? Really excellent work on that. It makes it really easy to interface with this and the fact that you can be sending multiple things at once, fantastic, dead easy to use, not much to it in the code. So I'm impressed, really impressed with not only the incredibly cheap, I mean, used to be at least, I couldn't go into a thrift store without seeing one of these things for like 10 bucks. I'm kind of curious what it's like these days on eBay. Let's go check. So let's see, eBay. Let's do DJ Hero. Wii controller, $35 free shipping or best offer, is the first one up there, 40 or best offer. If we do buy it now is only best match, lowest shipping, 15 bucks plus $5 shipping. You just wanna make sure it's the Wii version, not any of the others because they will have a Xbox or PlayStation won't have the iSquare C. And what is this thing? Activision's DJ Hero turntable, half controller. No, that's an Xbox one, that's not Wii. Yeah, so keep an eye out. It needs to have that blank space there to plug it in. 15 bucks, yeah. So check around locally, they maybe are no longer so prevalent at your thrift stores, but they're great, they are kind of fun with the original Wii game, and then clearly there's a lot you can do here as a controller. Could be decent for video editing. I have a sort of smaller thing for jog wheel and video editing, but it is really nice to have a jog controller for video editing and not hard to get it to work, usually most of your, I use Premiere, but whatever app you use for video editing, if you do that, we'll have some keyboard command like right arrow, left arrow, shift, right arrow, shift, left arrow that'll do smaller and larger scrubs and zooms through your timeline. Same with music, software, any DAW or audio editing software, really helpful to have a nice jog wheel that you can use. All right, well, unless there are any other questions or thoughts over in the chats, I think that'll wrap it up for today. Thank you for stopping by, a quick reminder, if you wanna get a little discount in the store, you can scratch or you can just type scratch, you can't just scratch at it or say scratch, but if you type in scratch in the coupon code on Adafruit's store on the way out on your shopping cart checkout page, you will get 10% off on all the stuff and things that you buy that are physical bits. So don't forget about that. I believe we'll have a deep dive with FOMI guy, Tim, tomorrow we will have another product pick of the week show on Tuesday, we should have the return of 3D Hangouts on Wednesday and show and tell, Ask an Engineer and another one of these the following Thursday, I hope I didn't miss any, but we got a whole bunch of shows, so please stop on by, thanks everyone for stopping by over in the chats, over on YouTube and Discord chat and hello to you if you are elsewhere, sorry Facebook didn't seem to ever launch today, I don't think, but elsewhere you should have been able to watch. So that is gonna do it for today, thanks everyone for stopping by for Adafruit Industries, I'm John Park and this has been John Park's Workshop, bye bye. Yeah, yeah, yeah.