Reply to topic  [ 21 posts ] 
MusicString - Now with Visual MusicString IDE! 
Author Message
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post MusicString - Now with Visual MusicString IDE!
Hi there!
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:
{test;a[$0.:3]a}abc{test:z}abc{test:8z}

You can listen to generated audio here:
http://data.solirax.org/musicstring/First.wav

Here's another tune, which sounds more like a music and less like a testing piece:
Code:
->5dd.4abcfeg5ddd(bcd,egd)3dddefghaaabb(bbbc,ccca)5dda

You can listen to generated audio here:
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:
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])

Listen to it here

------------------------------------------------------------------------------------------------------------------

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

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Last edited by Frooxius on Thu Mar 01, 2012 12:29 pm, edited 5 times in total.



Tue Feb 14, 2012 9:21 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Updated to version 0.1.1a ! *snip, get the newer version*
-Fixed a timing issue

For a quick reference, here are syntax constructs copied from my private MusicString analysis document, some don't work yet though:

Code:
0 – 9 = duration of the note
a – Z = play tone of given frequency
. = pause
~ = set sine waveform
/ = set sawtooth waveform
| = set pluck waveform
- = set square waveform
^ = set triangle waveform
* = set noise waveform
( … ) = chord – group several statements that are played at once. It’s considered as one note, even if it contains several. Separate individual statements with comma
{name; sequence} = subroutine definition
{name: parameters} = subroutine call, parameters are optional
$n = argument usage in subroutine, n is number from 0 to 9
[name: sequence :n] = repeat sequence n times, 0 for infinity, name is optional
[name] = stop sequence with given name, if playing
&n = perform shift of pitch scale
&+n = perform shift of pitch scale plus 1 more step
&-n = perform shift of pitch scale minus 1 more step
@bpm; = set bpm
#soundfont;   = specifies a file with alternate soundfont that will be used
>   = set the tones to use fadeout
<   = set the tones to use fadein
=   = set the tones to use constant volume
%n   = set the volume, n is an alphabet letter
?n   = skip over following statement if argument n is zero
!n   = skip over following statement if argument n is nonzero
?(n=x)   = skip over following statement if argument n != x
!(n=x)   = skip over following statement if argument n == x
?(n@y=x) = skip over following statement if argument n@y == x
!(n@y=x) = skip over following statement if argument n@y != x
   @y = represents a simple integer operation with another number y
   Operations can be following: +, -, *, /, %, <<, >>, &, |, ^


Regarding chords, you write them like this
ab(c,d) <--- Plays a, then b, and then c and d at once
(ab,cd) <--- Playes a and c at once, then b and d at once

Additionally, you can use chords to play several instruments at once, like this for example:
(^abcdefgh, >^[.D:5], ~6roTHl)

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Last edited by Frooxius on Wed Feb 15, 2012 7:33 pm, edited 1 time in total.



Wed Feb 15, 2012 8:10 am
Profile WWW
Bringing Foxy Back
User avatar

Joined: Thu Apr 29, 2010 1:32 am
Posts: 15547
Location: Nephelokokkygia
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
This is really cool!

_________________
Image
Questions? Comments? Concerns? Friendly banter? Feel free to click the "PM" button below!


Wed Feb 15, 2012 1:09 pm
Profile WWW
User avatar

Joined: Wed May 25, 2011 7:32 pm
Posts: 1980
Location: In a house unless I'm not in a house.
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
I want to see someone play stairway to heaven with this!
Oh, and I should learn to use that as well, looks awesome.

_________________
Sent from my conifer.


Wed Feb 15, 2012 6:19 pm
Profile
laughing maniacally
User avatar

Joined: Mon Jan 24, 2011 10:42 pm
Posts: 17156
Location: an invisible, flying volcano over Virginia
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
this looks quite awesome indeed. I may have to write some quick things for this some time.

_________________
I'm a shape-shifter. I'm currently in whatever form I feel like
Image
Paradigm Shift by me
I do not actually believe any of what I'm saying.
RP character sheets


