MusicString is another of my many projects, it's an simple programming language designed for Music/Melody synthesis using a very compact ASCII strings (plus there's a compression version coming up, utilizing UTF-8), in another words - you can write music with just a few symbols!
This makes it deal for pasting on Twitter, sharing in social networks, IRC, instant messaging or even putting to your signature or in the post. The language is quite straightforward, but allows simple loops (repeating parts of the tunes), playing several notes at once (basically by forking) or even subroutines with arguments and conditional execution. It supports several instruments and also soundfonts for your own sounds/instruments! (and you can use several soundfonts in one song at once!)
Today, I finished the first working version of MusicString compiler and generated the first audio with MusicString ever. This is the MusicString that was used for the first one:
Code: Select all
{test;a[$0.:3]a}abc{test:z}abc{test:8z}
http://data.solirax.org/musicstring/First.wav
Here's another tune, which sounds more like a music and less like a testing piece:
Code: Select all
->5dd.4abcfeg5ddd(bcd,egd)3dddefghaaabb(bbbc,ccca)5dda
http://data.solirax.org/musicstring/More.wav
For now, this is all, but stay tuned, because I'm gonna release specification and compiler binary soon, so you can begin making your very own tunes! ^^ If you're capable enough even now to understand the simple syntax of the MusicString language from the examples, feel free to type any of them here into the topic and I'll generate them now for you :3
I hope you'll like this project, 1llusion showed interest in integration with this forums using a bbcode tag [musicstring]
So... stay tuned for more tunes! >:3
------------------------------------------------------------------------------------------------------------------
I have another tune, which I created partially by randomly mushing keys on the keyboard, but it doesn't sound THAT bad, surprisingly x3
Code: Select all
3>{0;pokcfghmrldslfdfsadewoiadajlekjadfadhfweiudadlkjha eauhdfalkjdhfalsuehaldkjnxlmhldsakjhflkdsajfajhkhkjhkjhkjh kjhkjhkjhkjhkjhkkkkkhkhjkjhkjhkjhkhjkjhkjhuyiuyilkjhutkjoiyt uytriyutyutabcdefghijklmno pqrstuvwxyzzzzzz...p.p.p.p.p.dlprmldflkj} (/{0:},^{0:}, 5|[rtt.:30],6=~[tTop:15], 4=-[d...dd.....d.d.d....ddd.d...:30])
------------------------------------------------------------------------------------------------------------------
It's here! *snip, get the newer version*
I just released the first public version of the MusicString to WAV (16b PCM) compiler! It takes plaintext file with MusicString code as an input and outputs a WAV file (16b PCM, 48 kHz), the length is capped to 30 minutes, so in case the MusicString loops forever, result will be 30 minutes long.
It's packaged with a few examples, so try them out and then begin to make your own tunes! ^^ Don't hesitate to share them here with us!
It's also first version, not all features are implemented yet and some are gonna change a bit, plus there are probably bugs, so sorry in advance if it crashes here and then or doesn't work as it should.
------------------------------------------------------------------------------------------------------------------
New version of Visual MusicString was released!
Download for Windows
Download for Mac OS X
Download for Linux (you need Qt 4.8.0 libraries, they are not part of the package)
[size=large]Version 0.2[/size]
[+] Added versions for Linux and Mac OS X
[+] Added exporting to audio file
[+] Added syntax error reporting
[+] Added real-time playing sample-rate option
[+] Added About Visual MusicString page (includes version numbers and compile times)
[+] Added amplitude peak visualizer
[*] Numerous bug-fixes
----------------------------------
Compiler history:
Version 0.2.2a
DOWNLOAD HERE
[+] Added normalization - activated automatically in case of clipping, adjusts maximum amplitude to 0.95 (test with hugechord.mstr)
[*] Fixed bug when parsing loops and going into unintended infinite loop in some circumstances
[*] Edited Saving code, has now about 50 % less memory footprint, though it's slower
UPDATE! Version 0.2.1a
Please update to the new version, *snip*
[+] Linux binary is now available! The code compiles and works correctly both under Linux and Windows now, porting to Mac OS X is in progress
[*] Fixed a bug that caused incorrect loops to be terminated by the [loopname] statement
[*] Fixed a bug that caused parsing thread to hang by going into an unintended infinite loop under some circumstances
UPDATE! Version 0.2a
Please update to the new version,*snip*
[*] Rewrote the parsing thread scheduling code and (hopefully) resolved all timing issues that way, also made code more clean
[+] New noise generation, so it now has much better, frequency based noise and plucks!
[+] Now supports statement [loopname] to terminate any loop with that name (you can try it with tune.mstr)
[+] New and updated examples