#lang racket/base (require "bcr2000.rkt" racket/match) ;; Set all knobs to the same config: (define (all-nrpn dev max-str) (define max (string->number max-str)) (bcr2000-open dev) (bcr2000-for/knobs (lambda (row col enc) (let ((chan 1) (id enc) (dflt 0)) `((.easypar NRPN ,chan ,id 0 ,max absolute/14) (.showvalue on) ;; show value on lcd (.mode 1dot) (.resolution 96 192 768 2000) (.default ,dflt)))))) (define (all-relative-1 dev) (bcr2000-open dev) (bcr2000-for/knobs (lambda (row col enc) (let ((chan 1) (cc enc)) `((.easypar CC ,chan ,cc 0 127 relative-1) (.showvalue off) ;; show value on lcd (.mode off) (.resolution 96 192 768 2000) ;; .resolution 96 768 1536 3072 (.default 0)))))) (define (main . args) (match args ((list "midi2bcl" in out) (midi->bcl (open-input-file in) (open-output-file out))) ((list "all-nrpn" device max) (all-nrpn device max)) ((list "all-relative-1" device) (all-relative-1 device)) (else (error (format "~s" args))))) (apply main (vector->list (current-command-line-arguments)))