JV | 22 Nov 20:40 2014

regds : s7 scheme -> embedding scheme

How do you embed a 'large' scheme program  with s7 .
Do you run any macros before you compile the c code to do the escapes for the scheme text? (see below)
I will appreciate if i can get access to those macros.

int main(int argc, char **argv)
  char *scheme_program = "(define (hello src)"
                            "(display src))"
                  "(hello \"joe\n\")";
  s7_scheme *s7;
  s7 = s7_init();
  s7_eval_c_string(s7, scheme_program);
Cmdist mailing list
Henrik Frisk | 15 Nov 13:09 2014

Plot paths with gnuplot


Learning to use dlocsig the possibility to plot paths in gnuplot seams like a useful feature. However, I can't quite figure out how to go about it. From reading the documentation (dlocsig) I understand that I use a list of functions, but I'm not sure how. I'm mainly using snd.

Cmdist mailing list
Henrik Frisk | 11 Nov 13:35 2014



I've successfully loaded snd from emacs but now I can't seem to get it to work. I'm using snd from planet ccrma (64) and emacs 24.3.1. Trying to run M-x run-snd-scheme yields:

Symbol's value as variable is void: $!

Same for run-snd-ruby.

Any help appreciated!
Cmdist mailing list
Matti Koskinen | 10 Nov 16:56 2014

loading .so file in Grace

hi all,

How to load a dynamic .so file? I compiled S7 with HAVE_C_LOADER, but 
loading with load gives undefined symbol some hex-numbers and ELF, if I 
try giving (environment (cons 'init_func 'init_ex)), load gives wrong 
number of arguments in FFI_LOAD.

