iainctduncan / scheme-for-max Goto Github PK
View Code? Open in Web Editor NEWMax/MSP external for scripting and live coding Max with s7 Scheme Lisp
License: Other
Max/MSP external for scripting and live coding Max with s7 Scheme Lisp
License: Other
it would be good for package distribution. Rename scm4max to s4m.scheme and then helper patches (repl etc) can be s4m.repl etc
see filewatcher_new() in the api docs.
Not sure how yet. Read the docs? or in here? or use the nice Janet static website code?
the scan messages is working for scanning on the first call, but the third time it's called it crashes the patch.
enable setting dicts as values in max dicts. (post first release)
We should only see the chatter in the console if we want it. Maybe an @debug attribute or something
Which means it will clobber definitions before we intend.
figure out how to make those nice fancy help files max has
If a file that is not found is referenced in the source file, any reinit of the object (ie changing the file) does a complete crash.
How to make xcode do the right thing with S7 sources
The repl bpatcher sends out it's contents when you toggle the controls, it shouldn't do that
Figure out what the right way to do this is.
Right now, enter sends the code out, which makes multi-line code impossible except by copy and paste. Need to figure that out
Writing to named tables
so out-1 and so one don't work. oops
For writing and reading floats to buffers, because tables only store ints.
Implement "read" message for loading scheme files, as documented here:
https://cycling74.com/sdk/max-sdk-8.0.3/html/chapter_files.html#chapter_files_reading_text_files
mucked it up in the package transition, need to fix that
if we change the file on the file system, and then double click it, we are not loading the right file. Damn it.
putting in a filename to the object box should load it up, using search path. Should be able to use code from implementing "read".
Is there a way to programmatically write to coll? maybe by sending the named coll a generic message?
When code is executed through eval'ing a max message in inlet 0, it is not executing at top level, so for example, defines don't stick around. I think this is not what I want. prob need to ask on the list about this.
Dict i/o does not yet handle reading or setting arrays as values. Do that for arrays of ints, longs, symbols.
As JS object does
Like the JS box. This will be important for making help actually useful.
when we have a function execute several out statements in a row, we get (() () ()) returned from the interpreter, which gets printed to the console. Need to smarten up the the post_res function to skip printing that.
implement the clojure-style -> and ->> thread first and thread last macros so we can build compound statements in simple max messages, like:
foo 1 2 -> + 10 ->> out 1
Should I make a convenience bpatcher for that?
Ideally we will have optional sharing of s7 objects.
Figure out how scm4max users will set the number of inlets and outlets.
Should it be in code, or come from attributes, etc.
If an object is registered with a scripting name, scm4max can find it by iterating through the patcher. We will have scm4max maintain a registry, with a method for updating (if you change the patcher) and thus allow users to attempt to send any message to any other object with object_method and it's relatives.
Prototyped and working for setting a value in a coll.
Would be better if the console didn't show the empty list on every function that only has a side effect.
changed my mind.
when sent with with eval-string, "(out 0 'foobar)" works fine,
and direct (no eval string), out 0 :foobar is fine
but out 0 'foobar is throwing an error where it shouldn't
As per instructions here:
https://cycling74.com/tutorials/package-authoring-writing-documentation
I think there are different optimization settings or something.
It's cut off part way through when double clicking on the listeners help example, presumably a buffer is not big enough or something
Get some max-test tests going. Eventually we should have them for all FFI operations.
we should be able to
(define (f-list list-arg) (out 0 (reverse list-arg)))
Go through the file reading, ensure using defer low properly
fix it so it defaults to 1 inlet (inlet 0) and not counting from inlet 1
So as to make the repl quieter
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.