For those of you interested in using J as an adjunct to lilypond or other such program:
Making a few changes to the lilypond statements that get prepended and appended to the notes generated (in my previous email on the subject). You can get lilypond to generate a midi file of the score: lilypondhdr =: ('\score{',LF);('\version "2.20.0"',LF);('\relative c'' {',LF);('\clef treble',LF);('\time 3/4',LF) lilypondend =: (('\layout {}',LF);('\midi {}',LF)),<'}' 'lilymusic.ly' fwrites~ ; lilypondhdr,(LF,~ each lilypondnotes,<'}'),lilypondend Basically adding the score tag and inserting '\layout {}’ and ‘\midi {}’ causes lilypond to generate both a pdf of the score and a midi file that GargeBand or other such program can play for you. When I generated MusicXML the musescore program could play the tune right from the score. Tom McGuire > On Mar 29, 2020, at 2:39 PM, Thomas McGuire <tmcguir...@gmail.com> wrote: > > Using the wavefile.ijs that contains the VOSS routine for generating random > note sequences: > > mynotes =: 30 voss 3 > mynotes > 7 8 6 11 13 14 6 9 7 12 10 9 12 12 8 11 11 7 11 13 6 8 12 11 15 11 10 12 6 10 > > NB. Then using the NumToName function in MusicalSyntax.ijs > NB. I get a boxed list of note names with octaves (adding 60 makes them be > around middle C): > > NumToName each ;/60+mynotes > ┌──┬───┬───┬──┬───┬──┬───┬──┬──┬──┬───┬──┬──┬──┬───┬──┬──┬──┬──┬───┬───┬───┬──┬──┬───┬──┬───┬──┬───┬───┐ > │G4│G#4│F#4│B4│C#5│D5│F#4│A4│G4│C5│A#4│A4│C5│C5│G#4│B4│B4│G4│B4│C#5│F#4│G#4│C5│B4│D#5│B4│A#4│C5│F#4│A#4│ > └──┴───┴───┴──┴───┴──┴───┴──┴──┴──┴───┴──┴──┴──┴───┴──┴──┴──┴──┴───┴───┴───┴──┴──┴───┴──┴───┴──┴───┴───┘ > > NB. Then massage that into something more lilypondish, > NB. get rid of octave (you could convert the number into lilypond apostrophes > to set the octave), > NB. make letters all lowercase, change the sharp symbol to ‘es’. > NB. Then put them into groups of 3’s for 3/4 time. > NB. (Replace _3 ]\ with _4 ]\ to group for 4/4 qtr notes) > > ('%s %s %s'&sprintf) each <"1 ]_3 ]\ tolower each ('#';'es')&stringreplace > each _1}. each NumToName each ;/60+mynotes > ┌─────────┬───────┬───────┬───────┬───────┬─────┬─────────┬───────┬─────────┬─────────┐ > │g ges fes│b ces d│fes a g│c aes a│c c ges│b b g│b ces fes│ges c b│des b > aes│c fes aes│ > └─────────┴───────┴───────┴───────┴───────┴─────┴─────────┴───────┴─────────┴─────────┘ > > NB. So putting it all together you get the following > lilypondnotes =: ('%s %s %s'&sprintf) each <"1 ]_3 ]\ tolower each > ('#’;'is')&stringreplace each _1}. each NumToName each ;/60+mynotes > ┌─────────┬───────┬───────┬───────┬───────┬─────┬─────────┬───────┬─────────┬─────────┐ > │g gis fis│b cis d│fis a g│c ais a│c c gis│b b g│b cis fis│gis c b│dis b > ais│c fis ais│ > └─────────┴───────┴───────┴───────┴───────┴─────┴─────────┴───────┴─────────┴─────────┘ > > NB. Now create a lilypondhdr: > > lilypondhdr =: ('{',LF);('\version "2.20.0"',LF);('\relative c'' > {',LF);('\clef treble',LF);('\time 3/4',LF) > > 'lilymusic.ly <http://lilymusic.ly/>' fwrites~ ; lilypondhdr,(LF,~ each > lilypondnotes),(<‘}’,LF),(<‘}’) > > You end up with a file that looks like: > { > \version "2.20.0" > \relative c' { > \clef treble > \time 3/4 > g gis fis > b cis d > fis a g > c ais a > c c gis > b b g > b cis fis > gis c b > dis b ais > c fis ais > } > } > > Running it through lilypond gave me the following pdf > <lilymusic.pdf> > >> On Mar 29, 2020, at 3:47 AM, Hauke Rehr <hauke.r...@uni-jena.de >> <mailto:hauke.r...@uni-jena.de>> wrote: >> >> could one as easily have a lilypond file created instead? >> since converting from MusicXML usually doesn’t work that well >> >> else I’d rather re-implement the music generation in scheme >> (guile) in order to use it in lilypond directly >> >> Am 29.03.20 um 05:14 schrieb Thomas McGuire: >>> I have a couple of files one is rough and hastily thrown together. But it >>> pulls together a few ideas from various people and tries to implement a >>> VOSS algorithm to randomly generate music in a fractal pattern. It will >>> also generate MusicXML so you can load it it into a musical score >>> application. >>> Tom McGuire >>>> On Mar 28, 2020, at 5:27 PM, Devon McCormick <devon...@gmail.com >>>> <mailto:devon...@gmail.com>> wrote: >>>> >>>> Hi - >>>> has anyone done work with generating music or musical phrases in J? I'm >>>> helping someone develop a music training game that starts by generating >>>> sounds with a particular key, tempo, and phrase length. The idea is to >>>> help students to train their ears by testing them on their ability to play >>>> back a randomly-generated musical phrase. >>>> >>>> I've told my collaborator that I think the generation part should be >>>> relatively straightforward but I am not schooled in music, so I'm not sure >>>> how to start. >>>> I'm guessing that the second part of comparing the user's response to the >>>> generated phrase will be more difficult but I'd like to get any kind of >>>> start I can. >>>> >>>> Does anyone have any ideas about this? >>>> >>>> Thanks, >>>> >>>> Devon >>>> >>>> -- >>>> >>>> Devon McCormick, CFA >>>> >>>> Quantitative Consultant >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>> <http://www.jsoftware.com/forums.htm> >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> <http://www.jsoftware.com/forums.htm> >> >> -- >> ---------------------- >> mail written using NEO >> neo-layout.org <http://neo-layout.org/> >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm