Due to the fact that GitHub is hosting the files on privately owned servers located in the USA, this repository has been moved to Codeberg in November of 2025. It will not receive further updates or patches. Issues and pull requests will not be looked at here either, please submit your patches and issue tickets on Codeberg, or send them directly via good old email patches to the author.
Thanks.
cl-mobmuplat is a simple api to simplify the creation of json files for the MobMuPlat platform using common lisp.
Dependencies:
Installation:
If quicklisp is installed, put the folder into ~/quicklisp/local-projects or alternatively put it in a location where asdf looks for .asd files.
Then use (ql:quickload "cl-mobmuplat") or (require 'cl-mobmuplat)
example:
(require 'cl-mobmuplat)
(in-package :cl-mobmuplat)
;;; create the lisp structure of a gui with one slider and one button:
(make-mmp
:pd-file "mmp-test.pd"
:canvas-type "tallTablet"
:gui (list
(make-slider :frame '(80 0 240 50))
(make-button :frame '(80 60 50 50))))
;;; convert to a json-string:
(encode-json-to-string
(make-mmp
:pd-file "mmp-test.pd"
:canvas-type "widePhone"
:gui (list
(make-slider :frame '(80 0 240 50))
(make-button :frame '(80 60 50 50)))))
;;; Write a gui with one slider and 8 buttons to file: Note the
;;; boolean predicate for the :is-orientation-landscape
(with-open-file (out "/tmp/mmp-test.mmp" :direction :output :if-exists :supersede)
(encode-json
(make-mmp
:pd-file "mmp-test.pd"
:canvas-type "tallPhone"
:is-orientation-landscape nil
:gui (append
(list
(make-slider :frame '(80 0 240 50)))
(loop for count below 8 collect
(make-button
:frame `(80 ,(+ 60 (* 60 count)) 50 50)
:address (format nil "myButton~2,'0d" count)))))
out))Check the widgets.lisp file for all possible keywords for the make-mmp and gui widget functions.
A multipage object is the same as a single page object with a larger screen size. Use the appropriate x-offsets to draw gui objects on the relevant pages.
The code is (c) Orm Finnendahl, released under the GPL, version 2 or later, without any warranties. Use at your own risk.