View Single Post
Old 05-15-2023, 09:37 AM   #22
jhowell
Grand Sorcerer
jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.jhowell ought to be getting tired of karma fortunes by now.
 
jhowell's Avatar
 
Posts: 7,118
Karma: 92500001
Join Date: Nov 2011
Location: Charlottesville, VA
Device: Kindles
Quote:
Originally Posted by tomsem View Post
I think it would be worth the effort to 'decode everything'. I assume to do this we need an example with all of the current entity types (brush, pen, highlight etc.). I'll try to do this.
More notebook examples would help. Having examples of simple drawings, such as a single dot or straight line, would be useful in decoding how drawing data is stored. Seeing the .notebook files associated with annotated documents would also help fill in the gaps.

Quote:
Originally Posted by tomsem View Post
Once that's in place, I think it would be quite useful to be able to export to some standard vector format so that one could continue editing with some 3rd party tools.
I am surprised by what we have found so far. I expected the Scribe to store something like SVG (scalable vector graphics). Instead it is keeping lower level data, like pen tilt and pressure, as binary data.

Spoiler:
Code:
      'nmdl.stroke_bounds': [3123, 4448, 3447, 4707],
      'nmdl.color': 0,
      'nmdl.brush_type': 7,
      'nmdl.random_seed': 0,
      'nmdl.thickness': 23.625,
      'nmdl.type': 'nmdl.stroke',
      'nmdl.stroke_points': {
        'nmdl.thickness_adjust_factor': {{
          AQFMAQAAFERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGQ=
        }},
        'nmdl.density_adjust_factor': {{
          AQFMAQAAFERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGQ=
        }},
        'nmdl.num_points': 332,
        'nmdl.position_x': {{
          AQFMAQAAHV1ubdRERETW1NVERE1dRdReVE1URNXVTVRU1EXV1EREREREREVNXUVNXURdRURF3V1URERd
          1UXVREXUbURERNVEVNREVNRdVE1URE1URNVNVERNXV1FRdRdRU1dVERUTV1ERF1FRE5dVNRF1F1ETVRN
          VERF1ERdRERdXV1NRF1NXV3VTV1NXVRN1U1U1dVF1ERdXV1FRNVETVTU1URF1UVF1UVF1rQ=
        }},
        'nmdl.position_y': {{
          AQFMAQAAFF1ERU1ERERF1NbURF1ERURERE1V1EXV1ERF5V5URNVF1dXURF1ERF1ERdRF5URERERETVRE
          RERERURF1URERE1E1V1dRNVEXUREXURdXdRdRU1F1ERETW1E1dXV1E1dVE1eVEREXUXV5URdRERERdRE
          1dREXURETV1URE1dVERERF1dRNRd1dVETV1ERF1G1FXVREREXVREXW5U1URE1d1F3V5e3RI=
        }},
        'nmdl.pressure': {{
          AQFMAQAAFV1NcZGU3heUSfGRlJ7vYZTZHmkdVJ9FcWdUT01PV5bpGe9E0fVO1HUZGWTX4e5pHfleZpTd
          3V9JcZdeHVXU1fTUbW1OfWfk15Xk1k1k3lQdTX5dTUREQZTZFGQZVPfk5U1uVuRGQZfZHlcZafHm5W8f
          Zd51VOftTd15VZFlVn0UdEkd7f/V9E517fXdVUfU3Wkd1pbxnVnflGndkfT+mZmRkRERGR13PQofJCgE
          FR4cFgUEBAQEBAQEBAUEBAQEBQUEBAUFBAQEBQQFBQQEBAQGBQgGBQYGBQQJBAcFBAUEBAQEBAQEBgQI
          BAUGBQQFPpcXZwYGCwUvLCAH
        }},
        'nmdl.tilt_x': {{
          AQFMAQAAJEREQZRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERERERERERERERERERERBlEREREREREREREREREREREREgNZGRkZA==
        }},
        'nmdl.tilt_y': {{
          AQFMAQAAJBlEQZRERERERBlERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          REREkURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
          RERERERERERERERERERERERERERESRRERERERERERERERBlERERERERERERERERERERERGwHZGTIyGRk
          ZGTIyMjI
        }},
      },


I have never worked on software for digitizing drawings so I am unfamiliar with the data structures and APIs typically used in that field. Perhaps someone familiar with drawing devices could suggest a documented data format that would be suitable for exporting Scribe drawings.

I do know that some work has been done to reverse engineer the internal data formats used by reMarkable tablets. That might be worth looking into.

Quote:
Originally Posted by tomsem View Post
I assume the "DL" in "NMDL" expands to 'Description Language'. Is this some standard DL? Even if it is not, these could probably be mapped to one that is.
I could not find anything relevant online about "NMDL". I am assuming that it is an acronym made up by Amazon. The phrase "note model" appears often in the Scribe firmware. That might be the source of "NM".

Last edited by jhowell; 05-15-2023 at 09:48 AM.
jhowell is online now   Reply With Quote