442: I Do Like Musical Robots

Transcript from 442: I Do Like Musical Robots with Liz Clark, Chris White, and Elecia White.

EW (00:06):

Welcome to Embedded. I am Elecia White, alongside Christopher White. We are going to talk about sensors, and writing code, and writing tutorials, and making melodies. There is so much, and I am excited to have Liz Clark as our guest.

CW (00:22):

Hi, Liz. How are you?

LC (00:24):

Good. How are you?

EW (00:26):

Good. Could you tell us about yourself, as if we met at NAMM?

CW (00:32):

<laugh>

LC (00:34):

<laugh> Sure. My name is Liz, and I have background music technology, and that has led me to dabble in electronics, programming, 3D printing. And I document projects I am working on, on my YouTube channel, Blitz City DIY. Currently I am contracting full-time with Adafruit, to work on projects and new product documentation.

EW (00:55):

Which we will be asking about all of that. But first we want to do lightning round, which I believe you are familiar with.

LC (01:01):

Yes.

EW (01:02):

Are you ready?

LC (01:03):

I am as ready as I will ever be.

CW (01:06):

Favorite MIDI command?

LC (01:09):

Oh. Pitch bend.

CW (01:11):

Not panic?

EW (01:13):

Favorite electronic part?

LC (01:17):

LED.

CW (01:19):

Favorite chord progression?

LC (01:23):

You got to do a classic, one, five, four.

EW (01:27):

Favorite Adafruit tutorial?

LC (01:31):

The NeoPixel Uberguide is pretty handy.

CW (01:34):

What is the best response to an Adafruit tutorial that you have gotten? That you have written? Okay, let me rephrase this, because this is phrased weirdly. To an article that you have written, what- Nope, that is Yoda. <laugh>

EW (01:47):

<laugh>

LC (01:47):

<laugh>

CW (01:47):

What is the best response that you have gotten, to an Adafruit tutorial that you have written? There we go, I got it.

EW (01:53):

English is hard.

LC (01:55):

<laugh>. It was, I did a controller for the Trombone Hero game.

CW (02:00):

Oh, yeah. <laugh>

LC (02:01):

And this was not a written response, but there was one night on Show and Tell, a couple weeks after I had written it. A guy came on with his kid, and they had taken time with flight sensors and done their own version of the controller, and they had followed along with my guide. That was a really nice moment to see, folks using it, especially where it was with his kid. So that was the nicest.

EW (02:22):

If you were an animal, which animal would you be?

LC (02:25):

Cat.

CW (02:26):

What is your favorite fictional robot?

LC (02:29):

I actually do not really like robots.

EW (02:30):

<intake of breath>

CW (02:31):

Finally!

LC (02:32):

<laugh>

CW (02:33):

We found the person <laugh>. Okay. I must know. What is it about robots that causes you dismay?

LC (02:44):

I guess the most obvious, they are just not very human. I just do not connect with them. I do not really have a solid explanation. Also, science fiction is not my favorite genre, so probably a little bit of that, too.

CW (03:00):

Has a lot of robots. It does, yeah.

LC (03:01):

Yes. <laugh>

EW (03:04):

All right. Do you have a tip everyone should know?

LC (03:08):

Fairly basic, but it was life changing for me when someone pointed out to me. It was, always have some solder on your soldering iron, before you power it off, to preserve the tip so it will not rust out.

EW (03:20):

Oh yeah, that is important.

CW (03:22):

I usually have melted plastic on mine. That works about the same.

EW (03:25):

<laugh> Oh, it does. Ferrite <laugh>. Also, please stop using my soldering iron. <laugh>

CW (03:31):

Your soldering iron? It is a joint soldering iron! <laugh>

EW (03:36):

You mentioned having someone come to Show and Tell, and talk about a tutorial that you have written. You have been hosting Show and Tell more, have you not?

LC (03:48):

I have. We have had a rotation going amongst team, while PT and Limor are out on leave. And then, if they also have something going on at night, we will take over for them.

EW (03:58):

Do you enjoy hosting the show?

LC (04:01):

I do. It used to be a little terrifying, <laugh> but I have a little post-it, with the intro that I read off, right above my webcam. That helps me slide into it. But it is fun being able to talk to folks about projects, both people I am working with, and people from the community.

(04:18):

The only terrifying thing is sometimes you have no idea what folks are going to say. You also have to keep everyone on time, because it is a very solid window. Usually at 8:00 PM there is the full live show. So there are a lot of things to juggle, but it is fun.

EW (04:38):

This is the Adafruit Show and Tell. When is it?

LC (04:43):

It is 7:30 PM on Wednesdays. That is 7:30 PM Eastern Time.

EW (04:47):

And it is essentially an open mic in the DIY electronics maker world. What have been some of your favorite things to talk about?

LC (05:03):

Recently, there was a regular community member, Mark Gambler, who came on. He actually took us outside with his phone to show this giant NeoPixel display that he had on his house. That was really cool. Whenever folks have interesting camera setups like that, and you can tell they have put like a lot of time into prepping it to be able to share, I always really enjoy seeing that.

