Crustaceans Chirp Chirp Challenge
- https://pulham.info/cccc.html
- https://www.microchip.com/en-us/product/ATtiny85
- https://electro-smith.com/products/daisy-seed
- https://electro-smith.com/products/patch
- https://www.youtube.com/watch?v=RjEvBoyP6EQ
- https://bitmidi.com/never-gonna-give-you-up-3-mid
[08:28] <kline> i dont know what the standard target for "is this embedded system useful" is but id like to propose a midi synth: [08:28] <kline> * implement serial comms [08:28] <kline> * needs timers/interrupts [08:28] <kline> * includes PWM/etc peripherals for IO [08:29] <kline> * actually fails if you fuck up the hard realtime aspects [08:29] <kline> * you get a cool toy at the end [08:29] <kline> bonus: you can scale to things like polyphony
- https://en.wikipedia.org/wiki/MIDI_controller
- https://en.wikipedia.org/wiki/General_MIDI
- The Complete MIDI 1.0 Detailed Specification - Freq Sound (PDF)
- https://midi.org/specs
ChatGPT says...
MIDI software
User
what is the best MIDI software for Debian and KDE Plasma?
ChatGPT
Choosing the "best" MIDI software can depend heavily on what you're looking for in terms of features, ease of use, and compatibility with your hardware and other software. However, for Debian and KDE Plasma users, several options stand out for their robustness, community support, and integration capabilities. Here are a few options that are highly regarded within the Linux music production community:
- LMMS (Linux MultiMedia Studio): LMMS is a free, open-source digital audio workstation (DAW) that offers a variety of features for music production, including MIDI support. It's user-friendly and provides a wealth of synthesizers, samplers, and plugins. It's compatible with KDE Plasma as it uses Qt for its GUI framework.
- Ardour: Ardour is a professional-grade DAW that is highly respected in the audio production community. It offers comprehensive support for MIDI recording, editing, and playback. It's known for its flexibility and can be used for both audio and MIDI projects. Ardour runs well on KDE Plasma and integrates smoothly with Jack Audio Connection Kit for advanced audio routing.
- Qtractor: Qtractor is an audio/MIDI multi-track sequencer designed specifically for Linux. It's built using the Qt framework, making it a good fit for KDE Plasma. Qtractor supports a wide range of audio and MIDI file formats and plugins, making it a versatile choice for MIDI composition and editing.
- Rosegarden: Rosegarden is another excellent MIDI sequencer and score editor for Linux that is compatible with KDE Plasma. It offers a rich set of features for composing, editing, and arranging MIDI music with a focus on notation and score editing.
- Muse: Muse is a MIDI/Audio sequencer with recording and editing capabilities. It's designed to be a complete solution for music production on Linux and works well with KDE Plasma. Muse supports standard MIDI files, DSSI, LADSPA, LV2 plugins, and more.
Each of these software options has its strengths and might cater to different aspects of MIDI music production. LMMS and Ardour are perhaps the most comprehensive for those looking to do both MIDI and audio production, while Qtractor, Rosegarden, and Muse offer powerful MIDI sequencing and editing features that might be more appealing to those focusing on MIDI.
I recommend trying out a few of these options to see which one aligns best with your workflow and needs. All are available in the Debian repositories, making installation straightforward on a Debian-based system with KDE Plasma.
Programming
Programming hardware
The Arduino Uno (left) has been programmed as an ISP using File > Examples > 11.ArduinoISP.
The ATtiny85 (right) has been connected with pins as indicated.
The LEDs are as follows:
- Green: heartbeat
- Orange: programming
- Red: error
Test program
This program for the ATtiny85 should flash the LED:
int led_pin=13; void setup() { pinMode(led_pin,OUTPUT); } void loop() { digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); delay(2000); }
Programming ATtiny85
FQBN: attiny:avr:ATtinyX5:cpu=attiny85 Using board 'ATtinyX5' from platform in folder: C:\Users\jj5\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2 Using core 'arduino' from platform in folder: C:\Users\jj5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6 Detecting libraries used... C:\Users\jj5\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=1000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Users\jj5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\jj5\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2\variants\tiny8 C:\Users\jj5\AppData\Local\Temp\arduino\sketches\8F21679C5B4D8786582C9549E04AD4B0\sketch\sketch_jan3a.ino.cpp -o nul Generating function prototypes... C:\Users\jj5\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=1000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Users\jj5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\jj5\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2\variants\tiny8 C:\Users\jj5\AppData\Local\Temp\arduino\sketches\8F21679C5B4D8786582C9549E04AD4B0\sketch\sketch_jan3a.ino.cpp -o C:\Users\jj5\AppData\Local\Temp\1635130647\sketch_merged.cpp C:\Users\jj5\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\jj5\AppData\Local\Temp\1635130647\sketch_merged.cpp Compiling sketch... "C:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=attiny85 -DF_CPU=1000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0\\sketch\\sketch_jan3a.ino.cpp" -o "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0\\sketch\\sketch_jan3a.ino.cpp.o" Compiling libraries... Compiling core... Using precompiled core: C:\Users\jj5\AppData\Local\Temp\arduino\cores\attiny_avr_ATtinyX5_cpu_attiny85,clock_internal1_295a3a5649ea0dc187eecaa0844f84a9\core.a Linking everything together... "C:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=attiny85 -o "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.elf" "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0\\sketch\\sketch_jan3a.ino.cpp.o" "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/..\\..\\cores\\attiny_avr_ATtinyX5_cpu_attiny85,clock_internal1_295a3a5649ea0dc187eecaa0844f84a9\\core.a" "-LC:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0" -lm "C:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.elf" "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.eep" "C:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.elf" "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.hex" "C:\\Users\\jj5\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\jj5\\AppData\\Local\\Temp\\arduino\\sketches\\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.elf" Sketch uses 692 bytes (8%) of program storage space. Maximum is 8192 bytes. Global variables use 9 bytes (1%) of dynamic memory, leaving 503 bytes for local variables. Maximum is 512 bytes. "C:\Users\jj5\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\jj5\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -V -pattiny85 -carduino -PCOM5 -b19200 "-Uflash:w:C:\Users\jj5\AppData\Local\Temp\arduino\sketches\8F21679C5B4D8786582C9549E04AD4B0/sketch_jan3a.ino.hex:i" avrdude: Version 6.3-20190619 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Users\jj5\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" Using Port : COM5 Using Programmer : arduino Overriding Baud Rate : 19200 AVR Part : ATtiny85 Chip Erase delay : 400000 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 12 4 0 no 512 4 0 4000 4500 0xff 0xff flash 65 6 32 0 yes 8192 64 128 30000 30000 0xff 0xff signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 Programmer Type : Arduino Description : Arduino Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x000000 (retrying) Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x000000 (retrying) Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. avrdude done. Thank you. Failed programming: uploading error: exit status 1