score
scheme-for-max
Our great sponsors
score | scheme-for-max | |
---|---|---|
99 | 34 | |
1,408 | 181 | |
2.1% | - | |
9.6 | 4.7 | |
5 days ago | 5 months ago | |
C++ | C | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
score
- Learn How to Build Your Own Max for Live Devices
-
Qt Widgets Rendering Pipeline
https://ossia.io uses widgets and qgraphicsscene for the main UI rendering and Qt rhi for the GPU pipeline, and it's performing well enough for our use-cases - I was working on it on a 1080p screen on a Pi4 recently and it certainly felt much much faster and responsive than chrome on the same hardware.
-
Is it possible to do runtime compilation and execution of C code?
I use it for live c++ recompilation in https://ossia.io - all the code is in there. https://github.com/ossia/score/tree/master/src/plugins/score-plugin-jit/JitCpp
-
Show HN: New visual language for teaching kids to code
> I feel like visual programming gets a bad rap because of things like this. As an electronic engineer that used to love LabView and life long user of NI Reaktor and Max/MSP, those tools are fantastic if you don’t approach them with an imperative programming mindset.
aha, in the long run I ended up making https://ossia.io which is as VPL as it can get. Yet it still embeds a LOT of textual languages.
-
CLion Nova Explodes onto the C and C++ Development Scene
For me both VSCode and CLion lag heavily.. whenver I tried CLion it was completely unuseable on my project https://ossia.io which is only 500kloc (and I try to try it pretty much once a year since it was in beta)
-
Visual Node Graph with ImGui
https://ossia.io does some of it, I've been working on a new release that also supports the whole QtQuick stack in the node graph items but you can already combine videos & shader effects
-
Speed Up C++ Compilation
In https://ossia.io with PCH, using clang, ninja, mold, and some artificial split in shared libraries for development builds, I get a compile-edit-run cycle of a couple seconds in general... I wouldn't say it's too much of a problem if you use the tools already available
-
Looking for open source projects to contribute to
If you're interested in multimedia https://ossia.io is always looking for new contributors!
-
Digital Audio Workstation Front End Development Struggles
I develop https://ossia.io with Qt and it works as I want it to
In ossia.io I use three different algorithms / display methods depending on the zoom level used: at "far away" zoom it uses the minmax of the audio slices, at intermediary zoom it draws lines and when getting closer, it starts drawing individual samples.
https://github.com/ossia/score/blob/master/src/plugins/score...
- Automation clips can contain a bunch of bezier curves, which are slow to render.
Convert those to line segments with an approximation setting that looks good enough and it'll be ten times faster (keep the bezier for your data model of course).
https://github.com/ossia/score/blob/master/src/plugins/score...
https://github.com/ossia/score/blob/master/src/plugins/score...
- Piano roll clips can contain lots of little rectangles in order to display a "minimap" of the MIDI notes inside of it.
oh damn yes, I spent so much time on this and it still needs so much optimizing... if someone wants to give a shot at it :D
https://github.com/ossia/score/blob/master/src/plugins/score...
https://github.com/ossia/score/blob/master/src/plugins/score...
- On top of all this, clips can contain text labels which can also be expensive to render.
Yep, made myself a few "cached text" Qt items over time as the builtin cache wasn't satisfactory
- The fact that a timeline is zoom-able also makes it harder to cache the rendering of clips. If the timeline changed its zoom level, all visible clips pretty much have to redraw all of their contents.
yep
- Piano rolls can also be expensive to render if there is a bunch of MIDI notes, especially if there are text labels on the notes.
yep
- If the user clicks on a folder in a sample browser containing hundreds or even thousands of files, allocating a label widget for each file in the browser list will be very expensive. Something like the list factory in GTK is needed here.
yep, Qt's also able to cache this. Though for instance for Qt's QFileSystemModel I carry a small patch to disable any kind of sorting when there's more than a few hundred thousand files (which happens for large media libraries)
- We want to reserve as much CPU as possible for the actual audio processing. Ideally the GUI shouldn't take up more than one or two CPU threads.
scheme-for-max
- Learn How to Build Your Own Max for Live Devices
-
Ask HN: Most interesting tech you built for just yourself?
Mine is Scheme for Max, now on it's fourth open source release, but really written so I could make computer music how I want to. It's an extension to the popular Max/MSP visual music programming environment that embeds an s7 Scheme interpreter and provides a substantial API/FFI to Max. It allows you to script Max (and thus also Ableton Live) with Scheme, enabling interactive coding, algorithmic music, live coding, macros, and just much more pleasant scripting than in JavaScript. It locks in with the scheduler so you can even use Scheme powered sequencers within Ableton Live alongside regular Live tracks, and you can build sophisticated Live control surfaces using the Live API.
Github page here: https://github.com/iainctduncan/scheme-for-max
- Controlling parameters with audio?
-
Processing audio buffers with Scheme for Max (cookbook and tutorial)
To download Scheme for Max and for tutorials, documentation, and the cookbook, visit the GitHub page: https://github.com/iainctduncan/scheme-for-max
-
The Janet Language
If you like things like Janet, you might also like s7 Scheme. It is also a minimal Scheme built entirely in C and dead easy to embed. I used it to make Scheme for Max and Scheme for Pd, extensions to the Max and Pd computer music platform to allow scripting them in Scheme. (https://github.com/iainctduncan/scheme-for-max) Janet was one of the options I looked pretty closely at before choosing s7.
The author (Bill Schottstaedt, Stanford CCRMA) is not too interested in making pretty web pages, ha, but the language is great!
-
Which coding language to start with?
Project page: https://github.com/iainctduncan/scheme-for-max
-
Ask HN: What have you created that deserves a second chance on HN?
I created Scheme for Max and Scheme for Pure Data. They are extensions to the Max/MSP, Ableton Live, and Pure Data computer music environments that embed an s7 Scheme interpreter in the host so that you can script, automate, and live code the hosts with s7, a Scheme from the CCRMA computer music center at Stanford and the same one used in the Snd editor and the Common Music 3 algorithmic composition environment. This allows you to do things like write algorithmic music tools, sequencers, and use the Ableton Live API in Scheme, including with Common Lisp style macros. It has an API for integrating with Max to share data structures, hook into the scheduler, run in the high priority thread, and so on. S4M allows you to do all the goodness of high level music programming in a Lisp, without losing the ability to use modern commercial tooling and instruments. It's my thesis project for a Masters in Music Technology with Andy Schloss and George Tzanetakis at the University of Victoria, and I plan to continue to a PhD working on it. I tried submitting twice, but it never made the page, which surprised me a bit given Lisp interest here.
The github page is here: https://github.com/iainctduncan/scheme-for-max
The youtube channel with various demos is here: https://www.youtube.com/c/musicwithlisp
-
Common Lisp and Music Composition
On a closely related note, and possibly of interest, I am the author of Scheme for Max and Scheme for Pd, which put the Common Music 3 Scheme interpreter in Max and Pure Data. Common Music's most recent version used s7 Scheme as the language, which is mostly a a Scheme but borrows many features from Common Lisp (keywords, defmacro, etc). With Scheme for Max, you can basically run almost all Common Music code inside Max, Ableton Live, and Pd, allowing you to use it with more commercial tools (such as VST instruments, etc). It has extensive API functions for hooking into the host scheduler and data structures as well as running Lisp/Scheme code.
Project is here: https://github.com/iainctduncan/scheme-for-max
- Suggested resources for learning the JVM well?
-
Hacking Perl in Nighclubs (2004)
There are many very "serious" ones, but they won't replace DAWs because the audience for a programming language tool for computer music looks is very different.
A few off the top of my head that are used and/or made by serious computer music people: Common Music, Nyquist, Euterpea, Open Music, Common Lisp Music, Snd, Csound, SuperCollider, Chuck, Perry Cook's STK, and my own Scheme for Max and Scheme for Pd.
My own Scheme for Max is (modesty aside) interesting because it takes one of the serious code tool lineages and enables running it in a DAW. It allows you to port Common Music algorithmic composition code into Ableton Live through Scheme for Max. You get the ability to work in and sync up with Live, but if you want it, all the potential complexity and power of Scheme and Common Music.
What are some alternatives?
seq66 - Seq66: Seq24-based live MIDI looper/editor. v. 0.99.12 2024-01-13. NSM support; Linux/Windows/FreeBSD; PDF user manual. Help access to tutorial and PDF. Beta code in portfix branch.
janet - A dynamic language and bytecode vm
BespokeSynth - Software modular synth
atemOSC - Control ATEM video switchers over the network with OSC messages
BespokeSynth - Software modular synth [Moved to: https://github.com/BespokeSynth/BespokeSynth]
Rack - The virtual Eurorack studio
vgmtrans - VGMTrans - a tool to convert proprietary, sequenced videogame music to industry-standard formats
lmms - Cross-platform music production software
pyo - Python DSP module
Fennel - Lua Lisp Language