EW (05:26):

Your list of tutorials is extensive. And you have done many recently for the less glamorous parts, the multiplexers and voltage shifters, MOSFET drivers. How much of writing the tutorial is writing code, versus writing how to, versus trying it out yourself, or pointing to other Adafruit tutorials Because there is a lot of commonality sometimes.

LC (05:58):

Yeah. The product guides are definitely procedural, in that they all have the same parts. You have the overview, which is basically the product copy, with the hero images that the photo team does on site. And then the pin outs, and the Arduino CircuitPython code pages, and the downloads page.

(06:18):

Every product is just- The procedure in getting the guide up is just slightly different. It depends on, does it have a CircuitPython library, or does it have an Arduino library, or are we using the sensor manufacturer's Arduino library.

(06:36):

Also what can be a little scary, at some point is, you are sometimes the first person really going through and making sure everything is working with the libraries, and gathering what folks will need when they actually have the sensors in hand. So, trying to make sure that you are documenting everything in the right spots and not leaving anything out, so that folks will be able to use it properly, is most important thing. Yeah.

EW (07:07):

Do you have a favorite type of guide to do? Do you prefer the ones that are procedural and you just make sure it works, versus the ones where you have to build something creative but under a deadline?

LC (07:25):

It depends on the day. That is why I like that I do a mix of the product stuff and the project things. Because if it is a day where I maybe have a lot of meetings scheduled, or a lot going on, then it is easy to jump in and out of product guide. But the project guides are definitely a lot more freeing, and you are able to, not do whatever you want, but in a sense, do whatever you want.

(07:51):

Like, I was working on a guide this past couple days, and I decided that I- It was for OctoPrint, so I wanted the case to be an octopus. <laugh> So, being able to do fun stuff like that is cool. But then on other days with the projects, it can be a little frustrating. Like, I was working on a robotic lyre player, a little mini harp, and I was having a really hard time with the mechanical design, so it was really disheartening. So being able then go switch gears to a product guide is nice. So being able to have the mix and go back and forth is good.

EW (08:29):

You mentioned the trombone guide. I have never played this game. Could you tell me about it?

CW (08:35):

<laugh>

LC (08:36):

I actually had not even heard about it until Limor emailed me saying, "Try making a controller for this game." It is this weird rhythm game, which has some Guitar Hero vibes, which I did use to play a lot of back when I was a teenager.

(08:55):

Basically it is Guitar Hero for trombone, where it has standards for trombone, and you are sliding your mouse up and down, like you would slide on the trombone to be able to hit the notes, and pressing the space bar to hit them.

(09:09):

So with the controller, I am using a slide potentiometer, and a 3D printed mini trombone shape. There is a button on the back of the controller, where I am sending USB commands for the space bar. It is a weird game. But it was fun to make the physical controller for it.

CW (09:32):

It was a viral sensation for a month or so.

LC (09:35):

Yes. Yeah.

CW (09:38):

Very funny game. I have not played it, but I have watched videos <laugh>.

LC (09:41):

Yeah.

EW (09:44):

Several of your tutorials are music based. One of the reasons I wanted to talk to you, was I had a student in one of my classes that wanted to add music to his project. It was hard, partially because there was, where do you even start? I kept suggesting MIDI, over and over. I was like, "Go with MIDI, you will be much happier." What would you suggest to somebody who really did not know the options out there?

LC (10:22):

I would also suggest MIDI, because it is a lightweight protocol.

EW (10:25):

Yes!

LC (10:27):

It is just seven bits, and it has been around for so long that it is fairly easy to get going. And especially if it was an embedded project, like what your student was probably working on. They could use UART, or they could maybe do USB, if there are supports on the chip. There are just a lot of options, because you can use it to control, or you can use it to get input from another musical controller. So the options are really endless I feel like, with MIDI.

EW (11:00):

Okay. So we have said "MIDI" many times. On the show, I am sure those letters have come out before. But I do not think we have ever talked about what is inside MIDI. As you said, it can be a UART or it can be USB. That is not what MIDI is. So what is MIDI?

LC (11:22):

It is a seven bit communication protocol, and basically it allows you to control music digitally. So if you have ever used a keyboard input, with a digital audio workstation or other music program, you were using MIDI.

(11:41):

There are different messages associated with it, like, "Note on. Note off." So when you press down on a keyboard, you are sending "note on." When you lift up, you just sent "note off." There are also different program changes and control changes. For if you were turning a knob, you could send these values and they could affect a synth or other thing in music.

(12:14):

There are also a lot of different ways to connect to it. There is the traditional DIN-5 connector, and then there is also TRS connectors. I have a weird relationship with the TRS connectors, because there is TRS-A, which is the standard, but before that there is also TRS-B and the source and sink have swapped, which can be very annoying. <laugh> So I try to avoid the TRS.

(12:39):

