
Show HN: minimidi.world – A Simplified Guide to TRS MIDI - audionerd
http://minimidi.world
======
audionerd
Many MIDI instruments, effects, and modules released recently transmit MIDI
over TRS or TS minijack cables. But, the specs they use vary, and are not
always documented.

The more I tried to learn about TRS MIDI, the more confused I got, so I
started taking notes with the intent to explain it to others as a reference
guide.

I organized what data I could find online about these devices from sources
like
[https://www.muffwiggler.com/forum/viewtopic.php?p=3168946](https://www.muffwiggler.com/forum/viewtopic.php?p=3168946),
along with my own research, and put together this web UI
([https://minimidi.world](https://minimidi.world)) to search it.

I‘m also publishing the data under a public domain license:
[https://github.com/audionerd/minimidi-
data](https://github.com/audionerd/minimidi-data)

I’m trying to be thoughtful about respecting users time and privacy with my
choices for this microsite, so I'm trying a few experiments:

\- one sponsor per month with a single, non-obnoxious banner

\- unobtrusive affiliate advertising with simple, helpful links

\- no tracking cookies (no google analytics)

\- data is open for others to use and improve

~~~
zzo38computer
These ideas about your choices for this microsite, is good, I think.

However, why don't you use the square brackets syntax with the RDF data? The
result will be the same, and the file will be a bit cleaner, I think.

~~~
audionerd
> the square brackets syntax with the RDF data

Can you give an example?

I picked the current Turtle syntax because it seemed like the least line
noise, and hopefully easy for contributors to understand. I would like to
learn more about RDF. I don’t know if it was the right choice for this project
to be honest though, I might end up switching to JSON.

~~~
zzo38computer
As an example, the "alm-mmmidi" record can be written as:

    
    
      [
        device:make "ALM/Busy Circuits";
        device:model "mmMidi";
        device:inputs 1;
        device:typeB true;
        device:uri "https://busycircuits.com/alm023";
        device:eurorack true;
      ].
    

The names with _: are local to the file in which they appear. These names are
not exported, so cannot be referred to by name externally, although the data
is still exported (so, for example, if you ask for all nodes with a
<[http://example.org/vocab/device/make>](http://example.org/vocab/device/make>)
property, you will still retrieve them). So, the result will be the same. (The
name "device:" is also local to the file, but it is a local alias of the
exported name
<[http://example.org/vocab/device/>](http://example.org/vocab/device/>), so
other files can refer to it by the full name, or by defining its own (possibly
the same) alias for it.)

I recommend not using the example.org namespace, but instead using your own.
You could use the minimidi.world domain name, or, if you prefer, use a UUID
(in lowercase, with "urn:uuid:" before, and "#" after).

However, for the kind of data you have, it does seem like JSON or TSV would
probably do better, since it does not need the features of RDF (and the SQLite
command-line shell supports both JSON and TSV (and with extensions, also RDF,
but JSON and TSV are built-in)). The stuff I wrote above may still be useful
if you find RDF useful for something else, though.

