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
Track midi2 v0.4.0. Public Device / Host / Bridge APIs stay
source-compatible where possible; sendFbInfo gains a uiHint
argument to match the new spec field.
Changes:
- Device::sendFbInfo gains uiHint between direction and firstGroup.
- FbInfoCb typedef gains uiHint between direction and firstGroup.
- Device::sendStreamConfigNotify auto-populates JR_TX_ENABLE from
the heartbeat state.
- Device::sendNoteOn / sendNoteOff carry the full 16-bit attribute_data.
- Device::sendTimeSignature gains optional num32ndNotes (default 8).
- Device::sendJRClock / sendJRTimestamp keep the leading group
argument; the value is ignored on the wire.
- Host::JrTimestampCb keeps (idx, group, ts); group is always 0.
Manifests bump to 0.4.0 and depend on midi2 >= 0.4.0.
@@ -26,13 +26,14 @@ midi2cpp is the layer where a sketch meets the protocol. Plug a board into the l
26
26
27
27
Underneath, [midi2](https://github.com/sauloverissimo/midi2) (the portable C99 core) handles parsing, dispatch, and reassembly. midi2cpp adds the C++ ergonomics: callbacks, board glue, ready-made USB descriptors. The board does the talking; the sketch tells it what to say.
28
28
29
+
Single declared dependency: midi2. Transport, clock, and RNG are caller-supplied; no submodules.
30
+
29
31
## Contents
30
32
31
33
-[midi2cpp](#midi2cpp)
32
34
-[MIDI 2.0 engine for embedded systems](#midi-20-engine-for-embedded-systems)
33
35
-[The library](#the-library)
34
36
-[Contents](#contents)
35
-
-[Dependencies](#dependencies)
36
37
-[Quickstart](#quickstart)
37
38
-[What you get](#what-you-get)
38
39
-[Three shapes](#three-shapes)
@@ -53,26 +54,6 @@ Underneath, [midi2](https://github.com/sauloverissimo/midi2) (the portable C99 c
53
54
-[Specifications and trademarks](#specifications-and-trademarks)
54
55
-[License](#license)
55
56
56
-
## Dependencies
57
-
58
-
midi2cpp draws a clear line between what the library declares and what stays the caller's job:
59
-
60
-
-**Exactly one declared dependency: [midi2](https://github.com/sauloverissimo/midi2).** The C99 core lives in its own repo, is versioned independently, and is resolved by whichever package manager fits the host build:
61
-
- Arduino Library Manager: `depends=midi2 (>=0.3.4)` in `library.properties`.
62
-
- PlatformIO Registry: `dependencies."sauloverissimo/midi2": "^0.3.4"` in `library.json`.
63
-
- ESP-IDF Component Manager: `idf_component.yml` declaration plus `midi2` in `REQUIRES`.
64
-
- CMake: `find_package(midi2 0.3.4 CONFIG)` first, falls back to `FetchContent_Declare(midi2 GIT_TAG v0.3.4)`.
65
-
-**No submodules.**`git clone` is the install. No `--recurse-submodules`, no half-initialised state.
66
-
-**No transport library pulled in.** TinyUSB, Teensy native USB, PIO-USB, libDaisy USBMidi: all caller-supplied. The library does not include `<Arduino.h>`, `pico/time.h`, `esp_timer.h`, or any USB header.
67
-
-**No clock or RNG dependency.** Caller injects `millis` / `time_us_64` / `esp_timer_get_time` and `random` / `get_rand_32` / `esp_random` through public hooks. Unset hooks degrade silently, no missing-symbol link errors.
Three commands. The first `cmake configure` pulls midi2 once via FetchContent (or picks it up from a system install via `find_package`); subsequent rebuilds and tests run offline. Anywhere C++17 + CMake reach: Linux, macOS, Windows, embedded cross-toolchains for ARM/RISC-V/Xtensa.
75
-
76
57
## Quickstart
77
58
78
59
`midi2cpp` is platform-agnostic: it parses, dispatches, and assembles UMP, and it leaves USB transport, clock, and entropy to the caller. The sketch wires four hooks to its platform's USB MIDI driver; the library does the rest.
@@ -213,14 +194,14 @@ Then install `midi2` via Library Manager (search `midi2`, click Install).
213
194
Published on the [PlatformIO Registry](https://registry.platformio.org/libraries/sauloverissimo/midi2cpp):
Either way, `midi2` is resolved transitively via the manifest declaration in `library.json`.
@@ -235,7 +216,7 @@ Published on the [ESP Component Registry](https://components.espressif.com/compo
235
216
# main/idf_component.yml
236
217
dependencies:
237
218
idf: ">=5.0"
238
-
sauloverissimo/midi2cpp: ">=0.3.1"
219
+
sauloverissimo/midi2cpp: ">=0.4.0"
239
220
```
240
221
241
222
`midi2` is pulled transitively through `midi2cpp`'s manifest. `idf.py reconfigure` drops both into `managed_components/`.
@@ -252,7 +233,7 @@ Then declare `midi2` in `main/idf_component.yml`:
252
233
```yaml
253
234
dependencies:
254
235
idf: ">=5.0"
255
-
sauloverissimo/midi2: ">=0.3.4"
236
+
sauloverissimo/midi2: ">=0.4.0"
256
237
```
257
238
258
239
`main/CMakeLists.txt`lists `midi2cpp` in its `idf_component_register(... REQUIRES midi2cpp ...)` block. The seven ESP-IDF recipes under [`examples/`](examples/) ship working templates for device, host and bridge roles.
`midi2cpp` cascades the dependency on `midi2` to the parent project: `find_package(midi2 0.3.4 CONFIG)`is tried first, falling back to `FetchContent_Declare(midi2 GIT_TAG v0.3.4)` if no install is found.
253
+
`midi2cpp` cascades the dependency on `midi2` to the parent project: `find_package(midi2 0.4.0 CONFIG)`is tried first, falling back to `FetchContent_Declare(midi2 GIT_TAG v0.4.0)` if no install is found.
Copy file name to clipboardExpand all lines: idf_component.yml
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
##
7
7
## # in your_app/main/idf_component.yml
8
8
## dependencies:
9
-
## sauloverissimo/midi2cpp: ">=0.3.1"
9
+
## sauloverissimo/midi2cpp: ">=0.4.0"
10
10
##
11
11
## The Component Manager clones midi2cpp into managed_components/,
12
12
## ESP-IDF picks it up as a component because the top-level CMakeLists
@@ -15,7 +15,7 @@
15
15
## is declared in the dependencies block below.
16
16
17
17
description: "C++17 callback-first wrapper for MIDI 2.0 on embedded devices, layered over the portable midi2 C99 library. Covers UMP transport (M2-104), MIDI-CI with Appendix E (M2-101), Property Exchange Subscribe/Notify, Profile Configuration, Process Inquiry, Flex Data, and Bit Scaling (M2-115)."
Copy file name to clipboardExpand all lines: library.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "midi2cpp",
3
-
"version": "0.3.1",
3
+
"version": "0.4.0",
4
4
"description": "C++17 Arduino-style wrapper for MIDI 2.0 on embedded devices. Thin wrapper over the portable midi2 C99 library. Covers UMP, MIDI-CI with Appendix E, Profile, PE Subscribe/Notify, Process Inquiry, Flex Data, and Bit Scaling. Targets RP2040, RP2350, Teensy, ESP32 family, nRF52, and SAMD21.",
0 commit comments