Running just S7, load works giving  (load "xx.so" (envir....

I'm trying now on Linux, but should be the same on OSX.


Bill Schottstaedt | 4 Nov 21:31 2014

Snd 15.1

Snd 15.1.

Juan Reyes donated his Leslie instrument, rotates, in leslie.cms
  and leslie.ins (in clm).

s7 now has a s7webserver directory containing Kjetil Matheussen's
  s7 web repl.

Mike Scholz updated the Forth and Ruby scripts.

checked: sbcl 1.2.4|5, gtk 3.14.0|1|2|3|4, 3.15.0|1

Thanks!: Kjetil Matheussen, Juan Reyes, Mike Scholz.
Johannes Quint | 1 Nov 11:17 2014


hello rick, hello david,

we have again some problems with grace/fomus: a student of mine tells that fomus doesn't work on windows 7. or maybe can't communicate with grace. 


(with-fomus ("test.ly") 
    (fms:note :pitch 60 :time 0 :dur 4))

there is no "test.ly" file and after

(sprout (process repeat 1 do (fms:note :pitch 60 :dur 4 :time 0)) "test.ly")

he gets:

>>> Error: don't know how to open "test.ly"
open-file: (error "don't know how to open ~S" ... ; str: "test.ly"
open-file: ((ffi_sched_set_score_mode mode) mode) ; mode: 0
sprout: ((if *sprout-hook* (*sprout-hook* file... ; file: "test.ly", start: 0
                                                   ; id: 0
                                                   ; startBeat: 0

do you have any help for us?

thanks a lot, johannes


Johannes Quint
Cmdist mailing list
Per Bloland | 19 Oct 01:09 2014

2015 ASCAP/SEAMUS Student Commission Competition

(apologies for cross-postings)

The Society for Electro-Acoustic Music in the United States (SEAMUS) is pleased to announce the 2015 ASCAP/SEAMUS Student Composer Commissioning Program.

The purpose of this program is to stimulate student participation in SEAMUS activities, and to encourage young composers to pursue creative endeavors in electro-acoustic music. The program is administered by SEAMUS and funded by the American Society of Composers, Authors and Publishers (ASCAP) <http://www.ascap.com>.

The submission deadline is October 31, 2014.

For more information, please visit the ASCAP/SEAMUS Competition information page <http://www.seamusonline.org/ascapseamus/>.
To submit via the online application, please visit the current submission site.

Please note that you must be a current member of SEAMUS to submit to the competition. You can join or renew your membership at the newly redesigned SEAMUS website, http://www.seamusonline.org/. Joining takes only a few minutes. You must supply your seamusonline username to complete your submission. (Your seamusonline username is independent of your Start Conference, submission username.)

If you submitted to the 2014 SEAMUS Conference at Wesleyan, your Start Conference submission username and password are still valid.


 All submissions are to be made online, through the submission site. Only one work of electroacoustic music may be submitted, which must adhere to the following guidelines:

• Audio Files: music submissions should include a representative audio recording of the work. If a concert work, it must be the complete composition. Installations may be represented by an excerpted recording not to exceed 10 minutes in length. Judging of music submissions for ASCAP/SEAMUS Student Competition will be from audio files in the MP3 format. Multichannel works will be judged from a stereo mix, also MP3. Please assist us by submitting in MP3 format. Audio files must be prepared as a single LastnameFirstname_audio.MP3. 
• Scores: for submissions involving a score, please submit an anonymized PDF score for review. Please do not mail in printed scores. Score submissions must be prepared as LastnameFirstname_score.PDF.
• Video Submissions: note that for works involving video, only the audio portion will be considered for judging purposes. You must be the composer of the music for the video. Please submit an MP3 of the music as specified above.
• Only one (1) entry per student. 

Other than the filename, please make sure to remove your name from all files, including MP3 metadata and PDF scores. Please limit the total size of all files to 40MB.

This same work may be submitted to the SEAMUS 2014 National Conference via the conference submission page. All finalists in the ASCAP/SEAMUS Student Commission Competition must attend the SEAMUS 2014 National Conference. Submissions by High School and Undergraduate students will automatically be considered for the Allen Strange Memorial Award as well.


A maximum of two prizes may be awarded. The decision of the judges will be final.

First Prize

• Commission of $1250 for a new work of electro-acoustic music
• Performance of commissioned work at the 2016 SEAMUS National Conference
• Recording of the commissioned work in the SEAMUS Compact Disc Series
• Certificate of recognition

Second Prize

• Commission of $750 for a new work of electro-acoustic music
• Performance of commissioned work at the 2016 SEAMUS National Conference
• Certificate of recognition


Applicants to the 2015 ASCAP/SEAMUS Student Commissioning Competition must be student members of SEAMUS and must be either currently enrolled in an academic program in the United States (high school through doctoral studies) or a United States citizen studying abroad. All completed submissions will be verified for student status against current SEAMUS membership records.

Per Bloland
SEAMUS Member-at-Large

Cmdist mailing list
Kjetil Matheussen | 5 Oct 21:35 2014

Backtrace in s7

Hi Bil and the rest of you,

I've added s7 as an extension language [1] to the 3.0 branch [2]
of the Radium music editor [3].

Some details about it: A small web server running inside Radium
is communicating with an external python script. This python script
functions as a repl for S7 [5]. This method works excellently, since the
repl doesn't have to be restarted if radium crashes, and you don't
have to run radium (which is quite bloated) from inside
emacs (which I'm using as lisp code editor). Right now I'm working
on rewriting all the mouse handling in s7, since the current
code (written in c) needs to be rewritten anyway, and this is simpler
to implement in scheme than in c.

S7 has so far been an excellent scheme implementation for me.
It's impressively fast (even mysteriously impressively fast, at
least for calculating the fibbonacci numbers), the api is dead simple,
and it's simple to embed into other programs. It's a quite perfect
extension language I would say.

But I wonder if it's possible to get a more detailed
backtrace if something goes wrong?

For instance, if I run the following code:
(define (d)
(define (c)
(define (b)
(define (a)

I get this response:

error message: [
;e: unbound variable
;  /home/kjetil/radium3.0/bin/scheme/mouse/bug.scm[9]
;    "/home/kjetil/radium3.0/bin/scheme/mouse/bug.scm", line 2
; d: (e)                                      
; (load "/home/kjetil/radium3.0/bin/scheme/...

Which is good, but sometimes not good enough, since I tend
to write a lot of spaghetti-like code.

Ideally, something like this would be nice:

;5. e: unbound variable, bug.scm[2]
;4. (d), bug.scm[4]
;3. (c), bug.scm[6]
;2. (b), bug.scm[8]
;1. (a), bug.scm[9]

I've looked over the documentation, experimented with code
that catches exceptions and inspecting data that calls "owlet",
but haven't found a way to get the kind of backtrace I want.

Is it possible to get this type of backtrace at all? Or perhaps
there is a different and perhaps better way to debug an s7 program?
I can live without this kind of backtrace though, so it's not
a big problem, and certainly not a show stopper.

I also have a feature request, which might be a lot of work
to implement, but would also be very nice to have. The feature is to give
warnings for undefined variables and functions.

For instance, if you try to evaluate

(define (hello)
   (let ((hello2 9))
     (+ hello2 hello3))

s7 would give a warning if hello3 isn't defined.
Guile has recently gotten this feature, and when
I developed a small software package for guile earlier this year,
it probably saved me a lot of time, since discovering undefined
variables and functions in code during runtime is harder and more
random than getting a message about it during compile time.
I think the lisp language "Shen" also has this feature, and that
in Shen you can turn off the warning by using a special macro,
I think the name might be "extern" or something like that.
(I.e. "(extern hello3)").

Thanks for reading,

Cmdist mailing list
Bill Schottstaedt | 25 Sep 18:45 2014

Snd 15.0

Snd 15.0:

clm and snd: Juan Reyes provided his banded waveguide instrument,
  bandedwg.ins and bandedwg.cms, and a Tibetan bowl: bowl.ins 
  and bowl.cms.

s7: *s7* is an environment holding various curiousities.
    moved *gc-stats*, *safety*, and *maximum-stack-size* into *s7*
    added cutlet to remove a binding from an environment

checked: gtk 3.13.7|8|9, sbcl 1.2.3

Thanks!: Juan Reyes
James Hearon | 28 Aug 00:53 2014

Grace, CM, midi type 0

Is there a good way to get a type 0  or merged track .mid file from Grace?  The Midifile settings
don't seem to have that option. With something like below, the default seems to be type 1 or 16 channels.
sprout(simp(10,60, 90), "test.mid")

Cmdist mailing list
Bill Schottstaedt | 18 Aug 21:16 2014

Snd 14.9

Snd 14.9:

s7: symbol-access is now just the set accessor function (not a list), and it is
      local to an environment.  See reactive-let et al in stuff.scm.

    define and friends now return the value, not the symbol (like set!).

    added mockery.scm.

    added hash-table* (unconsed args): 
        (hash-table '(a . 1) '(b . 2)) 
        (hash-table* 'a 1 'b 2)

    "let" replaces the "environment" terms
    make-procedure-with-setter is now dilambda

        new name       old name

        let?         environment?
        rootlet      global-environment
        unlet        initial-environment
        with-let     with-environment
        outlet       outer-environment
        sublet       augment-environment
        varlet       augment-environment!
        curlet       current-environment
        owlet        error-environment
        funclet      procedure-environment
        let->list    environment->list
        openlet      open-environment
        openlet?     open-environment?
        coverlet     close-environment
        let-ref      environment-ref
        let-set!     environment-set!
        inlet        environment and environment*

        dilambda     make-procedure-with-setter
        dilambda?    procedure-with-setter?

Snd: edit-position can't be a function
     mus-sound-path and *mus-sound-path*
     *default-output-data-format* is now *default-output-sample-type*
     default-output-data-format is replaced by default-output-sample-type
     similarly, data-format, mus-sound-data-format, mus-data-format-≥string and mus-data-

checked: gtk 3.13.4|5|6, FreeBSD 10, sbcl 1.2.2.

Thanks!: Francis Derive, Anders Vinjar