Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
(defun o () (interactive) (find-angg "ORG/2024-bash-test-blocks.org"))
(defun o () (interactive) (find-fline "~/ORG/2024-piano-roll-macros.org"))
(defun e () (interactive) (find-angg "elisp/2024-piano-roll-macros.el"))
(defun p () (interactive) (find-fline "/tmp/pianola.jpg"))
;; (find-youtubedl-links "/tmp/" "Pianola_playing_The_Entertainer" "07krQ661fok" ".webm" "pianola")
;; (code-video "pianolavideo" "/tmp/Pianola_playing_The_Entertainer-07krQ661fok.webm")
;; (find-pianolavideo "1:26")
;; (find-angg "ORG/2024-trying-eev-with-a-sexp.org")
;; (find-angg "elisp/emacsconf2024.el")
;; (find-angg "elisp/2024-piano-roll-macros.el")
;; (find-TH "2024-bash-test-blocks")
;; (font "Noto Mono 19" :p)
;; (font "Noto Mono 15" :p)
;; (find-2a nil '(p))
;; (font "Noto Mono 14" :p)





Piano roll macros
=================
  Eduardo Ochs
  2024dec31


  Introduction:
            (eek  "RET RET Hello")
            (eek2 "RET RET Hello")
  (eeks 1.25 0.25 "RET RET Hello")


  More info:
  http://anggtwu.net/#eev
  http://anggtwu.net/2024-piano-roll-macros.html
  (find-eev-quick-intro "2. Evaluating Lisp")
  (find-eev-quick-intro "3. Elisp hyperlinks")
  (find-eev-quick-intro "series of keys" "eek")


















;; (font "Noto Mono 19" :p)



1. How `eek' and `eek2' work
============================
   (find-efunction 'eek)

   (eek  "RET Hello")
   (eek2 "RET Hello")
(ee-eek2 "RET Hello")
(eek2 '((t . ?\r) (t . ?H) (t .  ?e) (t .  ?l) (t .  ?l) (t .  ?o)))
(eek2 '((t . 13)  (t . 72) (t . 101) (t . 108) (t . 108) (t . 111)))

(progn
 (eek2 '((t . 13)))
 (eek2 '((t . 72)))
 (eek2 '((t . 101)))
 (eek2 '((t . 108)))
 (eek2 '((t . 108)))
 (eek2 '((t . 111))))




;; (font "Noto Mono 18" :p)


2. Spacing the events with timers
=================================

  (progn
   (eek2 '((t . 13)))
   (eek2 '((t . 72)))
   (eek2 '((t . 101)))
   (eek2 '((t . 108)))
   (eek2 '((t . 108)))
   (eek2 '((t . 111))))

  (progn
   (run-at-time 0.25 nil 'eval '(eek2 '((t . 13))))
   (run-at-time 0.75 nil 'eval '(eek2 '((t . 72))))
   (run-at-time 1.25 nil 'eval '(eek2 '((t . 101))))
   (run-at-time 1.75 nil 'eval '(eek2 '((t . 108))))
   (run-at-time 2.25 nil 'eval '(eek2 '((t . 108))))
   (run-at-time 2.75 nil 'eval '(eek2 '((t . 111)))))

  (eeks 0.25 0.5 "RET Hello")








;; (font "Noto Mono 18" :p)




3. How the `run-at-time's are created
=====================================

  (eeks 0.25 0.5 "RET Hello")

  (progn
   (run-at-time 0.25 nil 'eval '(eek2 '((t . 13))))
   (run-at-time 0.75 nil 'eval '(eek2 '((t . 72))))
   (run-at-time 1.25 nil 'eval '(eek2 '((t . 101))))
   (run-at-time 1.75 nil 'eval '(eek2 '((t . 108))))
   (run-at-time 2.25 nil 'eval '(eek2 '((t . 108))))
   (run-at-time 2.75 nil 'eval '(eek2 '((t . 111)))))

  http://anggtwu.net/2024-eev-for-5-year-olds.html#taking-apart

  (font "Noto Mono 13")
  (find-angg "elisp/2024-piano-roll-macros.el")
  (find-angg "elisp/2024-piano-roll-macros.el" "macro")








;; (font "Noto Mono 18" :p)






4. Do try this at home
======================

  http://anggtwu.net/2024-piano-roll-macros.html
  (find-wget-elisp "http://anggtwu.net/elisp/2024-piano-roll-macros.el")

  Thanks!
    a) for your attention
    b) to Bruno Macedo -
       many things in this video
       were inspired by our conversations