And then, as you said, there is also USB. And then the really strange one, probably newest one is Bluetooth MIDI, which can have a lot of delays. But it can be really cool, because you are controlling things over the air. They used to be really annoying to get hooked up to your computer. It has its pluses and minuses.

CW (13:02):

I just threw a TRS to DIN adapter at Elecia, so she could see.

EW (13:07):

Oh, the TRS just looks like a normal headphone jack.

CW (13:08):

Mm-hmm <affirmative>.

LC (13:09):

Yes.

EW (13:11):

Oh. Okay, this I am very familiar with.

LC (13:14):

Yeah. Which is cool, because you can wire up a cable like that, and you are communicating with a synth. But the tricky thing is that there is the TRS-A, which is now pretty standardized, but there is always the threat that it could be TRS-B, which has that source and sink swapped.

(13:32):

I did a learn guide on Adafruit, where I was just making these little MIDI input hats, for the little QT Py boards. I did one for TRS-A, one for TRS-B, and then one for DIN-5. Making sure I had the wiring correct for TRS-A versus B, almost made me pull my hair out. <laugh> Just because it is so...

CW (13:59):

It is the old UART, "You are never going to get it right the first time." RX and TX.

LC (14:02):

Yes, exactly. <laugh>

(14:03):

So MIDI is very old. It came about in the late seventies. At its heart it is a- I think it is 115 Kbps or 115,000 baud serial protocol, basically? Like you can implement it over a UART, I think, right?

(14:21):

Yes. Yeah. When you are doing over a UART it is a 31,250 baud rate.

CW (14:25):

31. God! Oh no, it is the MIDI 2.0's are 150 <laugh>. Yes, it is very slow. 31, 31 kilo...

LC (14:32):

<laugh> Yeah.

EW (14:33):

You are sending commands. You said seven bits. So these are all commands. You mentioned pitch bend, and I remember note on and note off. And it also tells you which instrument you are playing right now.

LC (14:49):

Yes, if there is support for that. You can basically send a program change message, and it will then, as a result, change the synth voice that is playing.

EW (15:01):

I remember, we used MIDI in some of the children's toys I worked on, to generate- There would be music in, let us say a data file, <laugh> because I do not want to explain.

LC (15:14):

Fair.

EW (15:17):

We would play the notes using a pretty simple output. One of the things that I got to do, was to make a song speed up based on user interface, because it was MIDI and I could interpret the note to take less time. So we got music that could speed up without pitch shifting, because I knew what the pitches were because of MIDI, and all I had to do was mess with the time.

(15:49):

So one of the really neat things about MIDI is that it is that simple. It can be enormously complex, but if all you want to do is play a tone, or a series of tones, or 88 keys worth of tones, you can start there. Then you can start getting into the attack, and all of the other parameters that you can have. But initially it is just on and off.

LC (16:22):

Yeah.

CW (16:23):

I think that always surprised me about it, is it is still going. Like, you can buy a $10,000 Moog top of the line synthesizer, and it has got a MIDI port on the back, and it is putting out 31 whatever kilobaud <laugh>, and it still works great. It was well designed. There is MIDI 2.0 that has been proliferating I think slowly, and some other extensions But basically everything still has the original MIDI on it if you need it.

LC (16:48):

Yeah.

EW (16:49):

So there is always the MIDI input, which is always called the MIDI controller.

LC (16:53):

Mm-hmm <affirmative>.

EW (16:54):

And then it goes to something that makes sound.

LC (16:58):

Yes. So it is going to go to either a digital audio workstation, or DAW. Or another hardware synthesizer. Or you can almost be controlling something else. Like I have- Although I do not like fictional robots, I do like musical robots. So I have had MIDI control motor positions. So then it is making acoustic music, but you are controlling it through MIDI.

CW (17:27):

I think you can control lights with it too, right? Or is that something else?

LC (17:29):

You can, yeah. Unity also has really good MIDI input support. So folks will often use that for their live show visuals. They will be able to take in the MIDI control that they are using live to do their music, and have it also be controlling their visuals behind them.

EW (17:46):

Okay. So we are going to call the thing that takes MIDI and outputs sound, "a synth."

LC (17:54):

Yes. Yeah.

EW (17:55):

Okay. Sorry, I am surrounded by synthesizers right now, and I am not sure which ones fall under that category. Can you point to the ones?

LC (18:03):

Some might even be both.

CW (18:04):

What would you like me to point to?

EW (18:05):

The things that take MIDI, and make sound?

CW (18:09):

Well, everything takes MIDI sadly, because even things that are controllers can be controlled up here. So like I have a sequencer here and you can plug MIDI into it, to have something else give it its clock, or to tell it to change patterns, even though it is controlling all the synthesizers. So it is not quite so simple.

EW (18:27):

Have you ever had a problem with that?

CW (18:29):

I have never not had a problem with computers or synthesizers.

EW (18:32):

<laugh> Sorry. He was working on a project and he ended up having two clocks and MIDI.

