You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+64Lines changed: 64 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
8
+
## [0.4.0] - 2025-01-03
9
+
10
+
This release focuses on:
11
+
12
+
- Increased usability by simplifying the internal module structure.
13
+
- Interfacing with third-party crates like `midi-types`.
14
+
- Support for System Exclusive messages (SysEx).
15
+
16
+
**Important:**
17
+
18
+
- The `message` module containing the `Message` struct and related types is now gated behind the `message-types` feature. This feature is enabled by default.
19
+
- The constants `USB_AUDIO_CLASS`, `USB_AUDIOCONTROL_SUBCLASS` and `USB_MIDISTREAMING_SUBCLASS` are now private to prevent them from being used in the device setup. Doing so would lead to incorrect enumeration on certain hosts (e.g. macOS).
This example was developed and tested on an [ESP32-S3-DevKitC-1](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/index.html) using the [esp-hal crate](https://crates.io/crates/esp-hal).
4
+
5
+
It features:
6
+
7
+
- Sending and receiving of regular MIDI messages.
8
+
- Sending and receiving of MIDI System Exclusive messages with buffering.
9
+
- Conversion of USB MIDI packets from and to types provided by the [midi-types crate](https://crates.io/crates/midi-types).
10
+
11
+
It does not provide a fully production-ready setup, especially time-critical tasks like polling the USB bus in an interrupt and managing bus timeouts are out of scope of this example.
12
+
13
+
## Requirements
14
+
15
+
To build the example, an installed toolchain for the Xtensa target is required. Please refer to the [Rust on ESP book](https://docs.esp-rs.org/book/) for further instructions.
16
+
17
+
You can build the example by running:
18
+
19
+
cargo build --release
20
+
21
+
If [espflash](https://crates.io/crates/espflash) is installed, you can flash the example to the board and run it:
22
+
23
+
cargo run --release
24
+
25
+
## Functionality
26
+
27
+
- Incoming MIDI messages are logged to the console.
28
+
- Pressing and releasing the *BOOT* button on the board sends MIDI messages.
29
+
- A received *Device Inquiry* SysEx request is responded to the host.
30
+
31
+
Please note that all chosen vendor and product ids and names are just for demonstration purposes and should not be used with a real product.
0 commit comments