Wed Feb 15, 2012 6:36 pm
Profile YIM
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Wow, thanks! ^^ Share any tunes you create! :3 If you need any help, don't hesitate to contact me, I'll also appreciate feedback on both features and bugs, speaking of which...

UPDATE! Version 0.2a
Please update to the new version, DOWNLOAD HERE
[*] 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

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Wed Feb 15, 2012 7:30 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Hi again, here's a small update, I designed a logo for this project. Official website and documentation are coming soon! >:3 Keep tuned!

Image

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Thu Feb 16, 2012 1:33 pm
Profile WWW
Bringing Foxy Back
User avatar

Joined: Thu Apr 29, 2010 1:32 am
Posts: 15547
Location: Nephelokokkygia
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Maybe a treble clef would look better than an eighth note?

_________________
Image
Questions? Comments? Concerns? Friendly banter? Feel free to click the "PM" button below!


Thu Feb 16, 2012 1:55 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Sleet: I dunno, I liked the idea that the bottom of the note is like a ball of yarn/string and I think that treble clef has too complicated shape for what I intended. I might change the logo later though, or keep this one, I dunno yet...
--------------------------------------------------------------------------------------

Anyway, I generated a list of frequencies and corresponding notes that are supported by MusicString, which is however implemented in a way that the frequency range is limitation only of the MusicString language, the actual audio synthesizer doesn't have any limitation like that. It's basically limited only by precision of the datatypes and memory, it can easily synthetize for example 1 Ghz sawtooth with 10 Ghz sampling rate if you tell it to

Here's the table, it should also help as an aid during writing MusicString tunes, I'll be releasing website and documentation soon (hopefully later today, now I'm going to sleep).

Image

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Thu Feb 16, 2012 8:49 pm
Profile WWW
Bringing Foxy Back
User avatar

Joined: Thu Apr 29, 2010 1:32 am
Posts: 15547
Location: Nephelokokkygia
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
I'm I the first person to try this other than you? I hope so! 'Cause I want this to be the first third-party file. *giggles*

^3n4nnm3lllmmnn5N4m3l4m5n-4JJ5I^3n4nm5l4mnn3l6J

EDIT: Can you equalize RMS amplitude? 'Cause the square is much louder than the sine and the triangle.

_________________
Image
Questions? Comments? Concerns? Friendly banter? Feel free to click the "PM" button below!


Fri Feb 17, 2012 12:19 am
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Sleet: I'm sorry to disappoint you, a bunch of people already tried it before you. I presented this project at another (much bigger and computer science oriented) forums that I'm not sure if I can link here also on #experimentalmusic and #indiefurs on furnet.irc and #hackerfurs (don't worry, hacker in the old sense as somebody who explores possibilities of technology to make something better, any black-hat (malicious) activities are frowned upon) on anthronet.irc and in addition to that, I discussed the project privately with a few friends who study musical schools and compose music or play in a band, so you didn't really have much chance to be first, sooowiiii ^^' (oh, also I showed it to my grandma, because I was visiting her the day after I made first working version (this Monday night) and she made something with it too *giggles in a somewhat silly way* )

I tweets one of the tunes somebody made, because he uploaded it online: https://twitter.com/#!/Frooxius/status/ ... 3559395328

Though it's not anything bad at all, it's not a race or anything, it's the contribution you made that count, not the "position" on the line of people who did something and I appreciate it, cool tune, I hope they'll grow more elaborate over time :3

Yes, thanks for the suggestion regarding the volume, I'm already looking into it (don't worry, it bothers me as well), though there's a few things to be considered. First, soundfonts, when you load a soundfont, the basic waves are replaced by samples and the program has no idea what they are and if it should normalize them somehow, plus I don't really want to perform normalization every time something is compiled, so the soundfont itself should come with balanced volumes. However, it should be optional, what if someone doesn't want it to tamper with the volume at all? I don't want to get to a stage, where the tool thinks it know more than the composer and does something with the volume he didn't want it to do. Not to mention that maximum volume of some waves will produce lower amplitude than other waves... I dunno, I'm thinking about it.

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Fri Feb 17, 2012 5:48 am
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
UPDATE! Version 0.2.1a
Please update to the new version, DOWNLOAD HERE
[+] 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

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Fri Feb 17, 2012 12:45 pm
Profile WWW
Bringing Foxy Back
User avatar