CW (18:37):

Yes. No, <laugh> I could not work out why the tempo was four times what I was setting. I was like, "Why is this keep going so fast?" And finally I just- Anyway, I had two controllers going in, they were both for- I think the clock was going in a circle between them, and they were just making more clocks. Anyway... <laugh>

LC (18:54):

Infinite clocks.

EW (18:56):

I was asking, what takes in MIDI and outputs sound? So now all the things over there that you have...

CW (19:03):

Mm-hmm <affirmative>. Okay. <laugh> This takes in MIDI and outputs sound. That does, that does, this does...

EW (19:13):

Do they output sound through a speaker, or through a headphone jack, or?

CW (19:17):

Most of them have line outs.

EW (19:19):

Okay. So headphone jacks, or it can go to a speaker.

CW (19:23):

Headphone jacks are usually amplified, line outs are usually low level.

EW (19:26):

Okay. I am just thinking about an embedded system. What you are saying is that I would then need to have an amplified speaker attached to my widget.

CW (19:36):

And a DAC presumably, to make the sounds.

EW (19:41):

Oh. See I thought, when we said hardware synthesizer.

CW (19:46):

Oh. I was saying if you are making your own synthesizer, you need something to...

EW (19:50):

Oh, yes.

CW (19:51):

To wiggle the signal.

EW (19:52):

You take in the MIDI, and then you PWM something out. Whether that is a motor, or some sort of note, or something. Okay. I am sorry, Liz, did you have a correction in there?

CW (20:08):

<laugh>

LC (20:09):

No, I think that is good.

EW (20:11):

What is CV?

LC (20:14):

CV is "control voltage," which is separate from MIDI. And that is used a lot in Eurorack synthesizers, which is a very- I am looking at my setup right now, and it is a plate of spaghetti, which I know folks often worry it will turn into. I can confirm it does, but it is great spaghetti.

(20:37):

Basically, control voltage is- I like to think of it as kind of musical circuits, because you are sending different voltages to control different parameters. It usually ranges between zero and five volts, which makes it very DIY friendly, as well. You can use MIDI to then have a little module or box or something to then affect control voltage. There are a lot of projects like that.

CW (21:07):

And control voltage was what everything used before MIDI, right? It was all you had.

LC (21:11):

Yes. If you look at the old synths that would have a bunch of wires sticking out, that was all control voltage, like the sixties and seventies.

EW (21:20):

Okay. So does this mean that the only thing I can really get from control voltage is the weird spaceship sounds?

LC (21:27):

Yes and no. <laugh> You can manage the spaceship sounds to be more controlled, because there is a parameter called "1V/Oct," or "one volt per octave", and that set voltages that correspond with pitches, as we would think of them. So you can send those to oscillators, and have them sound like in-tune things that do not sound like spaceships floating aimlessly through space.

EW (21:57):

Okay. How do I get from control voltage to something I can hear? Assuming you are not going through a vibe motor, which is the only thing I can think of right now, is that you would play Happy Birthday" with the little vibe motor. Or does control voltage go back into the synth?

LC (22:15):

Control voltage is being sent around the synth to affect the sound. So if you were to just turn on an oscillator, it would probably just be outputting one tone, whatever its base tone was tuned to and then-

EW (22:31):

A440.

LC (22:32):

Yeah, exactly. And then you would bring in control voltage to act as gates, and different manipulators to the different inputs on the oscillator, to turn it on and off with the gates, or have 1V/Oct be changing the pitch, or LFOs be changing how the timbre of the sound. So that is how you would use control voltage to affect the synthesizer.

EW (22:58):

And that is how I go from having a pure sine to having an instrument sound.

LC (23:04):

Exactly. Yeah.

EW (23:05):

Are there other things I need to know about make- So now we have gone from making something that can make music, to making something that is playable as an instrument. Is that right? I mean, before I was talking about just play the music, and that is just you get the MIDI and you use some tool that you already have to play the audio.

(23:27):

But now we are talking about, we have the control voltage, we have the MIDI, we may not be using them together. We also have at least one clock input, that can let us be the base sound. Is this how you build a hardware synthesizer?

LC (23:48):

It is a way <laugh> to build a hardware synthesizer. I tend to think of MIDI and control voltages as kind of separate worlds.

EW (23:57):

Oh, okay.

LC (23:57):

Just because their applications can be different. MIDI controllers are a little bit more straightforward, in that you can take it and if it has USB you plug into your computer, and you open up your software and you are going.

(24:10):

Whereas with control voltage, that happens more in the hardware synths, where you would have multiple hardware synths presumably, or maybe even a Eurorack synth setup. And you have a more involved process then for making the music, and it is a little bit more hands-on, and infinitely expandable.

EW (24:37):

Okay. I think I understand. MIDI is for more controlled, and CV is for less controlled.

LC (24:45):

Yes.

EW (24:47):

You mentioned the Eurorack. Those are the modular synthesizers that fit into the Eurorack?

