Sign in to follow this  
Alexander Parker

Languages & Graphs

Recommended Posts

Hi All, I am after some initial direction and ideas for a project I wish to undertake in my spare time. I've looked into various dynamic music systems which are based on a single variable, such as "excitement level" or "danger level" to transition through different phases of music. I am trying to take a different approach, and believe that graph algorithms offer a lot of potential for a dynamic music system. Initially I have a few questions which will help me clarify the problem: 1: Does anyone know of any dynamic music systems which currently use graphs to structure musical elements? 2: Which programming or scripting language should I use to maximize the usefulness of the library for third party developers? Ideally I want it to be as easy as possible to glue the library into any project with a minimum of fuss. 3: It's tempting to use Boost as a shortcut for the graph algorithms, has anyone had experience with this and is there a recommended alternative? Is there anything else I need to know before I start getting serious about this? If people here have had experience with other dynamic music systems which work well, I'd be interested to know more. Thanks for any advice in advance. It may just be that I'm chasing stars but if there seems to be a demand and a way, I'll do it.

Share this post


Link to post
Share on other sites
arthurprs    124
2 : Python is the most powerfull to do easy and good results, but i don't know good audio libs for it,

you can also try another options like FreePascal (or Delphi)(Fmod, Bass, OpenAL) or FreeBasic (Fmod, Bass)

both easy to learn and write, maintain, powerfull

C/C++ is always a good option if you have already have experience on it, if not you can also try but its one of the harder to learn write and maintain
keep in mind that you can do everything with another ones that are more easy.


{sorry draft english, from brazil}

Share this post


Link to post
Share on other sites
Kylotan    9881
Quote:
Original post by Alexander Parker
I am trying to take a different approach, and believe that graph algorithms offer a lot of potential for a dynamic music system.

Initially I have a few questions which will help me clarify the problem:

1: Does anyone know of any dynamic music systems which currently use graphs to structure musical elements?


Not personally. Obviously 'graphs' are a big area, and you could mean absolutely anything by this. But what works in your favour is that there are very, very few dynamic music systems anyway.

Quote:
2: Which programming or scripting language should I use to maximize the usefulness of the library for third party developers? Ideally I want it to be as easy as possible to glue the library into any project with a minimum of fuss.


It really needs to be C++ if you want it to be widely used, although anything that can compile to a .dll or .lib is probably sufficient. There is nothing remotely resembling a standard scripting language so don't even consider that path.

Quote:
3: It's tempting to use Boost as a shortcut for the graph algorithms, has anyone had experience with this and is there a recommended alternative?


I have had no experience of the Boost graph algorithms, but then I've never considered graphs to be complicated enough to warrant using a library for them anyway. If they look useful to you, use them. Just don't include Boost stuff in the public interface because nobody wants to be forced to use that monolith if they're not already doing so.

Quote:
Is there anything else I need to know before I start getting serious about this? If people here have had experience with other dynamic music systems which work well, I'd be interested to know more.


Not really. As mentioned, there really aren't that many people attempting dynamic music out there. Most just change the music when you enter a battle and that's about it. I'd keep in mind the burdens upon the composer when having to create music for such a system, the need to present a simple interface to the developer, and a requirement to potentially cooperate with several different audio systems (eg. Fmod, SDL_Mixer, DirectSound).

Share this post


Link to post
Share on other sites
Kylotan, thank you for your response.

Quote:
Obviously 'graphs' are a big area, and you could mean absolutely anything by this.


As a newbie to the concept of a graph I apologise for not yet understanding the terminology to be more precise. I think what I have in mind is a sparse graph with directional links, beyond that I have no idea, I'm still researching into it.

Quote:
But what works in your favour is that there are very, very few dynamic music systems anyway.


That probably explains my minimal success with google. The couple I did find were inadequate and primitive to say the least, "dynamic" seems to mean changing between "peaceful" to "tense" to "battle" and back again, which to me seems very linear.

Quote:
It really needs to be C++ if you want it to be widely used, although anything that can compile to a .dll or .lib is probably sufficient. There is nothing remotely resembling a standard scripting language so don't even consider that path.


I would most likely compile the run time libraries in C++, and I'm aiming for run time compatibility with a wide variety of systems. Once the library is developed to a stable stage, it should be easy to _add_ scripting support, but not enforce it, to increase it's utility amongst developers.

Quote:
I have had no experience of the Boost graph algorithms, but then I've never considered graphs to be complicated enough to warrant using a library for them anyway. If they look useful to you, use them. Just don't include Boost stuff in the public interface because nobody wants to be forced to use that monolith if they're not already doing so.


Thanks for the tip regarding Boost, I will structure the library to be fairly self contained, so people won't need to add Boost if they're not using it, or FMod if they use OpenAL. At least, that is what I hope at this early stage.

As for graphs being uncomplicated, you may be right. To me it seems to be a set of nodes and a set of edges. However I believe there is my niave approach to implementing it, probably based on a few SQL containers and lots of iteration, but hopefully Boost offers a more advanced, more efficient approach. Hopefully :)

Quote:
Not really. As mentioned, there really aren't that many people attempting dynamic music out there. Most just change the music when you enter a battle and that's about it. I'd keep in mind the burdens upon the composer when having to create music for such a system, the need to present a simple interface to the developer, and a requirement to potentially cooperate with several different audio systems (eg. Fmod, SDL_Mixer, DirectSound).


I am involved in work and spare time in both programming and musical composition, so I am mainly developing this for my own needs and to try and find a way to bring together seperate areas of knowledge to produce something useful. I think I have a fairly rounded perspective from a development and composing standpoint, and I will try to reconcile both perspectives during the planning and implementation of this little project.

As for the different audio systems, I hope to design an elegant solution which will either support plugins or allow the developers library of choice to be exposed via a homogeneous interface, hopefully removing the need for heavy reprogramming.

Anyway, some of my questions have been answered very well, thanks. I know at least that there are no commonly used systems that do exactly what I'm proposing, if there were, there wouldn't be a point in doing this.

I will also say no more until I have a plan and some kind of roadmap sorted out, if anyone is interested I'll post any progress / problems here as I get there.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this