Joined: Thu Apr 29, 2010 1:32 am
Posts: 15547
Location: Nephelokokkygia
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
That's cool, I'm still sure I'm the only one to make that song with it. :P And you have a cool grandma!

Why not provide an option for dynamics? That would solve both problems.

_________________
Image
Questions? Comments? Concerns? Friendly banter? Feel free to click the "PM" button below!


Fri Feb 17, 2012 1:31 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Sleet: Well you can be the first one to make elaborate song with it, because other people did so far simple tunes, so there's still a chance for you! :D

As for dynamics, let me quote part of my earlier post:
Quote:
Code:
.....
%n   = set the volume, n is an alphabet letter
.....


I was under impression that you knew about this and simply wanted for all waveforms to have same volume (instead of amplitude) at the same volume level. For not %n sets the amplitude, where a is lowest, Z is highest.

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Fri Feb 17, 2012 1:41 pm
Profile WWW
Bringing Foxy Back
User avatar

Joined: Thu Apr 29, 2010 1:32 am
Posts: 15547
Location: Nephelokokkygia
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
I think the same volume would be more conducive to keeping these strings short without loss of information.

_________________
Image
Questions? Comments? Concerns? Friendly banter? Feel free to click the "PM" button below!


Fri Feb 17, 2012 3:24 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Yeah, that's why I'm looking into it. So people don't have to manually change the volume every time they want to use square wave instrument and then change it back. Please be patient though, I'm still releasing alpha versions and there are more issues or not yet implemented features and whole thing is still subject to some heavy changes.

Once I release final 1.0 version, I'll make sure that none of the following versions and additions change behavior of existing features to preserve backwards compatibility, but for now, the behavior of some features is still changing from version to version.

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Fri Feb 17, 2012 3:27 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Update! Download the v0.2.1 again
[+] Added Mac OS X binary, now whole trio Windows+Linux+Mac is supported!
[+] Created official website! Visit http://musicstring.solirax.org

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Sat Feb 18, 2012 10:48 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
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

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Tue Feb 21, 2012 8:32 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Hi again! I already began working on related project: Visual MusicString!
It's an MusicString IDE - GUI application (built with Qt) that will aid you when writing MusicString tunes, for now it mostly acts as simple editor (with tabbed support) and player with visualization, you can download the early version (very little extra functionality, might crash here and there) here:

Download Visual MusicString preview (Windows only)

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Sat Feb 25, 2012 7:44 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Tunes packed into a bunch of ASCII charact
Good news! Visual MusicString is now available also for Linux and MacOS X (actually, I don't think I even showed you the Windows version)! It needs Qt libraries to run though, so make sure to get them (they are included for the Windows version). If you're running one of these two, I'll be grateful if you try them out and tell me if they work fine.

Download Windows Binary
Download Linux Binary
Download Mac Binary

What is Visual MusicString?
It's an IDE (integrated development environment) for the MusicString language, it will aid you in composing your MusicString tunes, creating soundfonts, playing your creations and also exporting them, in nice and friendly user interface!

I'm now officially rolling development versions!

Screenies :3

Image
Image
Image

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Tue Feb 28, 2012 7:45 pm
Profile WWW
User avatar

Joined: Tue Jul 28, 2009 6:00 pm
Posts: 311
Images: 43
Post Re: MusicString - Now with Visual MusicString IDE!
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)

Version 0.2
[+] 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

_________________
Image
hug_overflow.asm wrote:
LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP


Thu Mar 01, 2012 12:30 pm
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 21 posts ] 

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
  • Advertisement
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.