LC (24:56):

<laugh>

CW (25:02):

<laugh> Eurorack stands for "Eurorack." Sorry, I was going to make a self-referential thing, but that was too hard.

EW (25:07):

Yeah, I already caught that one, thanks. As you mentioned, and as Nick, one of our listeners mentioned, getting a Eurorack is like getting a pet of a thousand snakes all tied together.

LC (25:24):

That is very accurate.

EW (25:26):

But there is also VCV Rack, which is the virtual version?

LC (25:30):

Yes. That is open source and free for folks. It basically allows you to experiment with the Eurorack format, without a lot of space and time and money investment. <laugh>

EW (25:49):

Have you played with it?

LC (25:50):

A little bit. I have actually found it difficult to get started with. I do not know if it is that I am just being impatient, and trying to take what I know I have done with hardware and make the program do that, without researching too much on how that would actually work <laugh>, which I am often guilty of.

(26:13):

But my colleague, John Park, at Adafruit has done a lot with VCV Rack, and he has even done some projects with it. So it is definitely very cool and definitely, I think, a good alternative to actually having a hardware Eurorack set up.

EW (26:31):

I have a question about Eurorack things from Tom. But first he wanted to say that the Adafruit Discord is amazing, and that it is wonderful he can get support there. He tries to buy the Adafruit boards whenever possible, because there is a huge gulf between support and helpful support. And Adafruit is on the helpful side.

LC (26:54):

Oh, thank you.

EW (26:56):

But now what he really wanted was a shopping or a product request list, as he wanted kits for the Eurorack modular synths, with parts and also a breadboard area, configurations for front panel controllers and I/Os. Do you have a tutorial coming up or in mind or do you want ideas?

LC (27:19):

<laugh> I did do a MIDI to CV project. JP, who I mentioned, also does some Eurorack projects. There are for breadboarding, there are little PCB kind of breadboard friends, I think they are even called friends from, oh, I am blanking on the name.

EW (27:48):

What happens if I type in "Eurorack friends"?

CW (27:51):

Do not know.

LC (27:52):

Mutable Instruments, that is who. Mutable Instruments has these breadboard-friendly breakout PCBs that are open source. So you could order them from OSH Park or such, and they have spots with documentation on how you would place the components. Those are really handy if you are breadboarding a synth.

(28:12):

There have been some folks that have come by Show and Tell actually, in past episodes that- I know one person had actually taken one of the breadboard PCB breakout things that Adafruit sells, and mounted it into their Eurorack and had things breadboarded there.

(28:30):

I do not know that there are plans for Adafruit specific kits for Eurorack right now, just because it is a niche thing, and as a rabbit hole. But there are definitely a lot of resources out there for ways to make it more prototype friendly and tinkering friendly.

CW (28:52):

I should note that Mutable Instruments announced that they are winding down operations this year. I think they are going to stop in June, or something like that.

LC (29:01):

I believe so, yeah.

EW (29:04):

Okay. Some questions from Terence about software synthesizers, instead of hardware ones. Digital soft synths. Do you think that those are missing quality, compared to the analog hardware synths? Or is it just that people like the feel of physical knobs?

LC (29:27):

Yeah, I think it is more of a tactile thing, because there is a program called "Reason," which is a DAW that I have used a lot in the past. The sound quality is great.

(29:38):

I know there are probably some folks that are little bit more persnickety, but I do not really notice a sonic difference between the hardware synths and the soft synths, just with the way that we also take in music nowadays, usually online.

(29:54):

For me, I have switched to hardware because I do like that tactile input. And also what, in general, that is why I have started doing things with CircuitPython stuff, was I liked that you had this software idea, and it was coming out into hardware. That makes sense to my brain.

EW (30:17):

Are you tempted to send it back to software, and just make it so that you have the tactile responses, but then just put it back to a place that already knows how to play audio?

LC (30:29):

Yes. One of the first projects I ever wanted to do is actually do a hardware interface for one specific synth in Reason. I recently came across the old drawing I did for that five, six years ago. I might revisit that at some point. It would be all MIDI, and it could control each parameter of that soft synth individually.

EW (30:56):

You mentioned you had done a hardware synth, an analog synth. Was that the one you housed in a skull?

LC (31:03):

Yes. Yeah, that was the skull. <laugh>

EW (31:06):

Why a skull?

LC (31:08):

Why? Well in general, I have noticed that if I am designing a case, I want it to be fun. So I have been making them out- I made a case for the Pico W a cow, because of the pi cow joke with the board name. The skull, I just liked it aesthetically, and I liked that then the two jacks could be in the eyes, so you were plugging into the eyes, which might sound a little upsetting, <laugh> but I promise it is kind of cute.

EW (31:39):

We will have a link to that tutorial, and the "MIDI for Makers" tutorial as well, in the show notes. But one of the things that you do is you do try to make your cases interesting. What tools do you use to make the 3D printing models?

LC (31:57):

