[Haskell-beginners] 2d layout description?

Mario Lang mlang at delysid.org
Mon Jun 12 12:48:56 UTC 2017


Hi.

I am looking for a good method to describe 2-dimensional panels of
various technical, mostly music-production related, devices.
Motivation: I am blind and am looking for a future-proof solution to
write down labels of jacks/knobs/switches on front/back panels of all
the devices I use on a daily basis.  Complex devices have
so many options that you tend to forget the not-so-often used ones,
hence, the need to have a reference "card" somewhere.  This need has
recently surfaced for me rather clearly as I have entered the realm of
eurorack modular synthesizers as a hobby.  One module is typicall 3U in
either and between 2HP and 50HP in vertical size.  And there are
literally hundreds of these available these days.  So while it becomes
surprisingly easy to remember the jacks/knobs of regularily used modules
after a rather short while, the need for some reference to go back to
is unavoidable.  Why is this on haskell-beginners?  I am a haskell fan,
and think this is a perfect job for a functional programming language.
What I *want* is some sort of data format/DSL that makes it easy
for me to describe the positions, functions and labels of physical
interface elements.  From that, I'd like to generate easily readable 2d
ascii-diagram alike descriptions which would be particularily well fit
to be read with a Braille display.  Also, knowing the position/function
of interface elements (jacks, knobs, switches) it would be neat if I
could implement convenience functions on top of the known data, like the
ability to calculate cable lengths for a particular patch, or even
figuring out a module layout to minimize patch cable lengths given a
list of possible patches.

While browsing hackage, I found asciidiagrams, which is
 * pretty cool!
 * and might be useful to specify the layout

However, I would have to fork and rewrite it to fit my actual needs, and
it isn't clear if specifying the machine readable description like that
wouldn't be a little bit too verbose.

As an example, I have written down the layout of
http://www.doepfer.de/A114.html (which admittably, is a rather simple
module):

+-------------+
|             |
| /-------\   |
| | A-114 |   |
| |RingMod|   |
| \-------/   |
|             |
| +--------+  |
| | /----\ |  |
| | | X  | |  |
| | |{i} | |  |
| | \----/ |  |
| | /----\ |  |
| | | Y  | |  |
| | |{i} | |  |
| | \----/ |  |
| | /----\ |  |
| | |X*Y | |  |
| | |{o} | |  |
| | \----/ |  |
| +========+  |
| | /----\ |  |
| | | X  | |  |
| | |{i} | |  |
| | \----/ |  |
| | /----\ |  |
| | | Y  | |  |
| | |{i} | |  |
| | \----/ |  |
| | /----\ |  |
| | |X*Y | |  |
| | |{o} | |  |
| | \----/ |  |
| +--------+  |
|             |
+-------------+

This looks cool, but once I add all the tags I probably need
(jack(in/out/in|out), rotary knob, n-way rotary, n-way switch, ...) this
will probably grow into something quite cumbersome.  A DSL might be
better there, and somehow recunstruct a simple ascii diagram from that?

In essence, I think I am trying to solve a rather general problem here,
even though my actual use-case is specific to eurorack modules.  Once I
have an easily useable DSL, I will likely want to describe everything I
own in this format, to be able to remember individual functions at a
later day.  And once I start to see this as a database (which is the
main reason for wanting to move it from text files to a programming
language) I can see the need to search for exact descriptions.  For
instance, I might find something with 7 RJ45 jacks in groups of 4 and 3,
and would like to find the description for it without knowing the
product name...  Or search for a label of a key, without knowing on
which remote it was... There are quite some possibilities here.

I am basically asking for everything that comes to your mind, if you
have read so far without having been bored to hell. Is there any library
on hackage that might help?  Do you know of similar projects with
different goals?  Anything else?

TL;DR: I am looking for a DSL to describe physical interfaces in a form
that makes it easy to make this information available to the blind in a
very accessible way.  Description files should be easy enough to
maintain, to maybe even start a trend of a central repository to avoid
people having to re-create them over and over again.  The metadata
should be detailed enough to allow for search/query operations on the
universe of described hardware.

-- 
CYa,
  ⡍⠁⠗⠊⠕ | Blog: <https://blind.guru/>  GitHub: <https://github.com/mlang/>
  .''`. | Twitter: @blindbird23        FaceBook: disyled
 : :' : | SoundCloud: <soundcloud.com/mario-lang>
 `. `'  | YouTube: <youtube.com/user/mlang23>
   `-


More information about the Beginners mailing list