 Hello and welcome to the show, it's me John Park and it's time for John Park's workshop. Thanks everyone for tuning in. I see we've got a bunch of people over in our chats, including the YouTube chat and our very own Discord server, which if you don't know about it, that's where most of our chat is happening. If you're off somewhere in Twitch or Facebook, somewhere where you're like, hey, where's all the conversation going on? That's it, right there, that. And you can get there by going to a-to-fru.it slash Discord and this is our live broadcast chat channel, but we have a whole bunch of other channels. In fact, I'll expose them right now. Let me just, whoop, a little bit like that and you'll see, yeah, there they are. Welcome, code of conduct, announcements, general chat, live broadcast announcements, and so on and so forth and a whole bunch of help with sections or channels, which are great for helping people with projects or getting help with projects. So head on over to our chat. If you're not there, it's a fun place. Hey, foamy guy, nice to see you. Inescu, FX Music. Hello, hello, Andy Calaway. Welcome, hey, Jim, Dexter, and so next thing I gotta do is crack a sparkling water. Do you guys drink Topo Chico where you're at? It's been very popular here in Southern California for a number of years. Very bubbly. Not the best thing to drink when you're on air because, you know, but that was very hot and thirsty. All right, what, what, what's going on? So, wanted to mention a couple of things. First of all, as a couple of people mentioned in our chat, check this out. Today is a new product day for some Raspberry Pi Pico boards, very exciting. I think at something like 6 a.m. this morning, our time, what's that? Maybe it was 6 a.m. East Coast time, probably because it was probably midnight in the UK. Raspberry Pi Foundation has announced some new boards, so the big, big announcement was the Pi Pico W, which is a wireless board. So it's the Pi Pico that you've come to know and love, like one of these. It's a regular Pi Pico, except this one has a Wi-Fi co-processor on it. I don't know many of the details on it. In fact, what's the processor on there, does it say? Someone'll know. It says that it has an Infineon CYW4343, which is gonna give you 2.4 gigahertz Wi-Fi. There is capability on the chip for Bluetooth flow energy, but I don't think that's been actually implemented yet. So as Todd was joking in the boards there, it's been like 12 hours since this thing was announced and yet there's still not circuit Python support, but I imagine that'll be coming soon. We'll be selling those, I think they're like $6. We don't have any yet, but we will. And I'm gonna guess these will be much more abundant than a Raspberry Pi Raspberry Pi, so don't worry too much about those. Some people I know have ordered them already, either directly from Raspberry Pi or Pimeroni or other places. And then the other announcements were the regular Pico, except you can now get a version that has no cast-alated pads, but the headers have already been soldered on there, like this one right here, the Pico H with soldered headers, has this little arrangement on the bottom, a little bracket with the header pins and that's pre-soldered. Someone was asking me, why does it look like that? Why isn't it your more typical, these kind, what am I plugged into here? I'm gonna break a bunch of things. Why isn't it those types? Well, I think this is probably for manufacturing, that's my guess, is that that's the easier part to pick and place and wave solder. That's what I'm guessing. If you look at the top of this, it's neatly soldered on there, it looks like. But I'd love to hear if anyone in the chat has ideas as to why it's so fancy, because I've never seen one like that before. So those are the new ones, and then there's a version of the Wi-Fi that also has the pre-soldered headers. So we'll really have four of them, regular with headers, Wi-Fi, Wi-Fi with headers. So super cool. And let me know if anyone gets their hands on them and has any cool experiences with them and how you're coding it, what's the deal? I'm guessing MicroPython is the main way right now. So that's a new announcement. And then we also got our jobs board. I don't wanna forget to mention, if you head on over to jobs.aderfruit.com, you will see a bunch of job openings available if you're looking for work, if you're looking to get hired. Also, if you're looking to hire someone, it's a great place to go. It's a free jobs board. And check out this position right here. It just went up, science kit builder from MicroKits in Charlottesville, Virginia, which, hey, I went to college there. I know Charlottesville. I wonder who these people are and what they're up to. It looks cool, they're doing STEM kits. And they're looking for a kit builder there. So go check out, it looks like this is part-time fabrication work. If that's for you, go log in there. You just need an email address to log in. Doesn't cost anything, like I said. And there's plenty of other positions. But that one caught my eye because, hey, Charlottesville. All right, what else is next? Oh, did you know that I've got a show on Tuesdays? It's called JP's Product Pick of the Week. And on that show, I like to take a look at a new product or product from our archives that's popular and give you about a 15-minute run-through demo, history of the thing, code examples, if that's pertinent. And you get a huge discount. This week goes a 50% off without a need for a coupon code whatsoever. There it is. It was this beautiful charger, universal charger that you can use with solar, but also with DC, kind of any DC source as well as USB. And there's no coupon codes needed. You just put it in your cart and you get it for 50% off during the show. So watch this show. Tune in if you can. I know it's not possible for everyone. I'd love it if it were. But come on and tune in on Tuesdays at four o'clock Eastern time, one o'clock Pacific. Here's a little one-minute recap. The BQ24074 USB DC and solar battery charger. Super cool feature of this is, of course, solar. This second JST connector here allows you to hook up something that wants that 3.7 volts off of the battery. And in this case, I'm gonna plug in one of our little USB power boost. So this is now converting whatever's coming off that battery. And now I can plug some USB whatever into it. So you could charge a phone off of here. In this case, I've got one of my little Korg NTS1 synths plugged into here. And so now, right, I've got a USB device. I'm in the sun. I'm charging. I'm running this off of here. I'm charging the battery. So I'm running off of a stable supply. Product pick of the week this week. It's the BQ24074 universal charger with DC, USB and solar. Yes, indeed. Cool chip. Very nice. So, let's see what else have we got. I've got a little bit of a setup to do. We're gonna do the circuit Python Parsec, but this one involves some websites, as well as a coding window and some cutting and some pasting, some camera views. So let's get set up for that and then we'll roll. So here we go. Okay, let's see. Before we get going and move a bunch of windows around here, I will need that one and I'll need that right there. All right, some of this will happen behind the scenes, but I think you'll dig it because it's pretty dang cool. So for the circuit Python Parsec today, I want to show you how you can convert an SVG graphic into a vector IO graphic that you can use with display IO in circuit Python. So here I have a little TFT feather wing and a feather M4. And what I'll do is show you this first. What I'm gonna do is I'm gonna adjust the scale of my graphic and hit save. This is the cool thing about scalable vector graphics. When you want to, you can change the scale and the image still works. So here I've got a very cool bat logo. I'm gonna pump that up a whole bunch more. So unlike a raster graphic, I'm not stretching pixels out and making a mess and aliasing things. Instead, I've got a number of vertices here and lines drawing among them using our little line object. You can see in the code here, I am using vector IO, that's the key thing. And then I have this really cool class that Todd bot wrote called SVG logo. This makes an SVG logo point set into a vector IO point set. So if you take a look at my Chrome capture right here, I have this site up path to points. It's in Java and what I'll do is I'll drag an SVG graphic. You can find these all over the place. And here it's turning that into a set of vertices and you can make some adjustments to that and then you'll save off that set of points. You'll run it through a little Python script and then you have something you can cut and paste into this here. You can put multiple paths together. This originally came from Todd's DVD logo bouncing screen saver. And that's about all there is to it. I can set the scale of it. I can set the dimensions of it if I want. But here I've just got a little function where I can make this as big as I want. Eventually it's gonna fly right off of the screen. But a really, really handy way to make some graphics that you don't have to just have one fixed size of. Now you can see it's not super fast to draw here but in this case it's really big which can slow it down. But you can use smaller ones in movement or you can use larger ones static. And so that is how you can turn an SVG graphic into a vector IO shape inside of circuit Python. And I'm psyched about it. And that is your circuit Python. Parsec, parsec, parsec, parsec. That sure is the coolest thing, right? I realized, so I can show the bouncing logo thing sometime, really fun. And hopefully Todd can throw some links up in the chat if you're interested. I've got, actually I've got one right here. This is the page that'll get you your SVG points and then here's a little gist on making a little Python script that'll convert, it'll sort of massage those points into something usable. This is a work in progress for Todd so I wouldn't be surprised if he adds features and makes all kinds of improvements to it. Pay attention to Twitter and Todd's Twitter feed because he posted this a little while ago, whole thread about how he did it and it just kinda looked cool and went right over my head and then I came back to it a couple months later and said, wow, that is really, really cool. So, that'll do it for our circuit Python parsec. Let me take this out of the way here. I love that little, that logo, huh? Yes, and Todd's mentioning in the chat there, it's not technically an SVG, it takes the vertices from an SVG and allows you to use those as vertices for line segments. So, these are not infinitely smooth, like a proper, like bezier curve or something like that. These are a set of points and you can adjust with that tool how many you want. You can make it lower resolution of points if you want but it'll still scale nicely. All right, let's see. So, got a couple things going. First of all, I am excited that Liz and I were able to publish our guide. Let me head over to learn guides here real quick. Learn on cassette tape hacks. So, I've been working on some of the cassette hacks here in the workshop and Liz was also working on one. So, we now have a couple of these really great mods that you can do to cassette players and I encourage you to check these out. Look at these really great colors on Liz's build there. Super cool. So, hers allows you to full control over the motor so you can go forwards, backwards and a bunch of different speed settings. Mine adjusts just that slower to faster within the original motor range via MIDI. You could also use control voltage and one of the reasons I bring this up is that in my demos, people have asked about gating the volume. So, what does that mean? When I play this, if you've seen me, I won't demo it again right now, but if you've seen me play this, it's got continuous tone, kind of a droning tape loop. And then when I press MIDI keys, it changes the pitch. It changes the speed of the motor so it changes the pitch of that playback. But it's continuously playing. So, if you wanted to do something where you only hear a tone when you press the keys, that's totally possible and what that involves is sort of the second critical component to electronic music making fundamentals other than pitch, which is gate. And gate refers to kind of an open and closed gate in simplistic terms of can I hear a thing or not? So, it's gated off, you don't hear it, it's gated on, you hear it, and then there can be ways to make subtle changes in between so you have sort of envelopes of how quickly we hear it come on and does it die out slowly or does it ramp up slowly and die off quickly? All of those things are sort of more advanced takes on this very simple idea of attenuating the volume or gating the volume on and off. So, what I wanted to do is actually talk about a couple of methods I may use. I'm not gonna try any of these on the tape deck today but a couple of methods that have been suggested in the forums or in our chat on Discord about how to gate this player and then rather than try stuff with the DAC on the tape deck, I wanted to just show in fundamental terms how that works using a couple little synthesizer modules. So, let me jump over here to the bench. Oh, I gotta focus that camera. Let me do that right now. And I'll explain what I got going on here and how this is relevant. Pop up a view over here too and I am going to just lower the fan speed of my AC so it doesn't blow quite so hard and shake the camera. One second. There we go, that's a little lower. Grab my water as a head over there. So, right, so here's our tape deck and inside of this we have essentially a path of the tape head that's reading the tape and an amplifier, a little tape head amplifier that are then sending that audio out over both the built-in speaker here and this little headphone amplifier out. So, there's a volume knob on here. So, one approach would be to adjust that with a digital potentiometer. Some other methods involve using a type of a gate and one suggestion that I really loved that C Grover made was what about using a Vactrol gate? So, I think I've demonstrated Vactrols on here before. If not, I might show like a live build of one but a Vactrol is a really cool way of essentially switching current on and off in an electric circuit that involves no actual physical connections, but instead an optical connection. It's kind of like an optical switch and very often they're made with a photo cell and an LED. So, if you send voltage to the LED, it changes the resistance of that photo cell and if you turn the LED dark, it brings that back down. So, Vactrol gate is actually built into this little module right here. This Laurentide synth works. This is a gate made with Vactrols and what I'll do is I'll demonstrate if I, let me turn on the audio here. If I start with the path that's the most similar to the cassette player to my speakers or effects boxes right now, it is like this oscillator here. Turn that down a bit. Okay, so as I change the tape speed, I'm changing essentially an oscillator but I'm running straight out to my, there's a powered speaker here that I've got. If I add this little Vactrol into the mix here, I'm gonna use, this is a pair of them, I'm gonna use this lower one just to keep the wires out of the way. What'll happen is I can take that same output from the oscillator here, this castor and Pollux and it is trying to run from this red wire, the audio is trying to run out to my speaker except the Vactrol has not been excited yet. It hasn't been lit up so the resistance is too high on the little photo cell in there, no audio gets through. So the ways of gating that, the one that's most similar to using my MIDI keyboard when I send a MIDI signal, I can say, hey, the gate should be open and that will send some voltage over my, another channel of my DAC. So in this case I have this really cool little module called Big Honking Button and I'm just using it to send a gate signal right now even though this can also do other stuff, play wave files and so on. So when I press this big button, it is going to send some about a five volt signal I believe to the Vactrol in here which is gonna light up the little LED in there with some current limiting resistors and that is going to drop the resistance of that photo cell allowing the audio to flow back through. So this is the switch and if I press this, you'll hear it gating that. So the equivalent when I'm pressing, let's say a couple of different keys on the keyboard would be press it, press a different key. So every time a gate signal is sent to the Vactrol here it either allows the audio to go through or when I release it, it stops the audio going through. So that's kind of the fundamental thing that I need to do on here. Again, there's a couple methods. One would be to use a digital control over that volume potentiometer and another one is this notion of introducing a Vactrol gate in there or some other kind of attenuation. But I like the idea of the Vactrol and the Vactrol kind of naturally has a little bit of a, it's not a hard on hard off square wave that has a little kind of little gating envelope, especially on the tail of it kind of won't dies off a bit. And so what I wanted to do also is show you that the gate there doesn't just have to be controlled by kind of a one key at a time thing. And the pitch doesn't just have to be controlled by me moving that knob, but just extend this kind of one sort of piece of gear further, which is to introduce a sequencer. So let me zoom out a little bit. This is a fun little sequencer. I've maybe shown this before. This is from Korg. They cost about $100 and they're just a workhorse sequencer. It allows you to send different control voltages, which is what adjust the pitch or in the case of this guy right here would adjust the motor speed. So it's certainly possible to use this sequencer as part of the part of the mix with that tape there. And it sends out a gate. So I've actually got two cables here connected, one to send out CV or pitch information and the other one to send out gate. Now, if I kind of go back to where I'm not gating that signal on and off with the the Vactual anymore and I just have a continuous tone. So I'm not using gate at all. Now I can tell the sequencer to change pitches on each step, but it's continuous, right? So that's really similar to how my tape machine works right now, which is it's always gonna play whatever its base frequency is or base speed until I tell it different pitches. The beauty of adding gating is that we can now have notes go on and off, which is pretty pleasing. So to do this, what I'll change about the setup. So this is the same setup as before here, and I've got audio coming out of my oscillator going to the Vactual gate and then going to my powered speaker. Pitch is now being controlled on the oscillator by this control voltage, this pitch control voltage, and then this gate, which is actually also a kind of control voltage, but for clarity's sake, it's just called gate, but it's essentially a zero or a five volt usually. So for the gate, I'm gonna plug that right into that Vactual again, same place I used to have the button plugged in. Now this is whenever we move to another step, if that step is lit on, we're gonna hear the gate open and we'll hear a note. If that's off, we won't. So now we'll get a rest for the first time with this. So here we go. All right, so we can just say, just give me one gate at the beginning. Let's put a second one. Okay, so that's the idea behind that. And I didn't have time to try building a Vactual for this yet. That's gonna be coming up, I think. I think it's a fun idea. I may try just one last thing, which is I don't have my MIDI setup for this, so I'm not gonna change the pitch of this, but just to play my cassette through this Vactual gate, it should allow me to send the audio into there. I don't actually have the right cable right here. Let's see if it works as a stereo out. We'll see if it works. And so, presumably that's trying to play the cassette right now through there and there we go. So let me turn the volume up. I've broken something that I run out of tape. No, just gotta hold it right. Something's acting funny. Yeah, I don't think the mono cable plugged into there is making it too happy. Do I have a splitter? I don't think I do. Well, hopefully you heard it there for a second when it was working, so this audio is kind of not flowing so kindly through here, but it is being gated off by this. And there we go. I can't move now. I might be able to slow this down a little just by putting my finger on the reel. No, I stopped it, now I've made it angry. Yeah, I'm gonna break the cassette. There we go. Right, so I won't be able to change pitch just because I don't have pitch control on here right now, but that's ideally what I'll have is the MIDI we'll be sending to the QT pie and then one channel of the DAC tells the speed control and the other channel of the DAC is opening and closing the VAC troll. I will another time show, let me stop this here, how a voltage controlled amplifier or technically a voltage controlled attenuator works, which may be a little more forgiving of the low current that I send out of the DAC. We'll see that may have a lower current requirement than the VAC troll gauge, just depends on how that's been designed. But I think I probably can't easily take it apart and show it, yeah, but we'll explore the VAC troll thing because even just that on its own is super cool, super interesting. It might be fun to make a demonstration one that we can look at. So that's the status of that. And then I also wanted to update some thinking on the little drone loop. Let me head back over here to work bench and I'm also gonna go grab my water. Yeah, that did sound a bit like a dial tone there or something. DJ Devon three says, I still think trying to decouple the tape head with a mechanical piston switch really, really fast would be oddly satisfying. Yeah, I love that. Oh, hey Steve. Okay, you're on late to the party. Welcome. So onto our drone, digital drone synth. So this is not what I'm gonna do physically with it but this I had on hand. It's a pretty good way to get started on this project. So I'm using a KV2040 here. It's got eight wave files on it that I have playing in sync simultaneously when the code on there starts. It just opens up eight of these voices on the mixer, on the audio mixer in circuit Python, starts them playing. And then last week I did kind of a hacky version of going from having momentary switches to having toggles. So it'll play a drone in one of the eight pitches that I have on there and add them since they're always playing. We can mix them all in with the audio mixer. So that I did a better version of it, a better code now for dealing with that. I'll show that in action. And I've just started adding a level knob. So each, my idea for this just to keep the hardware a little minimal rather than having eight knobs on here is whatever note I play, I can then go and adjust the level on that with the encoder and then go to a different one. Idea of using an encoder for this rather than a potentiometer is with an encoder you can not worry about making a jump to the level for each one you go to. So if we set the first note to a really low level and then come up to the top note, as soon as we touch that it would jump down to the lowest level. With an encoder we can do these tricks sometimes called pick up, where we pick up wherever we left off essentially when it starts moving, it'll grab the existing gain value and then start adjusting that. So let me plug that into the speaker and show you how it's working, show you the code and talk about issues and where it's going. So let me go to a little down shooter view of that. Okay, give that some power. I love these little buttons but the play, the little slack in these button caps makes them always wonky. Kind of could use a little face plate that they're partly recessed into that's fairly snug so they can't wiggle like that. Constantly driving me bonkers. Okay, so if you remember from last week what I've done there, sounds like the beginning of a Prince song. I created a series of these short looping sine waves in a series of pitches. I picked eight tones to have them play so I can. As I also mentioned last week until I get the version with LEDs in the switches I never am sure which ones are playing and it takes forever to turn them all off. Hello El Mario says Olaf from Spain here over on YouTube. Welcome. So what I was talking about with the addition of gain. So let's play a note and then I think the way I have this working I was just changing this earlier. I'm adjusting the gain now but I don't have it actually engaging until I press that button again. So now it's really quiet. So here it's medium, louder and I can add some other pitches in and now this will only change the volume of that higher note. Turn some off. So that's not ideal but that was just sort of the journey I'm on to get this to work. Biggest issue is I am very iterative with coding these kinds of things and with this RP2040 chip and the audio mixer and USB kind of melange there is a need to reset the board each time you want to iterate and it takes a moment to kind of jump in there in the REPL and cancel the execution of the code. Otherwise it just kind of crashes and freezes. I've run into this before. I need to update. I think there's a bug request suggestion type of thing in GitHub and I need to see what the status of that is and try to get that fixed. So it's a slow going for me getting this to work but let's take a look at the code and I'll show you how that's set up currently and close that code file and open up a new one. Okay, so here you can see are my eight wave files that I'm playing and one change from last week is that I'm now using seesaw to add that rotary encoder. Just a nice little rotary encoder breakout makes it nice and easy. This also, by the way, does have a switch on it so I add an eighth button. I'm not using it now for anything but this is a push encoder so I can pick volumes. Whoa, I made the headphone jack angry. Sorry, but yeah, you can click that to be another input device. You can also do things like click rotate so that's kind of like a whole second set of rotates that you can have is if I'm clicking when I rotate that's fairly common on interfaces and car stereos and things. And this has a NeoPixel on here that I'm not currently using so that could be another way to tell you which key you're on or what the volume level is for the key you're on or something like that. The events here or the while true loop you can see I check for event with the keypad library so I'm checking to see if any of these keys get pressed. When they do, I then run through this right here using the if the event is pressed I use the handle mixer function and if you look here in the handle mixer function this has changed a little bit the voice becomes the mixer dot voice number and then we can change that voice level to be either zero if it was previously not pressed or change it to whatever the value is in this dictionary or list of lists. So initially they're all set to 0.4 and that's the value I'm changing with the rotary encoder. So in the handle mixer function here since it grabs, where'd it go? That value from here wavefiles dot number like let's say it's the second button so be a one and then this is asking for whatever that gain value is which was initially 0.4 when I'm changing the potentiometer I'm changing the value in that list so that's what's getting updated and then when we actually press the button that's when I'm asking for it. So the way that's changed is when the position changes the last position becomes a position so we know we've changed and can have a reference point. Currently I'm printing that to the REPL to debug things and then we set this variable called current gain to be whatever was in there before. So if it was at 0.4, okay I grabbed that number and this is part of where I'm working towards being able to just grab the existing value and then add to or subtract from it instead of making a big audible jump. And then I change the value in that table to be I'm constraining within a zero to one range using simple math library. Whatever that current gain value was so let's say 0.4 plus and then I'm doing some goofy math right now that'll probably update in the future with a map range function but right now I'm saying the position which is gonna be zero, one, two, three, four, five, six and on and on and on as you rotate that encoder it changes by one. So I'm making that into hundreds and so we're adding a hundredth to the value and then I'm constraining that to be between zero and one. And then here again just for debugging I'm printing. I was trying to do handle mixer in here but this was turning the mixer on and off every second click of the encoders. That was no good so that was where I was just prior to the show and then took that out and just have it only do the handle mixer call when I press it. Question over in, yeah first of all a statement Marius says never touch a live jack, absolutely. Marius says instead of the rotary can use a capacitive sensor so you can use a wireless change of the volume. Yeah for sure you can definitely use something like a capacitive sensor for this. You could have it be constantly watching. You could have it turn on notes and then adjust those almost like a volume of a theremin type of thing. You can use faders for this slide pots but they would have that issue of kind of getting stuck physically where they were for the last note. So let's see. Questions in the chat. Krippnippej says is the gain value implemented like a gate sounds like it activates after you turn the knob and press the button. Yeah currently, oh you said the explanation answer the question. Yeah so it should be a fairly smooth adjustment of that gain. The game only goes 0.0 to 0.1 but we could get some subtle changes in that with the knob but my implementation right now requires me to click the button. Let's see. DJ Devin asked what is seesaw or maybe was answering someone's question pasted in there. Thank you, a response. Yeah the seesaw chip is tiny little, I forget which one we're using now. We have a tiny little microcontroller on the bottom of this PCB that has analog and digital inputs and so it's just reading stuff like the encoder and the button. It's also handling writing out to the neopixel on there and then sending all of that stuff over I squared C. So the seesaw devices are great because they basically offload a whole bunch of GPIO thoughts to an off board device and then whatever it came up with based on the sensor or the controller that's on there it just sends that over I squared C back to your microcontroller. So that's really efficient, both hardware wise and coding wise. And you can plug them in with these cute little stem of QT cables which I love because they chain so we've got, you can do multiples on there. In fact I just stole that one off of this because I couldn't find any others but this was a demo I had built before using some switches and I had four. Now three of these rotary encoders ganged up and all of that is plugged over stem of QT using those seesaw chips to process the IO. All right, yeah, so that is the state of it. Where I'm thinking of going with this, I have a couple of thoughts. So I am gonna try to use those stepped LED switches that look like an 808 drum machine style switch because I love them. And I asked them more if she could stock them and she said yes and she got some samples in thanks to her we are gonna have them in the store. So I'll be able to use some cool stepped switches which will show me when they're lit up. You could definitely do this instead right now, today, using what I have there which is our mechanical key switch stem of QT board. So that's four mechanical keyboard key switches with integrated neopixels and you could put two of those together and get the eight buttons. That would certainly work as well but I'm thinking of using those stepped switches because they're awesome. And using like I showed last week an OLED display with some cool tape reels on it showing us some information and just looking cool. And what else? I think that'll be it, audio out on there. Probably a Feather RP2040 but maybe, maybe a Metro M4 or rather a Feather M4 because I also wanna try using a teensy audio library which can do things like some speed and pitch shifting can do more sophisticated audio stuff. So I may try to have it where it can run both. It can run a simpler version in circuit Python and a bonkers version in Arduino using the teensy audio library. So those are some thoughts on that. And form factor wise I'm thinking of, have you seen this amazing looking, let me find it on here. It's like a digital cassette player in a 3D printed case that looks like an old tape recorder. Someone find it and put it in the chat. It looks like a Fisher price version of a tape recorder with an OLED. And I'm not seeing it right now right away. Yeah, I'm not searching for the right things. But anyway, I liked the idea of making the enclosure have a cassette well but it's actually got an OLED of a cassette in there. Really cool. Or maybe a reel to reel looking thing like a little baby mini reel to reel. I don't know, something fun like that. All right, is that it? Let me know if anyone's got any other thoughts or questions in the chat. Oh, Ezra Kornfeld asked, are those buttons and recording cards for drawing program? Yeah, I had made a Photoshop palette kind of artists tool there so you can pick your gradient and brush and color picker, eraser, and then you can change things like the brush radius and opacity and a couple other things using those. So that was the demo that I had done on there. I don't think I ever wrote a guide up for that but that was the idea behind that. It was just similar to you've seen probably some commercially available sort of plug and play encoders and sliders and stuff that are used for Photoshop and Premiere and stuff like that. Oh good, Todd found that, thanks man. Here is what I was talking about in the Discord. Look at that, that is awesome, so adorable. So OLED to act like the tapes and then they put some mechanical key switches in a rotary encoder and I think that's a player. It just plays back MP3s or waves. So very inspiring, I love the design of that. Super cute. That was on Hexter IO. Reads micro SD cards and uses ESP32 for processing. Really cool. Yes, Ezra, similar to a drawing tablet. Absolutely, yeah, with the buttons and things on a Wacom and that kind of stuff. All right, well, I think, whoops, I'm gonna disappear myself. I think that's gonna do for today. Thank you all so much for stopping by and I believe, Tim, if you're around, correct me if I'm wrong, but I believe there's gonna be a deep dive with Tim slash foamy guy tomorrow and then we'll get back to our regular slate of shows I think next week everyone is on. So we should have, I'll be doing a product pick of the week on Tuesday. We'll have show and tell on Wednesday. Ask an engineer is back. There'll be 3D hangouts on Wednesday morning as well. Sorry, I jumped right past that. I'll have another workshop show on Thursday and another deep dive with foamy guy. And sorry if I missed anyone, but yeah, we got a bunch of shows coming up next week. So please tune in for those. Thanks everyone for hanging out in the chats. Thanks everyone over in YouTube, as well as over in our Discord. We appreciate you and thanks so much for answering questions for people and asking them keeps it fun and lively. I'm gonna go finish the rest of that Topo Chico. Thanks everyone. Operator for the Institute of Zom. John Park, this has been John Park's Workshop. Bye bye.