I design in Fusion 360, purely just because those are, when I was looking for tutorials and how to get started, those were the ones that came up. I like that you can make the parametric, in that you can like change measurements on a case and it will adjust. Then I 3D print those cases.

(32:18):

I try to use as much color as possible with the filaments, as well. There was one project I was working on last week, that I printed every- There were 16 identical pieces, but I printed eight of, in eight different colors, so it would be a rainbow. Mainly 3D printing is how I approach the cases.

EW (32:43):

Does Fusion 360 still have a free version?

LC (32:46):

It does, yeah. It is actually, I think it is called the "For Makers." You do have to dig a bit in their site menu if you are downloading it for the first time, but it is still available. There is a design limit though. You can only have like ten open designs, so you have to change which ones are editable, but for most smaller projects, that is fine.

EW (33:09):

But you can archive them, and then bring them back. You can-

LC (33:12):

Yeah, they are still there. They do not disappear. I am constantly juggling between which ones are editable and which ones are not <laugh>.

EW (33:19):

Chris, you have been making some more cases. Do you have any questions?

CW (33:26):

I just, I want to make- <laugh>. So for work, I find myself having to make enclosures for things often or mounting things. I have dabbled in CAD, and I always get to the point where I got something that is really close. But what I really want, I really want to take the thing I am enclosing, and I want to throw it into a CAD program, and say, "Make me an enclosure and put these holes here."

EW (33:52):

Like physically throw it in? Like mass transfer protocol?

CW (33:53):

Yes. Well, at the end of the week, that is what I end up doing. But, <laugh> I have tried Fusion. I liked Fusion. It took me a while to get into it, and I managed to do some stuff that kind of worked, and then I think it kicked me out of my hobby account for some reason. Said, "Your subscription is over," then I could not figure out how to get back in.

(34:15):

I was in a hurry, so I switched to something else, Onshape, and did that for a while. It is similar to Fusion 360 and did some stuff in there. But then I found some stuff for OpenSCAD that did kind of the automated thing I want, but not quite. And then there is FreeCAD.

(34:28):

Basically, I have used every program, and I do not know how to do any CAD at all, because I have been doing shopping for which program to use. Is there a way to get from zero to "I need to make a simple stupid non-aesthetic box, that mounts to something in with these parameters?"

LC (34:47):

I think the closest to that, that I am aware of is, my colleague, Noe Ruiz, has a really good tutorial on doing snap fit cases.

CW (34:56):

Oh, okay.

LC (35:01):

When he begins his tutorial, he has in there all the different measurements you will need. And it is truly, it is when you are following along, it is truly a box with a lid. And so if you follow along with that, you will be able to then adjust. You could even keep that model as a file, and then go back and edit it for the type of box you would need for different designs. That is probably as close as I am aware of.

(35:30):

That is the thing about CAD. If you spend time trying out all the different ones, you never actually get familiar with them. That is why I am still on Fusion 360, even though they have been slowly chiseling away at the more affordable <laugh> options, because it feels too scary to jump to another program, you almost get kind of trapped.

CW (35:52):

Well, they are all very, very similar in dangerous ways, that you think, "Oh, this is just," and then no, something subtle about the way they approach things is completely different. Even though they look the same, and they have the same kind of sketch to extrusion to whatever kind of model. Something does not work the same, and then you kind of, yeah.

EW (36:11):

Technology is the worst.

LC (36:14):

Is it not, though? <laugh>

EW (36:16):

Changing subjects. Can you tell us about your new project, Melody Maker?

LC (36:23):

Yeah. Modular Melody Maker is this long-term modular synth project that I am working on. We talked about how with modular Eurorack synths, you run the risk of having it sound like a spaceship that is just floating in space. <laugh>

(36:43):

But I have a music theory background, playing more traditional music like guitar and things. I found I was trying really hard to bring that kind of sonic control to Eurorack. It was hard to sync different modules that could tune your oscillators.

(37:04):

So basically what I am working on, is a four input, four output, module. But I will have it as kind of a desk box, where I can bring in gates or random waveforms to the Melody Maker, and then output tuned waveforms, and lock them to tone. So I could have one chord on one channel, and then a chord that matches nicely on another channel, and have a central control to control the pitches of the modules in my system.

EW (37:46):

Is this like an auto-tuner for voices, but for synths?

LC (37:54):

Kind of. <laugh> That would be one functionality, would be a quantizer, which is where you take a random waveform, and you say, "Only output this voltage." So you can take in just a random sine wave, and say, "I only want it to be on a D and an A." It will then output that through the DAC.

(38:17):

Another method that I will have in the box, is being able to take a gate in to trigger notes in a set melody. So if I wanted it to be random arpeggios or things like that, there would be modes, and it could set those out through the channels. And it is all coded in CircuitPython.

EW (38:41):

How far along is it?

LC (38:45):

It is going pretty well so far. I have the four in, four out, quantizer right now. Next step is going to be doing the gate in, and setting up different preset melodies that could trigger. And then as I was working on it, I realized it should probably also take in MIDI, because everything should take in MIDI.

