[HN Gopher] Opusmodus: Common Lisp Music Composition System
       ___________________________________________________________________
        
       Opusmodus: Common Lisp Music Composition System
        
       Author : zetalyrae
       Score  : 147 points
       Date   : 2023-11-08 10:57 UTC (12 hours ago)
        
 (HTM) web link (opusmodus.com)
 (TXT) w3m dump (opusmodus.com)
        
       | PennRobotics wrote:
       | For even easier (and still reasonably robust) text-based music
       | composition, look into ABC notation:
       | 
       | https://en.wikipedia.org/wiki/ABC_notation#Example
        
       | metaketa wrote:
       | What notation rendering library are they using?
        
         | capableweb wrote:
         | > That Opusmodus has adopted MusicXML as the de facto standard
         | for displaying notated scores should be no surprise. This is
         | inextricably bound up with the development of the distinctive
         | Opusmodus Notation script (OMN). It gives the composer the
         | means to design into the very composition of a score a host of
         | musical details that have until now been impossible to bring
         | together in a single line of script.
         | 
         | https://opusmodus.com/forums/notation-viewer/
        
           | ctrlmeta wrote:
           | > That Opusmodus has adopted MusicXML
           | 
           | What are some other notable and open formats for notating
           | scores? I'd like to know the what the popular formats are, do
           | a survey and choose one for my own work.
        
             | phlakaton wrote:
             | MusicXML is pretty much _the_ game in town as far as open
             | formats go. Lilypond is an open TeX-like format, but it 's
             | really a domain-specific programming language for Lilypond
             | itself.
        
             | adrianh wrote:
             | Have a look at MNX, which is in the process of being
             | designed:
             | 
             | https://w3c.github.io/mnx/docs/
             | 
             | It's an open JSON format that's being hashed out by members
             | of the music technology community. It's not production-
             | ready yet, but I encourage you to get involved in the
             | discussions! https://github.com/w3c/mnx/
             | 
             | (I lead creation of the format, as one of the co-chairs of
             | the W3C Music Notation Community Group.)
        
             | andrewla wrote:
             | ABC is the other major player in the space besides MusicXML
             | and Lilypond.
             | 
             | The Mutopia project [1] is magnificent but largely
             | abandoned in favor of MuseScore [2] which uses MusicXML.
             | The amount of music available there is staggering but
             | locked in to their backend.
             | 
             | Unfortunately automated translation is difficult because
             | Lilypond is very oriented towards specifics on how the
             | notation is rendered.
             | 
             | And, if you are interested in general archives of music,
             | IMSLP [3] (Internet Music Score Library Project) has to be
             | mentioned as well, but mostly contains scans of existing
             | engraved music.
             | 
             | [1] https://github.com/MutopiaProject/MutopiaProject
             | 
             | [2] https://musescore.com/sheetmusic
             | 
             | [3] https://imslp.org
        
       | vindarel wrote:
       | This GUI is made with LispWorks' CAPI toolkit.
        
         | lispm wrote:
         | Generally the application is based on LispWorks and thus
         | available for macOS and Windows.
        
       | shoggouth wrote:
       | Also there is Impromptu[0], a live coding Scheme. This is my
       | favorite piece written in it[1]. The guy behind Impromptu created
       | Extempore[2].
       | 
       | [0]: http://impromptu.moso.com.au/index.html
       | 
       | [1]: https://vimeo.com/2579694
       | 
       | [2]: https://extemporelang.github.io/
        
       | chaosprint wrote:
       | If you are interested in code-based composition, try my project:
       | 
       | https://glicol.org
       | 
       | I am still working on the composition system, together with many
       | other stuff
       | 
       | here is an example of Kraftwerk:
       | 
       | https://glicol.org/demo#themodel
        
         | sramsay wrote:
         | What I really want to see is a music programming language that
         | does not require elementary knowledge of trig. In fact, I don't
         | want it to use _any_ numbers at all.
         | 
         | They all do: Faust, Impromptu, ChuCK, csound, SuperCollider,
         | etc., etc. I suppose that by itself should convince me that
         | there's no other way (there are things like Orca, but I'm
         | thinking of things that look more like conventional programming
         | languages).
         | 
         | I seldom think about numbers when I'm programming a synthesizer
         | -- I just turn this knob _more_ this way or this slider down _a
         | bit_. Why can 't a music programming language be more . . .
         | gestural? Not sure what the right word is. I want the benefits
         | of a textual programming language, but I don't really want to
         | have to start thinking about sound waves in terms of literal
         | numeric frequencies, particular since I really don't do that
         | while doing sound design.
         | 
         | I don't meant to pick on your project in particular; it looks
         | really cool. But since you're writing one of these, perhaps you
         | can answer my question. Why do these languages ask synth
         | programmers to think in terms of precise numbers when
         | programming an "actual" synth isn't really like that at all?
        
           | Jeff_Brown wrote:
           | TidalCycles doesn't. And you can try it online without
           | installing anything.
           | 
           | https://strudel.cc/
           | 
           | Try evaluating `d1 $ s "bd sn"` to get a bass drum-snare drum
           | rhythm going. Then `d1 $ s "bd*2 sn"` to kick the bass drum
           | twice each loop instead of once. It can be extremely
           | intuitive.
        
             | sramsay wrote:
             | Doesn't what? Doesn't use numbers?
             | scale(scales)       .scaleTranspose("[0 <2 4>]*2")
             | .struct("x*4")       .velocity("<.8 .5>\*4")
             | .velocity(0.8)       .slow(2)       )       .fast(1)
             | .note()       .clip("<.4 .8 1 1.2 1.4 1.6 1.8 2>/8")
        
               | Jeff_Brown wrote:
               | Require trig.
        
           | Rochus wrote:
           | > _I want the benefits of a textual programming language, but
           | I don 't really want to have to start thinking about sound
           | waves in terms of literal numeric frequencies_
           | 
           | That's a bit of a contradiction. It's exactly the reason to
           | use a programming language to have that level of control over
           | signal processing. Otherwise you're better off with a tool
           | like Reactor or VCV Rack.
        
           | nielsbot wrote:
           | What about Orca?
           | 
           | https://100r.co/site/orca.html
           | 
           | Esoteric visual music programming language that uses a 2D
           | grid of operators.
        
             | sramsay wrote:
             | Orca is explicitly mentioned in the comment to which you
             | are responding.
        
               | nielsbot wrote:
               | oops!
        
           | TheOtherHobbes wrote:
           | Because it's a text interface, not a gestural interface.
           | 
           | If you really want a gestural interface you can add it to any
           | language that supports for MIDI control, or some other
           | hardware connection option. (UDP, etc.)
           | 
           | The gestural part is trivial, just as putting a knob on a
           | synth is trivial. The hard part is getting the knob to _do_
           | something,. Which is not trivial at all.
           | 
           | In fact it's impossible without using numbers somewhere in
           | the make-it-work chain. They may be a few levels down, but
           | they're always going to be there.
        
             | sramsay wrote:
             | I'm not suggesting that we banish numbers from the entire
             | stack. I'm asking why they are absolutely necessary for a
             | textual interface in this domain -- to the point that, as
             | someone says below, it is a "contradiction" to suggest
             | otherwise. As if there's some sort of impassable gulf
             | between csound and VCV Rack.
             | 
             | Let's talk about LaTeX this way. Suppose LaTeX required
             | everything to be specified in explicitly numeric terms. I
             | find this sort of tedious, and I start asking why we can't
             | just express the idea that things be "centered," or
             | "justified," or "kerned" or "Large(r)," or "ragged right."
             | 
             | Would you really say that I am speaking in terms of
             | contradictions? That what I really need is Word, that I
             | must not understand the difference between a textual
             | language and a gestural one, and that the only reason to
             | use a textual language is precisely _so that_ I can have
             | precise control over these matters?
             | 
             | What I'm really asking here is whether we are really
             | talking about the hard limits of programming languages, or
             | if we are instead talking about a certain lack of
             | imagination among programming language designers in this
             | space?
        
               | lemurien wrote:
               | Maybe some constants or enums to give names to specific
               | numbers.
               | 
               | let CENTERED = 0; let JUSTIFIED = 1;
        
               | nologic01 wrote:
               | I think what you are asking for is for an abstraction
               | layer that is on top of what the current systems do.
               | LaTeX is a very good analogy, as it is a set of macros
               | that hide away the numericity of the underlying TeX
               | typesetting system. Once upon a time people did use TeX
               | to write papers because LaTeX did not exist yet.
               | 
               | Such a higher level macro system must make tradeoffs
               | between sufficient control and conciseness (though its
               | typically possible to insert low level code in between
               | the macros since before any macro can be executed,
               | rendered etc. it must be converted to the lower level
               | anyway).
               | 
               | Developing such a system is probably a task for tech-
               | savvy musician rather than a music-savvy techie. Its
               | value proposition would be precisely to crystallize
               | composition "invariants" that are expressive and
               | versatile enough to enable people to compose genuinely
               | new things.
               | 
               | But you should keep in mind that all LaTeX papers look a
               | bit alike :-) (though _much_ better than Word papers).
        
           | dreamcompiler wrote:
           | > does not require elementary knowledge of trig
           | 
           | As math fields go, trig is fairly easy. The part you need to
           | understand for music is a nicely-delimited chunk that you can
           | learn quickly. I find it very rewarding as a way to think
           | about music; you might too.
           | 
           | (I'm not talking about Fourier transforms; just basic trig.)
        
         | Rochus wrote:
         | What's the core benefit in comparison to all the other existing
         | open-source audio/music programming environments (https://en.wi
         | kipedia.org/wiki/List_of_audio_programming_lang...)?
        
           | chaosprint wrote:
           | Glicol has a synth-like syntax, trying to balance the
           | simplicity and readability needed for live coding music
           | performances.
           | 
           | This syntax is also deeply integrated with the customised
           | audio engine under the hood. And this audio engine can be
           | used as an independent Rust audio library.
           | 
           | You can also use Glicol's DSL in Rust projects.
           | 
           | There are many use cases in this YouTube channel, such as
           | Glicol running on Bela, functioning as a VST, and as a CLI
           | tool:
           | 
           | https://youtube.com/playlist?list=PLT4REhRBWaOOrLQxCg5Uw97gE.
           | ..
           | 
           | But all in all, I just feel comfortable coding with it for
           | experimenting sound design and improvisation.
        
             | Rochus wrote:
             | cool, thanks.
        
           | nologic01 wrote:
           | Something I noticed about all these projects (and they are
           | quite a few) is that they are quite old (some going back ~2
           | decades or so).
           | 
           | I wonder what is the dynamic behind that longevity. Music
           | hasn't changed ofcourse but on tech side I would think there
           | are significant new possibilities.
           | 
           | Is it something related to the difficulty of implementing low
           | level algorithms (famously a lot of linear algebra stuff goes
           | back decades and rests on C / Fortran libraries). Is it that
           | there isn't enough interest to justify new efforts or are
           | those systems already near "perfection"?
        
         | mike_ivanov wrote:
         | Blinking cursor. Full stop - can't use. But thanks for building
         | it, anyways.
        
           | Jeff_Brown wrote:
           | That's so racist.
        
       | shanusmagnus wrote:
       | This is interesting and inspiring! However, if you don't know
       | anything about music, would it be fun to play around with it, or
       | tedious? Trying to allocate my down-the-rabbit-hole cycles a
       | bit...
        
       | phlakaton wrote:
       | Not to be confused with Common Music
       | (https://commonmusic.sourceforge.net/) or Common Lisp Music
       | (https://ccrma.stanford.edu/software/snd/snd/clm.html), two
       | venerable Common Lisp packages for composition and sound
       | generation.
        
         | Rochus wrote:
         | Common Music switched from Common Lisp to Scheme in 2008 (and
         | also supports SAL for people who don't like the Scheme syntax);
         | it uses the S7 Scheme interpreter included with sndlib.
         | Actually Common Lisp Music is neither Common Lisp anymore, but
         | a C library and part of the mentioned sndlib (with some
         | language bindings).
        
         | lispm wrote:
         | OpusModus includes Common Lisp Music.
        
       | ramses0 wrote:
       | Also: https://lilypond.org/text-input.html
       | 
       | ...and: https://www.mutopiaproject.org
        
       | Rochus wrote:
       | There are a lot of cross-platform open-source solutions with
       | comparable capabilities, like e.g. Common Music, Nyquist, Csound,
       | SonicPi, etc.
       | 
       | Maybe anyone has experience why Opusmodus would be preferable to
       | the ones listed?
        
       | anon291 wrote:
       | Begin rant.
       | 
       | Call me crazy, but all the great music of today is being done in
       | video games and cinema scoring. I'm sure this system is useful
       | for some, but I can't help but feel the kinds of modern classical
       | featured are just noise. The claim is often that music is
       | cultural. I'm sure that's true, but then where is the great
       | modern Western classical music? Why was it thrown away? There are
       | reasonable explorations to be had. For example, modern composers
       | could have chosen to integrate Jazz harmonies (which still sound
       | concordant), but instead they chose to go off the deep end with
       | atonality, aharmony, and arhythm. We gotta end the postmodernism
       | and return to actually nice things.
       | 
       | And really, it's sad because the kinds of scores being produced
       | with the rhythm changes every measure, etc. They really
       | ultimately sound like the pretentious ramblings of some
       | drunk/high guy at a MIDI controller instead of the carefully
       | assembled score. It takes real talent to properly keep meter over
       | the course of an entire song. Just banging some keys and then
       | making other people attempt to replicate it... I mean props to
       | the replicators (the players), but the scorer just threw some
       | notes on a page.
       | 
       | In my opinion, this is a racist response by mainly European
       | composers to the popularity of Jazz music which is associated
       | mainly with African Americans, from whom the source originated.
       | They were jealous of what they perceived as the novel rhythms and
       | harmonies, but instead of building off that or inventing
       | something new that still had rhythmic and harmonic value.. they
       | did this
        
         | TheOtherHobbes wrote:
         | The accusation of racism is an interesting take. There were
         | strong links and crossovers between jazz and classical music
         | until serialism happened. They didn't develop independently. It
         | wasn't all that unusual for black jazz players and composers to
         | be as classically trained as white musicians.
         | 
         | But serialism was too far for most people. And still is. Failed
         | composer/critic Adorno, who adored serial music and is a Big
         | Name on the scene, absolutely loathed jazz and popular music.
         | 
         | It's not really atonal. It's antitonal. Truly atonal music
         | wouldn't care about standard pitches or notation at all,
         | because they're still based on the harmonic series. It's
         | antitonal because it pretends that's not true, while also
         | trying its best to avoid the usual paths through harmonic
         | space.
         | 
         | As for the quality - there's an opera called Wozzeck which is
         | performed fairly regularly. The rest is mostly museum music -
         | relegated to special academic festivals. Not mainstream at all.
         | 
         | It's actually very structured, and if you know what's happening
         | you can hear the patterns and components going by.
         | 
         | But as music it has a very limited emotional range. And
         | intellectually, most of it is pure crossword puzzling for the
         | sake of it.
        
         | gnulinux wrote:
         | > I'm sure that's true, but then where is the great modern
         | Western classical music?
         | 
         | It's like literally everywhere! I almost exclusively listen to
         | contemporary Western classical music (WCM) and it's never been
         | more exciting and better. There has never been a time where
         | there are so many different dominant styles at the same time.
         | There are atonalists [1] like Unsuk Chin, Jennifer Koh, Charles
         | Wuorinen, Fred Lerdahl. There are neo-Romanticists like
         | Jennifer Higdon, Michael Torke, Thomas Ades. There are
         | minimalists like Caroline Shaw, Max Richter, Bent Sorensen,
         | Christine Southworth and their ur-father Philip Glass who still
         | writes music at 86.
         | 
         | If you're interested in my full opinions about the cultural
         | force of contemporary WCM please read this [2] HN comment of
         | mine.
         | 
         | Seriously contemporary WCM is awesome. It's very cliche but "if
         | you don't like it, move on".
         | 
         | > In my opinion, this is a racist response by mainly European
         | composers to the popularity of Jazz music which is associated
         | mainly with African Americans, from whom the source originated.
         | They were jealous of what they perceived as the novel rhythms
         | and harmonies, but instead of building off that or inventing
         | something new that still had rhythmic and harmonic value.. they
         | did this
         | 
         | Meh, I don't think this is true at all. They're just entirely
         | different artistic traditions. Just because haiku exists
         | doesn't mean American novels can't.
         | 
         | I don't dispute that tons of normie classical music listeners
         | (like r/classicalmusic) are racists/elitists. These people
         | almost exclusively listen to old German common practice stuff
         | like Bach or Mozart. They pretend that 18th century German
         | music is somehow superior to everything else. Almost none of
         | them would consider Ligeti or Glass even classical music. This
         | is not the contemporary Western classical music scene at all.
         | It seems like you may not have a sophisticated enough
         | understanding of this subculture, imho.
         | 
         | [1] mostly Ligeti/Messiaen inspired people as opposed to
         | Serialists
         | 
         | [2] https://news.ycombinator.com/item?id=37424409
        
         | tmtvl wrote:
         | > _Call me crazy, but all the great music of today is being
         | done in video games and cinema scoring._
         | 
         | Okay, you're crazy.
         | 
         | ...But seriously, when's the last time you heard a good speed
         | metal song in a video game? And no, Brutal Legend doesn't
         | count.
         | 
         | > _but then where is the great modern Western classical music?_
         | 
         | What, like Johannsson? With how much new material is being
         | released every year the question isn't "where are the great
         | works," but "how do we separate the greatest works from the
         | lesser ones?"
         | 
         | > _We gotta end the postmodernism and return to actually nice
         | things._
         | 
         | This reminds me of Beethoven's Grosse Fuge, which some called
         | repellent and other called a masterpiece. It's like how I don't
         | understand Cubism but some people love it so there must be
         | something I just don't see.
         | 
         | And remember Hitchen's Razor: "Never attribute to malice that
         | which is adequately explained by stupidity."
        
         | dreamcompiler wrote:
         | I suggest you listen to some of Maria Schneider's work. It
         | fuses jazz, classical, and even rock (she collaborated with
         | David Bowie on his last album).
         | 
         | And Schneider is just one counterexample to your thesis.
         | 
         | https://en.m.wikipedia.org/wiki/Maria_Schneider_(musician)
        
           | anon291 wrote:
           | I would classify her as a Jazz artist. Contemporary Jazz is
           | great.
        
         | notfed wrote:
         | > the kinds of modern classical featured are just noise
         | 
         | Ok? Maybe they chose noisy examples on purpose? Focusing on
         | their specific music choices is purely bikeshedding, and misses
         | the point of the whole point of the project.
         | 
         | And your rant about "music of today" shows that you live in a
         | bubble. There is no "music of today". There's a vast sea of
         | musical diversity in this world.
         | 
         | > In my opinion, this is a racist response
         | 
         | It's really unclear what response you're referring to. Are you
         | talking about your own response?
        
       ___________________________________________________________________
       (page generated 2023-11-08 23:00 UTC)