Comments (9)
I'm sure Firmata has strayed from the midi format over the years as no one has been enforcing it.
Regarding version report
, you don't need to support it since SysEx REPORT_FIRMWARE (0x79) command can be used instead. I think version report
only exists now for backwards compatibility (but I could be wrong). I wasn't involved with Firmata when the initial decisions were made.
from protocol.
I think 0x79
is firmware version vs 0xF9
firmata version. I'd love to propose a midi compliant SysEx response for the next protocol version.
from protocol.
This is tricky because Firmata Version (0xF9) may be used by some Firmata client libraries as the signal that the board is ready after a serial port connection has been made (this is what happens when a non-standard message has been in use for several years). I don't know off hand how many libraries this would effect and how many users there are relying on any of those implementations. Therefore 0xF9 may need to remain an exception to the System Realtime Message format.
If you feel like doing some research, take a look at a bunch of client firmata libraries and see if they are looking for a response 0xF9 on startup vs the REPORT_FIRMWARE
command of a SysEx message. Basically anyone using 0xF9 in an active Firmata client library will need to change to their implementation to use REPORT_FIRMWARE if this moves forward.
from protocol.
I'll take a look when I get back to firmata-pi
and midi-parser
work later in the week. I think we shouldn't change it for 2.3 but instead change the behavior or message format in later versions.
from protocol.
This ends up being a problem for web bluetooth.
from protocol.
@monteslu This would be a place to address the issues you encountered in WebMidi and where we could brainstorm some potential work arounds.
from protocol.
We might have to add a SYSEX method to REPORT_FIRMWARE. WebMidi doesn't seem like single byte commands: https://chromium.googlesource.com/experimental/chromium/blink/+/refs/wip/bajones/webvr/LayoutTests/webmidi/send-messages-expected.txt#12
from protocol.
@monteslu looking over that test output, it doesn't look like 0xF4
(set pin mode) and0xF5
(set digital pin value) will work either. It appears the WebMidi parser rejects any reserved system messages (0xF4, 0xF5, 0xF9, 0xFD) regardless of message length.
from protocol.
However I think the following would work if the correct number of data bytes is used:
0xF1 : 1 data byte
0xF2 : 2 data bytes
0xF3 : 1 data byte
0xF6 : 0 data bytes
I believe any of the following would work as a single byte as well:
0xF8
0xFA
0xFB
0xFC
0xFE
One possibility may be to use one of the above single byte sysex messages for the REPORT_VERSION query and use 0xF2 for the 2 data byte REPORT_VERSION reply.
from protocol.
Related Issues (20)
- Communication problem
- [question] Sysex ids HOT 6
- Incorrect value for "move complete command" in AccelStepper? HOT 3
- Extend documentation HOT 2
- Is it possible to control multiple stepper motors using pymata or any python libraries ? pls give some example HOT 16
- Potential New Firmata Logo HOT 2
- Q: AccelStepperFirmata - not completely clear from available docs HOT 1
- Changing the resolution of both Read and PWM Write to 12 for Due HOT 1
- Obsolete Client Libraries should be marked as such HOT 1
- [ANN] Alternative Firmata protocol explanation HOT 1
- Missing licenses
- no libraries available or listed for c and c++ HOT 5
- Report initial input pin value HOT 8
- Found 2 Windows Firmata client libraries HOT 2
- Is there a community where people discuss the protocol and it's use.
- High Resolution PWM control HOT 5
- Linux Kernel Drivers HOT 9
- Is this project active? HOT 3
- SYSTEM_VARIABLES Message proposal
- MIDI_DATA_FORMAT in Protocal.md link expired
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from protocol.