EW (39:03):

Everything does. <laugh>

LC (39:06):

<laugh> So why not just add it in?

EW (39:10):

Is this a personal project, or is this an Adafruit project, or is there not as much separation as I think?

LC (39:17):

This is a personal project. There is a pretty decent amount of separation, because you have to- When you come up with a project, and you are thinking about whether or not it should be a learn guide, is it has to be easy enough to describe to folks that they will get it. Which I feel like immediately the Modular Melody Maker loses on that.

(39:40):

Then you also have to be able to make it reproducible, with steps that folks can follow. When I came up with this idea, I knew immediately this was only going to be personal. I will save other fun things for the learn system.

EW (40:01):

So you work full-time at Adafruit?

LC (40:06):

Yes.

EW (40:06):

How do you find time to do additional electronics outside that?

LC (40:12):

I do not do it as much as I thought I would initially. Because I do like to, after the workday, do something that is completely separate from technology, like I knit and I do some woodworking. It is mainly weekends if I feel the urge to work on something electronic that is not work related.

(40:34):

For the Modular Melody Maker in particular, I do want to have that done, for my own like music making. So I have been documenting the build logs of it on my personal YouTube channel. That has kept me motivated in working on it in little pieces, which then also makes it feel manageable, when I am thinking about working on it. But I may have been tinkering with electronics and code all week for work.

EW (41:07):

It is hard to have the balance.

LC (41:10):

It is <laugh>.

EW (41:11):

I really meant to do some coding this weekend, and I am going to have to admit it is not going to happen, even though I want the results.

CW (41:19):

It is only Saturday.

EW (41:21):

No. No, it is not.

CW (41:22):

It is not?

EW (41:23):

No. Sorry.

LC (41:25):

<laugh> You just scared me for a moment, thinking I had somehow added an extra day <laugh>.

CW (41:32):

Sorry, I actually do not know what day it is.

LC (41:34):

It is okay.

EW (41:37):

I have a question that probably you should not have to answer, but some of your tutorials had just pictures of the boards. These were the product introductions. And the GIFs did not move. It was so nice! Does anyone else complain about the moving GIFs on Adafruit, or is it just me?

CW (42:04):

I believe it is pronounced "jif."

EW (42:07):

Yeah, if you want to see me turn into a little stress baby ball of unable to do anything, just pull up the Adafruit page where two GIFs are going at the same time. And I am...

CW (42:17):

<laugh>

EW (42:17):

It is like catatonia inducing.

LC (42:21):

Yeah, it is too much movement. I have not heard any complaints. But in general, I have a similar reaction to GIFs. I do not want too much movement happening. So if I have a tutorial that does call for a GIF, which sometimes you do need one just to demonstrate movement, otherwise it is hard to illustrate to folks what the project is. I tend to limit it, or make it a not very flashy GIF.

EW (42:52):

Thank you. From the bottom of my heart, thank you.

LC (42:56):

<laugh> No problem.

EW (42:58):

Limor is going to be so mad! Let me see, you had questions for us?

LC (43:04):

Yes.

EW (43:06):

Do you want to ask them, or do you want me to ask them? I guess that would be weird.

CW (43:09):

<laugh> What?

LC (43:12):

I can ask you. Where you are both professional embedded engineers, how do you view programming languages like CircuitPython and MicroPython, Arduino? Do you think of them as just stupid junior not real coding? Or do you think they have value for folks learning, or actual applications?

CW (43:34):

Do you want me to take that?

EW (43:35):

You are the last one who used CircuitPython, which I think was very recently.

CW (43:39):

I do not think it is junior or beneath me or beneath anyone. I quite enjoyed- I have done some personal projects where I have played around with CircuitPython and I quite like it.

(43:50):

My perspective lately has been, since I do professional embedded work, professional embedded work is often painful for a variety of reasons and hard. I often feel like, "Oh, well if I am going to do a personal project, I should use those skills, right?" But it is still really, really hard, setting up tools and getting bare metal stuff going or whatever, and using HALs and stuff.

(44:14):

Most of the time I just want to make the thing that I want to make. So I have just been, yeah, reaching for CircuitPython, and playing with that. It is very relaxing, <laugh> and it does what I want. There is no reason to use anything else for something, unless there is a cost reason. Like, "Oh, if I am going to sell 20 million of these, CircuitPython might push me toward a micro that I cannot afford." Okay.

(44:37):

Or there is a performance reason I cannot do the thing I need to do. But that is rarely the case with personal or hobby projects, or low volume things. I am quite liking it. I think I first started playing with it a few years ago, and it had less support for some things. When I most recently tried to use it, I was like, "This is incredible." It takes me a few minutes to do stuff that bogs down a lot with development with an STM32 in the HAL, and getting I2C working and all this stuff. It is quite pleasant. I have really enjoyed it. I think more people should reach for it first.

EW (45:18):

