Mockband + big builder
Homepage / publish (push) Successful in 20s
Details
Homepage / publish (push) Successful in 20s
Details
This commit is contained in:
parent
b20f107828
commit
329fc717c3
|
@ -3,6 +3,7 @@ title: Big Builder
|
||||||
date: 2023-10-27
|
date: 2023-10-27
|
||||||
tags:
|
tags:
|
||||||
- computers
|
- computers
|
||||||
|
- ci/cd
|
||||||
---
|
---
|
||||||
|
|
||||||
I finally set up CI/CD with Forgejo/Gitea.
|
I finally set up CI/CD with Forgejo/Gitea.
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
---
|
||||||
|
title: "Arduino, Big Builder, and Make"
|
||||||
|
date: 2024-01-05
|
||||||
|
tags:
|
||||||
|
- computers
|
||||||
|
- ci/cd
|
||||||
|
---
|
||||||
|
|
||||||
|
Last night,
|
||||||
|
I got Big Builder building Arduino sketches.
|
||||||
|
|
||||||
|
Big Builder is my Continuous Integration / Continuious Development (ci/cd)
|
||||||
|
solution for forgejo/gitea.
|
||||||
|
It's nothing revolutionary,
|
||||||
|
it's just a container with a bunch of pre-installed software,
|
||||||
|
and the gitea `act_runner` with a configuration to *not* try and use docker.
|
||||||
|
This means my builds are pretty quick,
|
||||||
|
and my network use is very low,
|
||||||
|
since I already have the tools I need to build stuff,
|
||||||
|
and don't have to download mulitple OS images every time I do a build.
|
||||||
|
|
||||||
|
## Automating embedded systems builds
|
||||||
|
|
||||||
|
Arduino, it turns out,
|
||||||
|
has been including command-line build tools for a long time now.
|
||||||
|
Since I'm using Debian's Arduino package,
|
||||||
|
I get the older, poorly-documented `arduino-builder`.
|
||||||
|
But the newer `arduino-cli` has better documentation,
|
||||||
|
that helped me understand how to use the older command.
|
||||||
|
|
||||||
|
Using `arduino-builder` lets me keep the source code structured
|
||||||
|
in a way that makes sense to amateur developers:
|
||||||
|
they can just load it up in the IDE and not worry about my automation.
|
||||||
|
But it also lets me automate builds on my forgejo server,
|
||||||
|
and use the command-line to build everything,
|
||||||
|
the way I've been doing since the 80s.
|
||||||
|
|
||||||
|
Here's what I wound up with,
|
||||||
|
to build a Leonardo image:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p build/cache
|
||||||
|
arduino-builder \
|
||||||
|
-build-path $(pwd)/build/ \
|
||||||
|
-build-cache $(pwd)/build/cache/ \
|
||||||
|
-fqbn arduino:avr:leonardo \
|
||||||
|
-hardware /usr/share/arduino/hardware/ \
|
||||||
|
-tools /usr/share/arduino/tools/ \
|
||||||
|
-compile MockBand.ino
|
||||||
|
```
|
||||||
|
|
||||||
|
This results in `build/MockBand.ino.hex`,
|
||||||
|
which can then be given to `avrdude` to flash my board.
|
||||||
|
Easy!
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
For the mockband project,
|
||||||
|
I also needed to specify a custom USB VID/PID and a CPP definition.
|
||||||
|
After reading a lot of forums posts and code,
|
||||||
|
I discovered I could easily do this with `arduino-builder`,
|
||||||
|
with the `-prefs=` flag.
|
||||||
|
This allows you to override settings in `boards.txt`,
|
||||||
|
which is apparently what Arduino uses to build a gcc flags list.
|
||||||
|
|
||||||
|
Here's a trimmed-down version of what I implemented:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p build/cache
|
||||||
|
arduino-builder \
|
||||||
|
-build-path $(pwd)/build/ \
|
||||||
|
-build-cache $(pwd)/build/cache/ \
|
||||||
|
-fqbn arduino:avr:leonardo \
|
||||||
|
-hardware /usr/share/arduino/hardware/ \
|
||||||
|
-tools /usr/share/arduino/tools/ \
|
||||||
|
-prefs="build.extra_flags=-DUSB_VID=0x1bad -DUSB_PID=0x0004 -DCDC_DISABLED" \
|
||||||
|
-compile MockBand.ino
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
My final step was to write a `Makefile` to do all this.
|
||||||
|
Since the build step is just one (long) command,
|
||||||
|
and the `-prefs` could easily use per-target variables,
|
||||||
|
`make` was an obvious tool.
|
||||||
|
Adding a target to run `avrdude` was simple enough, too.
|
||||||
|
|
||||||
|
I no longer need the Arduino IDE at all,
|
||||||
|
but the project still works with it!
|
||||||
|
|
||||||
|
The result was a
|
||||||
|
[Makefile](https://git.woozle.org/neale/mockband/src/commit/63bd0672500631b8c47f24f041693e642ab32533/Makefile)
|
||||||
|
which can compile, flash, and package
|
||||||
|
all three variants of the build.
|
||||||
|
It's 43 lines long,
|
||||||
|
including blank lines.
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
---
|
||||||
|
title: The State of Homebuilt Rock Band Drums
|
||||||
|
date: 2024-01-15
|
||||||
|
tags:
|
||||||
|
- rockband
|
||||||
|
---
|
||||||
|
|
||||||
|
There are currently at least four efforts to get a working Rock Band drum kit:
|
||||||
|
|
||||||
|
## Mad Catz (mature)
|
||||||
|
|
||||||
|
Based on the vendor ID sent by the USB devices,
|
||||||
|
I think Mad Catz is the company that made most of the
|
||||||
|
officially licensed Rock Band instruments.
|
||||||
|
They're still selling something that takes MIDI input,
|
||||||
|
and outputs signals to look like a Rock Band 2 drum kit.
|
||||||
|
|
||||||
|
The converter plus a decent entry-level kit will cost about $500,
|
||||||
|
and probably provides a very nice feel.
|
||||||
|
You can also use the drums by themselves or as a MIDI controller.
|
||||||
|
|
||||||
|
|
||||||
|
## Mockband Drums (stable)
|
||||||
|
|
||||||
|
![mockband drums and guitars](mockband.jpg)
|
||||||
|
|
||||||
|
Using a $33 drum toy from Amazon ($25 on sale),
|
||||||
|
you can build a tabletop drum kit.
|
||||||
|
I've been playing on it for the last month
|
||||||
|
and the experience is comparable to the Rock Band 1 kit I had 10 years ago.
|
||||||
|
It's okay, but not fantastic.
|
||||||
|
|
||||||
|
This requires some soldering,
|
||||||
|
but all the development is done.
|
||||||
|
If you're crafty,
|
||||||
|
you can probably have this working in an afternoon.
|
||||||
|
|
||||||
|
https://git.woozle.org/neale/mockband
|
||||||
|
|
||||||
|
|
||||||
|
## Polybar Drum Kit (in development)
|
||||||
|
|
||||||
|
Some of the polybar people are working on a from-scratch 3d printed drum kit.
|
||||||
|
So far it seems they're trying to use piezos to read drum hits,
|
||||||
|
which could mean it will send some kind of velocity information.
|
||||||
|
Although probably not super accurate,
|
||||||
|
and I haven't yet seen a game that uses it,
|
||||||
|
this would be closer to the official Rock Band drum kit.
|
||||||
|
When it's closer to finished,
|
||||||
|
it will probably use the santroller firmware
|
||||||
|
(see below).
|
||||||
|
|
||||||
|
As far as I know,
|
||||||
|
all development on this is happening on Discord,
|
||||||
|
so there's no URL to add here.
|
||||||
|
|
||||||
|
|
||||||
|
## Santroller (stable?)
|
||||||
|
|
||||||
|
Sanjay9000,
|
||||||
|
the person who was made a very nice packaged version of a Rock Band guitar controller firmware,
|
||||||
|
has released a new firmware that claims to support drums as well.
|
||||||
|
This is made to replace the firmware in an official Rock Band drum kit,
|
||||||
|
but will probably be what the Polybar effort uses,
|
||||||
|
because so much effort has been put into making the firmware easy to set up.
|
||||||
|
|
||||||
|
https://santroller.tangentmc.net/
|
Binary file not shown.
After Width: | Height: | Size: 1.8 MiB |
Loading…
Reference in New Issue