1 00:00:02,600 --> 00:00:04,200 Welcome to The Bootloader, I'm Tod Kurt. 2 00:00:04,690 --> 00:00:05,500 And I'm Paul Cutler. 3 00:00:05,960 --> 00:00:06,020 The 4 00:00:06,020 --> 00:00:07,000 show works like this. 5 00:00:07,540 --> 00:00:09,500 Tod and I have each brought three things to share, 6 00:00:09,730 --> 00:00:11,140 which we'll chat about for a few minutes, 7 00:00:11,240 --> 00:00:12,520 but no more than about five. 8 00:00:13,200 --> 00:00:15,340 For detailed show notes, links and transcripts, 9 00:00:15,480 --> 00:00:16,780 visit thebootloader.net. 10 00:00:17,420 --> 00:00:18,160 Tod, what's your 11 00:00:18,160 --> 00:00:19,160 first one for us? 12 00:00:19,720 --> 00:00:21,820 All right, so you know my continuing quest 13 00:00:21,870 --> 00:00:24,280 to make microcontrollers act like synthesizers. 14 00:00:24,980 --> 00:00:26,220 Well, what if there was a single chip 15 00:00:26,280 --> 00:00:28,080 you could add to your circuit 16 00:00:28,080 --> 00:00:29,660 that you could talk to with a single serial wire 17 00:00:30,040 --> 00:00:31,940 that not only gave you a synth voice, 18 00:00:32,240 --> 00:00:36,320 but a 64 voice synth with 128 different sounds, 19 00:00:36,460 --> 00:00:40,100 including piano, strings, bass guitar, a full drum kit, 20 00:00:40,840 --> 00:00:43,040 and they can all play simultaneously, it's multi-timbral. 21 00:00:43,560 --> 00:00:46,800 And it can play different sounds on different MIDI channels 22 00:00:47,120 --> 00:00:48,060 and you can change the sounds 23 00:00:48,100 --> 00:00:49,440 with MIDI program change messages. 24 00:00:49,920 --> 00:00:52,540 Oh, and it also has audio effects to apply to those sounds 25 00:00:52,620 --> 00:00:54,620 like EQ, reverb, and chorus. 26 00:00:55,440 --> 00:00:58,800 and it has a mic input that you can treat with those effects. 27 00:00:59,260 --> 00:01:00,000 This thing is bonkers. 28 00:01:00,440 --> 00:01:02,180 It's called the SAM2695, 29 00:01:02,690 --> 00:01:05,420 and it's a full General MIDI synthesizer on a chip. 30 00:01:06,100 --> 00:01:08,240 You may remember General MIDI or GM 31 00:01:08,760 --> 00:01:10,400 from PC video games in the '90s, 32 00:01:11,080 --> 00:01:12,620 where if you had a special Sound Blaster 33 00:01:12,860 --> 00:01:14,680 or an outboard GM MIDI module, 34 00:01:15,200 --> 00:01:17,960 your games would have much more cinematic music than normal. 35 00:01:18,490 --> 00:01:20,400 I remember playing "Star Wars TIE Fighter" 36 00:01:20,410 --> 00:01:22,140 on a friend's computer that had one of these, 37 00:01:22,180 --> 00:01:23,840 and man, it felt like I was in the movie. 38 00:01:24,680 --> 00:01:27,480 The SAM2695 chip is from a French company called Dream. 39 00:01:28,060 --> 00:01:30,120 They seem to specialize in these one-chip solutions 40 00:01:30,250 --> 00:01:31,840 to many music hobbyist needs, 41 00:01:31,920 --> 00:01:35,580 like keyboard synthesizer chip, USB audio interface chip, 42 00:01:35,740 --> 00:01:37,420 and 81 voice piano chip. 43 00:01:38,459 --> 00:01:40,280 Their SAM2695 is an earlier effort 44 00:01:40,340 --> 00:01:41,740 aimed at really low cost applications. 45 00:01:42,360 --> 00:01:44,460 It's around $4 in quantity, it seems like, 46 00:01:44,500 --> 00:01:46,300 when I'm looking around on Alibaba and stuff, 47 00:01:46,780 --> 00:01:48,740 and requires just a handful of support components, 48 00:01:48,880 --> 00:01:49,800 like just an oscillator 49 00:01:49,830 --> 00:01:51,200 and a couple of capacitors and resistors. 50 00:01:51,600 --> 00:01:53,139 It can be completely controlled 51 00:01:53,140 --> 00:01:55,520 by a single logic level MIDI input serial line, 52 00:01:56,060 --> 00:01:57,340 making it really easy to embed. 53 00:01:58,000 --> 00:01:59,740 And in fact, you can get some pre-made modules 54 00:01:59,780 --> 00:02:02,280 that use this chip right now from Seed or M5Stack. 55 00:02:02,760 --> 00:02:04,100 The Seed one is called the Xiao MIDI, 56 00:02:04,700 --> 00:02:06,860 the M5Stack one's called the MIDI Synth with Speaker, 57 00:02:07,120 --> 00:02:09,479 and they make another one called the MIDI Unit 58 00:02:09,580 --> 00:02:10,360 with MIDI In/Out. 59 00:02:11,160 --> 00:02:12,940 And if you'd like to learn more about this chip 60 00:02:13,060 --> 00:02:14,980 and one of the M5Stack boards, 61 00:02:15,580 --> 00:02:18,739 Kevin from DIY Electro Music has a great series of articles 62 00:02:18,740 --> 00:02:22,840 using this, the M5 stack version, with a cutie pie Xiao board. 63 00:02:23,300 --> 00:02:26,860 Kind of just to show you how little you need in terms of CPU to actually control one of 64 00:02:26,860 --> 00:02:27,000 these. 65 00:02:27,720 --> 00:02:32,980 On Dream's website, the 2695 is marked as "not recommended for new designs," but it 66 00:02:33,040 --> 00:02:35,040 seems like that's not stopping the above companies. 67 00:02:35,460 --> 00:02:38,980 I wonder what will happen to the above products if this chip really goes away. 68 00:02:39,480 --> 00:02:42,440 I don't think they're working off a copy of the chip, because it's a pretty complex thing. 69 00:02:42,740 --> 00:02:46,380 I hope this chip continues to be made forever, because it's so cool. 70 00:02:47,220 --> 00:02:48,600 I've got the M5 stack versions. 71 00:02:48,660 --> 00:02:49,920 I've been playing around with them for a couple of days. 72 00:02:50,380 --> 00:02:50,920 They're super cheap. 73 00:02:50,980 --> 00:02:54,500 They're about 12 bucks for the one with a built in speaker and $14 74 00:02:54,960 --> 00:02:57,660 for the one that has the actual MIDI ports and an audio output jack. 75 00:02:58,160 --> 00:02:59,980 And there'll be links to all this stuff in the show notes. 76 00:03:00,380 --> 00:03:01,800 Yeah, I was surprised how cheap they were. 77 00:03:01,860 --> 00:03:04,680 I mean, you're talking 12 to 20 bucks for the two or three ones 78 00:03:04,760 --> 00:03:05,500 that you link to it. 79 00:03:05,860 --> 00:03:06,080 Yeah, yeah. 80 00:03:06,200 --> 00:03:08,720 For like a fully built thing with a little little cable, 81 00:03:08,740 --> 00:03:11,140 you can just plug into your under your breadboard or into your circuit. 82 00:03:11,260 --> 00:03:12,980 And so what the heck, man? 83 00:03:13,100 --> 00:03:16,239 It's all this struggle that I've been putting on for the last several years 84 00:03:16,240 --> 00:03:19,200 of making synthesizers running in the microcontroller, 85 00:03:19,320 --> 00:03:22,520 we could just like farm it out to a little, you know, side chip. 86 00:03:23,600 --> 00:03:25,880 You have to have a whole new tips and tricks page just for 87 00:03:25,880 --> 00:03:26,420 that chip. 88 00:03:27,040 --> 00:03:27,440 Yeah. 89 00:03:28,940 --> 00:03:31,860 Well, the thing is, like, General MIDI has been around since the like 90 00:03:32,600 --> 00:03:33,540 late 80s, early 90s. 91 00:03:33,540 --> 00:03:37,380 So there's a lot of precomposed music that just runs on 92 00:03:37,720 --> 00:03:40,040 that assumes that the general MIDI sound set. 93 00:03:40,420 --> 00:03:44,239 And so one of the initial things might be to just have a simple MIDI player 94 00:03:44,240 --> 00:03:46,240 that reads MIDI files off an SD card 95 00:03:46,240 --> 00:03:48,320 and just sends the MIDI messages out to this chip 96 00:03:48,360 --> 00:03:49,160 and see what it sounds like. 97 00:03:49,160 --> 00:03:50,180 I bet it would sound pretty cool. 98 00:03:50,680 --> 00:03:51,240 I bet it would. 99 00:03:51,940 --> 00:03:52,340 (Tod laughs) 100 00:03:52,760 --> 00:03:54,600 All right, so what's your first one this time? 101 00:03:55,040 --> 00:03:56,620 My first one feels like I'm trespassing 102 00:03:56,680 --> 00:03:57,900 in your territory, Tod. 103 00:03:58,360 --> 00:03:58,840 (Tod laughs) 104 00:03:58,960 --> 00:04:00,560 I just learned about SuperCollider, 105 00:04:00,800 --> 00:04:03,440 which is a synth engine that's been around since 1996. 106 00:04:04,020 --> 00:04:05,220 So I'm guessing you've heard of it. 107 00:04:05,660 --> 00:04:05,980 Oh, yes. 108 00:04:06,440 --> 00:04:07,740 SuperCollider has three components, 109 00:04:08,080 --> 00:04:11,140 SC-Synth, a real-time audio engine implemented as a server, 110 00:04:11,800 --> 00:04:16,359 SClang, an interpreted program language that acts as a client to the server that is similar 111 00:04:16,500 --> 00:04:21,859 to Smalltalk, and SCIDE, an editor for SClang with an integrated help system. 112 00:04:22,560 --> 00:04:26,280 The server and client communicate using Open Sound Control, or OSC. 113 00:04:26,780 --> 00:04:30,180 I looked at some of the SuperCollider code examples, but couldn't wrap my head around 114 00:04:30,180 --> 00:04:31,020 it at all. 115 00:04:31,560 --> 00:04:35,520 The reason I'm bringing up a synth engine that's been around for 30 years now is because 116 00:04:35,660 --> 00:04:40,959 earlier this year, Andrew Clark thankfully wrote a Python API to SuperCollider he calls 117 00:04:40,960 --> 00:04:43,000 I hope I pronounced that right. 118 00:04:43,360 --> 00:04:46,020 And then he wrote a dozen examples and published them on GitHub. 119 00:04:46,820 --> 00:04:50,600 They include an arpeggiator, an LFO, drum sequencers, and more. 120 00:04:51,320 --> 00:04:52,700 Then he takes it to the next level. 121 00:04:52,730 --> 00:04:57,980 He created a subreddit where he explains each demo, including an introduction to the concept, 122 00:04:58,360 --> 00:05:00,360 code for each demo, and then a walkthrough. 123 00:05:01,200 --> 00:05:04,780 Knowing a little bit of Python, I was able to almost wrap my head around the concepts. 124 00:05:05,960 --> 00:05:10,080 And if Python isn't your thing, there's also APIs for JavaScript, Haskell, and more. 125 00:05:10,520 --> 00:05:11,020 That's really interesting. 126 00:05:11,880 --> 00:05:15,840 Because SuperCollider has been around for so long and because it's a programming oriented 127 00:05:15,940 --> 00:05:21,120 thing, I've been aware of it and I've bounced off of it like a half a dozen times trying 128 00:05:21,220 --> 00:05:22,900 to write stuff in it. 129 00:05:23,020 --> 00:05:28,560 And I just never been able to because it feels like a research project that turned into an 130 00:05:28,600 --> 00:05:33,480 open source community from like 40 years ago or something. 131 00:05:34,880 --> 00:05:39,040 So it's kind of just got a different shape than what I'm used to. 132 00:05:39,520 --> 00:05:42,260 But the Python interface looks pretty reasonable, you know? 133 00:05:42,460 --> 00:05:45,560 So hey, lots of really cool sounds have been made with SuperCollider. 134 00:05:46,140 --> 00:05:47,180 What's your next one for us? 135 00:05:47,500 --> 00:05:47,720 All right. 136 00:05:48,560 --> 00:05:51,680 I'm going to rant about STM32 development tools. 137 00:05:52,220 --> 00:05:55,040 Now realize, I'm a make file and text editor guy. 138 00:05:55,160 --> 00:05:58,320 My debugger is print statements, pin toggles, and oscilloscopes. 139 00:05:58,880 --> 00:06:03,040 I've developed for just about every low-cost microcontroller except the STM32. 140 00:06:04,220 --> 00:06:06,720 Now for work reasons, I'm about to get into the STM32. 141 00:06:07,240 --> 00:06:11,420 I started the dive thinking it'd be similar to the other ARM-based CPUs that I've worked with. 142 00:06:11,850 --> 00:06:16,320 I quickly find that it seems the majority of people are using ST's collection of IDE tools. 143 00:06:16,470 --> 00:06:19,140 Oh no, vendor required IDEs. 144 00:06:19,750 --> 00:06:22,760 You know what's worse than trying to reuse Arduino to write microcontroller code? 145 00:06:23,140 --> 00:06:24,800 Trying to use Eclipse to write code. 146 00:06:25,100 --> 00:06:25,820 What's worse than that? 147 00:06:26,140 --> 00:06:27,840 Using a vendor's wrapped version of Eclipse. 148 00:06:28,420 --> 00:06:29,180 And worse than that? 149 00:06:29,460 --> 00:06:36,260 A vendor-skinned Eclipse that sub-apps that run in entirely different Java VMs to configure the chip with a GUI. 150 00:06:36,480 --> 00:06:43,320 Worse than that, the only build for these tools is for Mac OS is Intel, so it runs an x86 Rosetta emulation. 151 00:06:44,440 --> 00:06:53,220 Thus a keystroke you type goes from native code to emulated x86 to Java VM to Eclipse GUI to vendor wrapper and 152 00:06:53,520 --> 00:06:56,840 finally to your screen. To say it slow is to be kind. 153 00:06:58,139 --> 00:07:03,800 On top of all that, it seems like everyone in the STM world relies on this dang GUI to configure the chips. 154 00:07:05,600 --> 00:07:07,960 So I kind of blame Arduino for this situation 155 00:07:09,140 --> 00:07:12,220 Before Arduino programming microcontrollers was like this. It was a real pain 156 00:07:12,220 --> 00:07:19,600 It was Windows only using proprietary IDEs written in Visual Basic invoking proprietary compilers all of this costing thousands of dollars 157 00:07:20,520 --> 00:07:22,520 Just getting to a blinking LED would take you weeks 158 00:07:22,990 --> 00:07:29,580 But around in 1989 AVR GCC and AVR libc was created by some kind hackers a fully open source 159 00:07:29,680 --> 00:07:33,119 Compiler suite for the very nice at Mel AVR microcontroller chips 160 00:07:33,120 --> 00:07:36,420 Of course, Atmel wanted nothing to do with this, but everyone loved it. 161 00:07:37,100 --> 00:07:42,360 And when graduate student Hernando Bargan created his wiring thesis project in 2003 162 00:07:42,440 --> 00:07:47,940 by smashing AVRGCC together with a hacked version of the Processing IDE, the beginning 163 00:07:48,080 --> 00:07:52,840 of what we now know as Arduino was created, a fully open-source, cross-platform IDE for 164 00:07:52,920 --> 00:07:54,720 writing and debugging microcontroller projects. 165 00:07:55,220 --> 00:08:00,340 I've used the Arduino IDE as a starting point for many projects, and moving to a command-line 166 00:08:00,200 --> 00:08:04,860 make file with AVRGC was pretty painless, letting me use any more advanced code editor. 167 00:08:11,499 --> 00:08:16,500 Because Arduino cores are open source, if you want to know how Arduino is configuring the chip or 168 00:08:16,620 --> 00:08:20,960 setting up pins, just poke around the core and find out how this chip's digital write works. 169 00:08:23,120 --> 00:08:28,740 So people bag on the Arduino IDE now, but it was revolutionary. It set a new standard baseline for 170 00:08:28,680 --> 00:08:34,479 MCU development apps based on GCC, Windows Mac Linux builds, and the core compiler tools 171 00:08:34,539 --> 00:08:37,860 and libraries open source. And it doesn't try to lock you into the IDE. 172 00:08:38,990 --> 00:08:44,320 So now, after Arduino came around, microcontroller vendors wanted more features than the Arduino IDE 173 00:08:44,320 --> 00:08:48,980 could manage. So what do you do? At the time, the Eclipse IDE was the VS Code of the day, 174 00:08:49,130 --> 00:08:55,820 a highly extensible IDE that could take plugins and be reskinned. Unlike VS Code, Eclipse was slow, 175 00:08:55,960 --> 00:09:01,580 bloated, terrible to look at, at least to me. And the MC inventors didn't help this with their 176 00:09:01,670 --> 00:09:07,920 often sloppy wrapping of Eclipse in their own toolkits to help the user. It further obfuscated 177 00:09:08,000 --> 00:09:12,280 what I was trying to do. Just give me a well-organized makefile, a standard library 178 00:09:12,360 --> 00:09:18,840 with docs and some example projects. I don't need your fancy GUIs. If you've ever done ESP32 or 179 00:09:18,900 --> 00:09:23,440 Raspberry Pi C development, you've experienced the benefits that I think that Arduino started. 180 00:09:23,720 --> 00:09:28,920 Good open standard libraries, good docs, GCC compiler, all of it immensely scriptable via 181 00:09:29,160 --> 00:09:33,920 Makefiles or CMake, and all very open source. All you need to write code for these chips is 182 00:09:33,960 --> 00:09:39,020 a text editor and a terminal window. And then STM32, the only MCU platform I've 183 00:09:39,060 --> 00:09:43,340 delved into. Their chips are great, I've been envious of my compatriots who have 184 00:09:43,620 --> 00:09:48,339 facility with them, but the tooling, it's like stepping back into the early 2000s with the 185 00:09:48,200 --> 00:09:52,180 weirdly slow proprietary IDEs, especially on the Mac currently. 186 00:09:53,260 --> 00:09:55,900 Thankfully, under the hood, it's all standard ARM GCC 187 00:09:56,320 --> 00:09:58,960 with a decent set of libraries for these chips. 188 00:09:59,780 --> 00:10:03,780 But I can only find the API docs for these libraries in their crazy IDE. 189 00:10:04,600 --> 00:10:07,500 There's no website for them, as far as I can tell, no PDFs. 190 00:10:07,520 --> 00:10:08,280 That's maddening. 191 00:10:09,000 --> 00:10:12,020 One sub app of the IDE is called STMQBMX, 192 00:10:12,680 --> 00:10:16,260 and it's a code generator to do proper chip configuration startup. 193 00:10:16,800 --> 00:10:20,600 This is useful, especially the way some of the STM chips work. 194 00:10:21,320 --> 00:10:24,400 And it only takes about 15 seconds to start, which 195 00:10:25,460 --> 00:10:28,520 I don't know, maybe I'm maybe I'm just just selfish here, 196 00:10:28,600 --> 00:10:30,980 but I think an app should start in faster than 15 seconds. 197 00:10:31,440 --> 00:10:35,120 And it seemingly has example projects that can generate for your chip. 198 00:10:35,360 --> 00:10:39,640 But I've not been able to find a way to actually get them to actually work. 199 00:10:40,060 --> 00:10:41,660 And when you're searching for them, good luck, 200 00:10:41,860 --> 00:10:44,140 because every time you type a character into the search field, 201 00:10:44,400 --> 00:10:49,880 It causes the whole GUI to pause for several seconds as it sort of relays it out to sort of show you the updated search results. 202 00:10:50,900 --> 00:10:51,320 *sigh* 203 00:10:51,860 --> 00:10:55,060 So, but it's very powerful and it generates code that does work. 204 00:10:55,380 --> 00:11:00,240 It blessedly can generate Makefile-compatible projects, but these code generators are fairly one-way. 205 00:11:00,420 --> 00:11:06,560 If you edit any of the output and then you go back to the code generator and change, make some settings, you might be stuck. 206 00:11:06,880 --> 00:11:08,080 You might get your code overwritten. 207 00:11:08,820 --> 00:11:11,280 I can already see the need to make some chip configuration changes. 208 00:11:11,860 --> 00:11:15,620 And it seems like the fastest path for me might be to start a whole new project, make 209 00:11:15,720 --> 00:11:18,820 those changes, then copy over my code from the previous project to it. 210 00:11:19,660 --> 00:11:23,200 In theory there are regions in the code files that are safe from the code generator, but 211 00:11:23,680 --> 00:11:25,740 not everything that needs to be modified are in those regions. 212 00:11:26,700 --> 00:11:27,320 So that's my rant. 213 00:11:28,500 --> 00:11:29,960 I'm loving the STM32 chips. 214 00:11:30,400 --> 00:11:33,840 I've already got first light on a project using them, and I'm learning them enough that 215 00:11:33,860 --> 00:11:37,280 I can almost wean myself off the weird GUIs, but man, it's slow going. 216 00:11:38,160 --> 00:11:41,640 Well, it's 2025. Who doesn't have their documentation online? 217 00:11:42,300 --> 00:11:45,620 There's whole frameworks for documentation like Astro and JavaScript 218 00:11:45,960 --> 00:11:49,060 or MKDocs and Python to make it easy to write docs. 219 00:11:49,420 --> 00:11:52,800 Yeah, I mean, I mean, part of it, part of it is is STM, STM 220 00:11:52,800 --> 00:11:55,600 Microelectronics, I think, is very sort of typical for most vendors. 221 00:11:55,920 --> 00:11:58,940 I think Espressif and Raspberry Pi are sort of aberrant 222 00:11:59,000 --> 00:12:00,640 and they're so good at their documentation. 223 00:12:01,170 --> 00:12:04,660 And so I think I just need to be in the culture, 224 00:12:04,980 --> 00:12:07,400 be in the community a bit more and learn where things are. 225 00:12:08,380 --> 00:12:12,160 I'm I've not found it's like surely there must be API doc somewhere 226 00:12:13,560 --> 00:12:13,980 It's not just 227 00:12:13,980 --> 00:12:14,600 reading the source 228 00:12:15,700 --> 00:12:16,620 But you know who knows? 229 00:12:18,060 --> 00:12:21,320 Well next up I have the perfect antidote to your rant 230 00:12:21,920 --> 00:12:22,500 And that's a 231 00:12:22,500 --> 00:12:27,380 lecture in video titled a love letter to embedded systems by V Hunter Adams 232 00:12:28,300 --> 00:12:35,159 Professor Adams teaches what I think is a graduate level course at Cornell University called digital systems design using microcontrollers 233 00:12:35,400 --> 00:12:40,540 It looks like the course uses Raspberry Pi Picos using the Pico SDK in C and teaches 234 00:12:40,720 --> 00:12:45,080 embedded development with projects like synthesizing birdsong or controlling a 1D helicopter. 235 00:12:46,060 --> 00:12:49,620 This lecture is from a little later in the semester and Professor Adams warns that it's 236 00:12:49,620 --> 00:12:51,760 the first time he's given this particular lecture. 237 00:12:52,480 --> 00:12:54,420 In it, he tries to answer four questions. 238 00:12:55,400 --> 00:12:57,100 Why should you do engineering projects? 239 00:12:57,960 --> 00:12:59,540 What makes embedded projects special? 240 00:13:00,180 --> 00:13:01,560 And two questions for his students. 241 00:13:01,740 --> 00:13:05,720 are some projects other students have completed and how can you get started on projects on 242 00:13:05,780 --> 00:13:06,100 your own? 243 00:13:07,020 --> 00:13:10,060 Coming back to that first question, why should you do an engineering project? 244 00:13:10,610 --> 00:13:14,360 He goes on to share that it's important to build things because it's really hard. 245 00:13:14,640 --> 00:13:15,960 Nothing ever works. 246 00:13:16,410 --> 00:13:19,360 He talks a little bit about simulations versus real world building. 247 00:13:19,840 --> 00:13:22,120 And then he has one of my two favorite quotes from the lecture. 248 00:13:22,700 --> 00:13:24,880 Building things fills you with humility and wonder. 249 00:13:25,250 --> 00:13:27,860 You will weep in awe of things like keyboards. 250 00:13:28,900 --> 00:13:29,380 And you know what? 251 00:13:29,420 --> 00:13:29,900 He's right. 252 00:13:30,980 --> 00:13:34,220 been a maker for a handful of years and the things I've learned on how things 253 00:13:34,220 --> 00:13:37,580 are built does leave me with wonder and the keyboard example is perfect. 254 00:13:37,920 --> 00:13:41,480 Something we use every day but you try to wire the rows and columns and make a 255 00:13:41,480 --> 00:13:45,420 working keyboard with the bouncer and everything that goes into it. Second he 256 00:13:45,500 --> 00:13:49,180 goes on to ask what makes embedded projects so special. He goes off on a 257 00:13:49,180 --> 00:13:53,240 little bit of a tangent on Leonardo da Vinci. His point being that da Vinci 258 00:13:53,320 --> 00:13:57,559 would spend months or years researching something like anatomy or shadows before 259 00:13:57,560 --> 00:14:00,080 putting it into practice by painting something like the Mona Lisa. 260 00:14:00,840 --> 00:14:04,520 His point being is that engineering is the mechanism for learning other stuff. 261 00:14:05,180 --> 00:14:06,040 But why embedded? 262 00:14:06,850 --> 00:14:10,720 They offer constraints and constraints beget complexity. 263 00:14:12,020 --> 00:14:14,240 Microcontrollers are just the right amount of complexity. 264 00:14:14,390 --> 00:14:18,620 For example, a data sheet can be hundreds of pages, which is complex, but 265 00:14:18,720 --> 00:14:20,480 not beyond the capacity of one person. 266 00:14:20,990 --> 00:14:25,140 And if you get a little magic smoke, microcontrollers just a few bucks and 267 00:14:24,980 --> 00:14:29,619 maybe some burn fingertips, make a mistake with a high power system, and... 268 00:14:30,400 --> 00:14:33,880 And then lastly, he shares my favorite quote, which is something I've struggled 269 00:14:34,000 --> 00:14:37,140 to articulate when I'm asked about my hobbies and why I enjoy them. 270 00:14:38,000 --> 00:14:41,400 Professor Adams shares that one reason he believes embedded engineering is special 271 00:14:41,820 --> 00:14:46,300 is because it sits on the boundary of the natural world and the computational world. 272 00:14:47,080 --> 00:14:50,160 Debugging places you in conversation with nature and with physics. 273 00:14:50,580 --> 00:14:54,360 Is the bug in the software, the hardware, or is it a consequence of physics? 274 00:14:55,020 --> 00:14:58,260 The lecture is about 40 minutes and I'm not saying you should rush out and watch it right 275 00:14:58,360 --> 00:14:58,540 away. 276 00:14:59,020 --> 00:15:02,340 But if you're doing something else like cooking in the kitchen, doing the dishes or out for 277 00:15:02,360 --> 00:15:03,420 a walk, give it a listen. 278 00:15:03,540 --> 00:15:04,360 I think you'll enjoy it. 279 00:15:04,830 --> 00:15:06,080 Yeah, it's so good. 280 00:15:06,200 --> 00:15:09,540 I've actually been watching this lecture of his. 281 00:15:09,770 --> 00:15:12,700 I'm about like maybe 10 lectures in or so. 282 00:15:13,110 --> 00:15:15,520 I haven't gotten to this one yet, but I listened to this whole thing. 283 00:15:15,580 --> 00:15:16,000 It's wonderful. 284 00:15:17,080 --> 00:15:20,700 Almost everybody at this point now in our lives, everybody that we know has written 285 00:15:20,700 --> 00:15:24,060 and software and the feeling of power you get 286 00:15:24,140 --> 00:15:25,420 when you've created a program, 287 00:15:25,560 --> 00:15:27,320 you're like, I'm changing the world. 288 00:15:27,690 --> 00:15:30,600 You know, it's like, I'm drawing a snake on the screen, 289 00:15:30,840 --> 00:15:33,740 but I did that, you know, and like that sense of like, 290 00:15:33,980 --> 00:15:35,760 I'm the master of this tiny universe. 291 00:15:36,040 --> 00:15:39,580 And I feel that's one of the things that embedded stuff 292 00:15:40,300 --> 00:15:43,780 is really good for because not only am I affecting 293 00:15:44,560 --> 00:15:46,900 just pixels on my screen, but I'm actually causing things 294 00:15:47,000 --> 00:15:48,720 to move in real world, you know, 295 00:15:49,220 --> 00:15:51,360 or I'm causing a thing to sense the real world, 296 00:15:51,500 --> 00:15:52,540 and that's super powerful. 297 00:15:53,140 --> 00:15:53,540 I agree. 298 00:15:53,740 --> 00:15:54,680 That's one reason why I love it. 299 00:15:54,720 --> 00:15:56,640 I mean, everyone always uses the example 300 00:15:56,780 --> 00:15:58,080 of the first time you get something 301 00:15:58,140 --> 00:15:59,440 to blink on a microcontroller, 302 00:15:59,640 --> 00:16:01,520 but there is awe and wonder the first time 303 00:16:01,520 --> 00:16:02,380 you get it to blink on a 304 00:16:02,380 --> 00:16:03,000 microcontroller. 305 00:16:03,839 --> 00:16:04,240 (laughing) 306 00:16:04,840 --> 00:16:04,960 I 307 00:16:04,960 --> 00:16:05,900 have the power. 308 00:16:08,260 --> 00:16:09,480 What's your last one for us? 309 00:16:10,500 --> 00:16:14,780 Okay, so you ever wondered about those grid key layouts 310 00:16:15,020 --> 00:16:16,760 on some synthesizers or MIDI controllers? 311 00:16:17,420 --> 00:16:19,980 The linear arrangement of a piano is conceptually simple, 312 00:16:20,120 --> 00:16:21,960 but it's actually kind of terrible for performance. 313 00:16:22,390 --> 00:16:23,620 If you played a guitar, 314 00:16:24,160 --> 00:16:25,260 especially for the lower four strings, 315 00:16:25,400 --> 00:16:27,280 you've experienced a 2D note layout 316 00:16:27,420 --> 00:16:29,340 that's more intuitive and easier for transposing. 317 00:16:29,990 --> 00:16:31,240 You figure out a chord shape, 318 00:16:31,400 --> 00:16:32,920 and that chord shape stays the same 319 00:16:32,920 --> 00:16:34,320 as you move it up or down the fretboard. 320 00:16:34,960 --> 00:16:36,040 For keyboard players, 321 00:16:36,340 --> 00:16:38,340 we've been seeing an explosion of 2D layouts 322 00:16:38,660 --> 00:16:41,640 for these 2D grid instruments like Monom, Launchpad, 323 00:16:41,640 --> 00:16:43,300 or my favorite, the SynthStrum Deluge. 324 00:16:43,780 --> 00:16:46,479 They have this more rational guitar-like layout 325 00:16:46,480 --> 00:16:48,520 where a specific arrangement of buttons 326 00:16:48,860 --> 00:16:50,780 can mean a major chord or a minor chord, 327 00:16:50,780 --> 00:16:52,360 and you can play that arrangement kind of anywhere, 328 00:16:52,560 --> 00:16:55,020 depending on where you kind of want the sound to be 329 00:16:55,100 --> 00:16:56,100 in terms of its pitch. 330 00:16:56,680 --> 00:16:59,220 And since they're still linear, like for each row, 331 00:16:59,600 --> 00:17:01,360 it makes sense when you're coming from a piano. 332 00:17:01,820 --> 00:17:03,120 But is there even better layout, 333 00:17:03,760 --> 00:17:05,640 better for performance that has some music theory 334 00:17:05,800 --> 00:17:07,860 baked in to make playing even easier? 335 00:17:08,180 --> 00:17:09,140 And the answer is yes. 336 00:17:09,640 --> 00:17:12,360 There is a layout called the harmonic table note layout. 337 00:17:13,020 --> 00:17:15,620 This layout has the keys in a hexagonal grid, 338 00:17:16,180 --> 00:17:17,880 but not linearly as grid instruments. 339 00:17:18,319 --> 00:17:21,540 Instead, these notes are spaced according to a tonnet, 340 00:17:21,939 --> 00:17:23,420 or tonnets in German, 341 00:17:23,860 --> 00:17:24,959 where notes are arranged 342 00:17:25,220 --> 00:17:26,939 how they relate harmonically to each other. 343 00:17:27,420 --> 00:17:31,400 This was originally devised by Leonard Euler in the 1700s. 344 00:17:32,420 --> 00:17:34,360 It's kind of cool that like there's something 345 00:17:34,840 --> 00:17:38,560 from so far in the past that can be modernly useful 346 00:17:38,720 --> 00:17:40,180 in terms of alternate instrument layout. 347 00:17:40,540 --> 00:17:41,320 So how do you use this? 348 00:17:41,700 --> 00:17:43,560 So imagine a hexagon grid. 349 00:17:44,140 --> 00:17:46,160 Pick any hexagon in that grid 350 00:17:46,160 --> 00:17:47,660 and that's your root note, like C. 351 00:17:48,300 --> 00:17:50,840 The hexagon right above is the perfect fifth 352 00:17:51,080 --> 00:17:52,440 above the root, so like G. 353 00:17:53,060 --> 00:17:56,340 And the hexagons to the left or right of your root 354 00:17:56,660 --> 00:17:58,920 is either the minor third or the major third. 355 00:17:59,820 --> 00:18:01,320 So it sounds a little bit confusing, 356 00:18:01,440 --> 00:18:02,720 but it's really easy to play a chord. 357 00:18:03,240 --> 00:18:06,320 Just play that C, your root note, the G right above it, 358 00:18:06,420 --> 00:18:08,980 and then pick if you wanna go the left or the right 359 00:18:09,040 --> 00:18:10,620 to play a major or minor chord. 360 00:18:11,280 --> 00:18:13,080 And because everything is grouped together, 361 00:18:13,660 --> 00:18:15,260 like all these hexagons are touching each other, 362 00:18:15,600 --> 00:18:17,580 you can actually play a whole chord with one finger 363 00:18:17,940 --> 00:18:19,260 by just going at the intersection 364 00:18:19,380 --> 00:18:20,960 of where those three hexagons meet. 365 00:18:21,210 --> 00:18:22,760 And BOMP, you can play a major chord, 366 00:18:22,820 --> 00:18:24,300 or BOMP, you can play a minor chord. 367 00:18:25,140 --> 00:18:25,980 It's a really wild layout. 368 00:18:26,380 --> 00:18:27,500 I've been wanting to build a MIDI controller 369 00:18:27,680 --> 00:18:29,380 around this idea for a while. 370 00:18:29,750 --> 00:18:31,340 I keep forgetting about it 'cause it's like, 371 00:18:31,900 --> 00:18:33,620 there's so many cool things to work on. 372 00:18:34,180 --> 00:18:35,860 But just recently I came across a post 373 00:18:36,200 --> 00:18:39,280 from the maker of the Teensy microcontrollers, PGRC, 374 00:18:39,780 --> 00:18:42,200 posted a really nice build of a harmonic MIDI controller 375 00:18:42,280 --> 00:18:43,540 using key switches. 376 00:18:44,240 --> 00:18:46,240 It's got some other tricks like velocity sensitivity 377 00:18:46,920 --> 00:18:48,860 for computer key switches that I want to look into as well. 378 00:18:49,260 --> 00:18:50,580 I think I might talk about that in a future episode. 379 00:18:51,660 --> 00:18:52,640 And if you're looking to play 380 00:18:52,720 --> 00:18:54,840 with this weird hexagonal layout right now, 381 00:18:55,260 --> 00:18:58,200 there's a web-based keyboard called Harmo app in the notes 382 00:18:58,340 --> 00:18:59,520 that you can kind of try it out. 383 00:19:00,000 --> 00:19:01,580 It's not as fun as like a real thing 384 00:19:01,680 --> 00:19:03,320 because you just have the single mouse pointer 385 00:19:03,440 --> 00:19:04,840 as opposed to like all 10 of your fingers, 386 00:19:05,440 --> 00:19:06,980 but it gives you the idea of kind of where the notes, 387 00:19:07,420 --> 00:19:09,000 like kind of how the notes relate to each other. 388 00:19:09,720 --> 00:19:12,900 And there was a physical MIDI controller called the Axis 389 00:19:12,900 --> 00:19:14,880 that you can find on eBay and Reverb. 390 00:19:15,340 --> 00:19:17,000 And it has like kind of all the features 391 00:19:17,120 --> 00:19:17,760 of this thing as well. 392 00:19:18,300 --> 00:19:19,240 And so I'm wondering, 393 00:19:19,610 --> 00:19:21,280 should I make a harmonic table controller 394 00:19:21,500 --> 00:19:22,720 using a Pico and CapTouch 395 00:19:22,840 --> 00:19:24,380 like my other little CapTouch mini controllers? 396 00:19:25,700 --> 00:19:26,060 (laughs) 397 00:19:26,620 --> 00:19:28,460 So maybe that might come in the future, I don't know. 398 00:19:28,780 --> 00:19:31,020 But it's like, it was so fun to watch some of the videos. 399 00:19:31,280 --> 00:19:33,000 I'll include some links in the show notes 400 00:19:33,420 --> 00:19:35,920 of websites that have some videos of people playing 401 00:19:36,000 --> 00:19:38,780 and you can play really smoothly and fastly 402 00:19:38,860 --> 00:19:39,600 on this new layout. 403 00:19:40,060 --> 00:19:42,880 Have you updated your Synthstrom deluge 404 00:19:42,880 --> 00:19:45,020 new layout? See, I'm not sure 405 00:19:45,020 --> 00:19:48,180 if you can map the hexagon grid to a 406 00:19:48,320 --> 00:19:52,360 rectangular grid because the Deluge has a rectangular grid and you can sort of 407 00:19:52,460 --> 00:19:57,000 say that the hexagonal grid is sort of a sheared version of a rectangular grid 408 00:19:57,600 --> 00:20:01,500 but I don't know I think it might be better just to have a separate box 409 00:20:01,700 --> 00:20:07,020 that is the hexagonal buttons feeding into the Deluge. Sure. All right Paul, so 410 00:20:07,060 --> 00:20:08,640 what's your third one for this time? 411 00:20:09,200 --> 00:20:12,860 Thanks to Mastodon user GeekandDad I 412 00:20:12,860 --> 00:20:17,520 is a board game for players 8 and up to build mechanical circuits to solve puzzles. 413 00:20:18,050 --> 00:20:19,660 I love the description on their webpage. 414 00:20:20,330 --> 00:20:22,820 Feel the pull of voltage and see the flow of current. 415 00:20:23,360 --> 00:20:28,500 Electronics is abstract, but Spintronics makes circuits tangible, irresistibly touchable, 416 00:20:28,680 --> 00:20:29,660 and deeply intuitive. 417 00:20:30,480 --> 00:20:32,960 There are three game components available for purchase. 418 00:20:33,320 --> 00:20:39,800 Act 1 is about $85 and introduces basic concepts including series and parallel, capacitor circuits, 419 00:20:39,920 --> 00:20:41,000 logic circuits, and more. 420 00:20:41,780 --> 00:20:46,920 Act 2 introduces the transistor and the inductor with intermediate and advanced concepts like 421 00:20:47,000 --> 00:20:49,940 amplification, power conversion, feedback, and oscillators. 422 00:20:50,840 --> 00:20:54,320 I briefly went through a board game phase with my kids, who unfortunately are grown 423 00:20:54,420 --> 00:20:56,840 and gone, but I would have totally bought this. 424 00:20:57,460 --> 00:21:00,000 You know, I probably still don't know half of these concepts myself. 425 00:21:00,960 --> 00:21:04,420 Now if you're into board games, you know that things aren't cheap and Spintronics is no 426 00:21:04,600 --> 00:21:04,920 exception. 427 00:21:05,540 --> 00:21:10,039 You can get a bundle of Act 1 and Act 2 for about $150 or add the power pack and get all 428 00:21:09,940 --> 00:21:13,100 three for about 180. If you visit their store, they also have 429 00:21:13,240 --> 00:21:15,620 replacement parts, including batteries, chains, resistors, 430 00:21:15,700 --> 00:21:19,300 and the list goes on. And the second company this year after 431 00:21:19,400 --> 00:21:22,640 micro critter that we featured in the podcast that's local to 432 00:21:22,660 --> 00:21:25,060 me, their headquartered in St. Paul, Minnesota. So that's kind 433 00:21:25,060 --> 00:21:25,400 of cool. 434 00:21:25,840 --> 00:21:26,420 Oh, neat. Yeah. 435 00:21:27,020 --> 00:21:29,560 Yeah, we're not really known as a maker hub. But you know, two 436 00:21:29,640 --> 00:21:31,120 things this year. So that's kind of kind 437 00:21:31,120 --> 00:21:31,360 of neat. 438 00:21:32,240 --> 00:21:34,440 Yeah, this this is really fascinating. It's like, when 439 00:21:34,480 --> 00:21:37,180 you're when you're taught, you know, like, I went to school for 440 00:21:37,140 --> 00:21:39,820 electronics, basically. And so there's a lot of these 441 00:21:40,200 --> 00:21:41,900 analogies you hear, like one of the most common is the 442 00:21:42,120 --> 00:21:44,200 water analogy, you know, like the amount of water is 443 00:21:44,220 --> 00:21:46,700 like the amount of current in a circuit, etc, etc. This 444 00:21:46,740 --> 00:21:49,640 is all mechanical, it's like gears and stuff. I think 445 00:21:49,640 --> 00:21:51,000 that's really fascinating that like, oh, if you want 446 00:21:51,000 --> 00:21:52,760 to, you know, if you want to show how a parallel 447 00:21:53,000 --> 00:21:55,720 circuit works, you have like a gear train with two 448 00:21:55,800 --> 00:21:59,180 sprockets and going off to driving one one thing or 449 00:21:59,220 --> 00:22:02,780 whatever. And there's like a resistor sprocket that 450 00:22:02,840 --> 00:22:04,860 has like, I think a spring in it or something that 451 00:22:04,860 --> 00:22:06,040 sort of resist turning. 452 00:22:06,140 --> 00:22:09,780 And so I find the mechanisms themselves fascinating. 453 00:22:09,920 --> 00:22:12,480 It's like, how are they translating these concepts? 454 00:22:12,700 --> 00:22:14,680 And like, what are these mechanisms doing? 455 00:22:14,720 --> 00:22:17,400 As someone who doesn't know mechanical engineering at all, 456 00:22:18,640 --> 00:22:20,420 it's like, well, I know electronics. 457 00:22:20,680 --> 00:22:23,380 And so I really want to see how these mechanisms work. 458 00:22:23,700 --> 00:22:26,040 And if, you know, cost might be prohibitive for some, 459 00:22:26,120 --> 00:22:27,620 but when you look at the parts that are included, 460 00:22:27,760 --> 00:22:28,720 like you're talking about, 461 00:22:29,520 --> 00:22:30,080 I can see 462 00:22:30,080 --> 00:22:31,560 how it easily adds up to that. 463 00:22:32,100 --> 00:22:33,580 Oh yeah, 'cause like each little thing, 464 00:22:33,580 --> 00:22:37,980 like, "Oh, here's a Spintronic capacitor and it's got like a little display and a spring 465 00:22:38,120 --> 00:22:40,320 and it's also a sprocket of some kind." 466 00:22:40,320 --> 00:22:44,400 Yeah, I mean, each one is a complicated little item in and of itself. 467 00:22:45,140 --> 00:22:45,820 It's fascinating. 468 00:22:47,560 --> 00:22:48,400 Well, that's our show. 469 00:22:48,680 --> 00:22:51,840 For detailed show notes and transcripts, visit thebootloader.net. 470 00:22:52,200 --> 00:22:53,960 And until next time, stay positive.