I am not convinced it is ready to be shipped on 20 million products that need over the air updates and-

CW (45:26):

Yeah, I did not say that <laugh>.

LC (45:26):

<laugh>

EW (45:26):

High reliability systems. But I definitely do not look down on it. If it encourages a few high school students with- I mean, you get a definite rush when things work. I love the fact that these are straightforward enough, and there are enough tutorials out there, that you can develop as a ten year old, and get something pretty cool out of it.

(45:58):

That means that it is an excellent stepping stone towards going to see more things. I do not know that you could go from CircuitPython on a robotics team in high school, to professional development, but I am such a snob about that. And that is my snobbery, not necessarily anything other than, they just do not know enough yet.

CW (46:27):

Oh, what do not they know? It depends on what you are learning, and how you are writing code, because interrupts are there and- Well, part of the problem- I am going to flip it around. There are concepts in CircuitPython, that are more advanced than anything that we do with standard embedded development in C.

EW (46:42):

My God! I-

CW (46:44):

There is async stuff happening with interrupts, and those things which are much more modern, and we do not have those. So it is kind of a flip side thing, where somebody could come out of using CircuitPython a lot, and be like, "Where are all of these modern concepts?"

EW (46:57):

Oh my God, yes. I have been flipping back and forth between a Python simulator and a C++ implementation of something, trying to make both work. I was like, "Oh, it is C++. There will be some nice tools, and I can finally use maps."

(47:13):

In Python I have this gigantic map of commands to function pointers, or commands to functions. They are not really function pointers in Python, but in C++ they- And it totally does not work in C++. All these things, the map did not work, the list did not work. It was just so painful. And the fact that we were using C++98 did not occur to me, until far too long into the project. So some of those pains probably have gotten better.

(47:47):

But one of the problems with working with CircuitPython or Python or MicroPython or even Arduino, is that you get used to that level of simplicity. And having it work. And not having to fiddle with some little bit in the 12th register.

(48:03):

I think they are great. I know Arduino was partially developed to allow artists to work in technology things. CircuitPython, Arduino, MicroPython, they all allow that. It lets more people be artists instead of having to be an engineer in order to make lights blink.

CW (48:31):

Nobody is getting an award for how hard something was, when it could be easy.

EW (48:35):

<laugh> Yes. <laugh>

CW (48:37):

Right?

EW (48:37):

I mean, some of my origami could win that award. In the end, it is super easy. But I just did not know until I got there. <laugh>

LC (48:48):

Thank you for answering that, because with the CircuitPython community- I am always curious how other folks outside the community are viewing it, that are in other programming spaces. So it is interesting to hear.

EW (49:03):

We tend to work on things that are at the edges of cost. The constraint for us is cost. CircuitPython takes more processing power and more RAM than running bare metal.

CW (49:20):

A lot of projects we work on, at the end of the project there are four bytes of RAM left, when we are doing bare metal C.

EW (49:27):

They are paying for our time, in order not to pay for that cost.

CW (49:30):

Yeah. They are saving 20 cents a card, by paying us a lot more.

LC (49:32):

Right. Yeah.

EW (49:33):

Hopefully not.

CW (49:35):

<laugh>

EW (49:37):

Like, I am actually working on a big Linux system, so that does not qualify for CircuitPython. And you are working on a big Linux system?

CW (49:47):

I am writing in Python. Python Python.

EW (49:49):

Oh, right.

CW (49:52):

But I am doing machine learning stuff, and yeah, that is a totally different world.

EW (49:56):

Sometimes. Sometimes not so much. How much CircuitPython and like AI on the edge? Have you worked with any of that, Liz?

LC (50:06):

I have not. But my colleague Melissa has done some stuff with Python on Raspberry Pi, doing the AI things. CircuitPython does not have any of the AI things yet.

EW (50:23):

Ah, you should talk to Edge Impulse, and combine them. That would be awesome.

LC (50:27):

That would.

EW (50:29):

Liz, thank you so much for being with us. Are there any thoughts you would like to leave us with?

LC (50:38):

I share a lot of projects online and everything, I guess. It seems like it would go without saying, but before you leave a negative comment for someone, keep in mind that there is a person behind that. Just be kind to people when you are interacting, even if it is virtual.

EW (50:57):

That is a good thing to remember. Our guest has been Liz Clark, author at Adafruit. You can find Liz as BlitzCityDIY on most social media.

CW (51:08):

Thanks Liz.

LC (51:11):

Thanks so much.

EW (51:12):

Thank you to Christopher for producing and co-hosting. Thank you to our Patreon listener Slack group for questions, which you can join if you would like to go over to Patreon. Also, thank you for listening. You can always contact us at show@embedded.fm or hit the contact link on embedded.fm.

(51:27):

And now something to leave you with. This is from Ten@mastodon.lol, who shared this fun fact with us: People in the Old West used to attach lanterns to their saddles, so that they could follow trails home easier at night. It was not GPS, but it was... Saddle Light Navigation.