|
Written by flavioeverardo
|
|
Tuesday, 01 March 2011 11:08 |
|
Here is Armin, an automatic trance music composition tool that uses Answer Sets Programming as engine and Csound for music synthesis.
This post will explain more about Armin, the progress, two demos of Armin’s composition, future work and more...
About Armin
Armin is a trance music composition algorithm which takes the composition rules represented in a declaratively way (ASP). These rules have the property to model a desired result within the genre and to explore future extended compositions. One feature that is sought is the ability to perform a "valid" musical composition inside the trance genre with its dependencies of the internal parts of a traditional song and percussion and its respective progression between the different sections.
Armin's objective for this first version is not to fully compose a piece of the trance music, but to serve as a "template" both melodic and percussive and other sounds and lately make some post production to this source. Additionally it seeks to explore different outcomes (each answer a set corresponds to a valid piece of music) that have openness within the music style and looking forward to propose variations in its composition completely valid. To generate a new piece of music just ask for a new model or answer set.
Armin can easily compose pieces over one minute long in a short period of time with 4 instruments, 3 from percussions (bass drum, snare and hi hats) and one melodic line (pads). The main function of Armin is the sounds generation which is divided in 3 main sections which are: the results interpretation, instruments generator and the parsers. The results interpretation identifies the parts that are going to be played among the song (intro, verse, chorus, break...).Each part calls the instruments generator which is an ASP file depending on the instrument selected by the rules and finally it calls the parsers to a Csound file. Once the Csound file is complete, is time to render to get the audio file. Additionally Armin provides a WAV to MP3 converter after the Csounds rendering.
Armin receives the name in honor to Armin van Buuren, who stands out as DJ, producer inside the trance genre, founder and owner of Armada Music record label.

Armin First Demos
Armin first demos were tested by composing pieces from over one minute and a half and over two minutes. Two of the best Armin productions are in the links below.
Demo1:
Duration: 1 minutes 56 seconds, built in 12 seconds.
Armin Demo 1
Demo2:
Duration: 2 minutes 25 seconds, built in 15 seconds.
Armin Demo 2
Currently we are working on the musical fills generated by ASP, and some new instruments like the crash and trance winds...
Enjoy!! |
|
Last Updated on Saturday, 19 March 2011 14:18 |
|
Written by flavioeverardo
|
|
Monday, 20 December 2010 23:06 |
|
Hello everyone in this article I'll show you how the trance beats were created from an answer set and how they sound... I've been talking in many other articles of automatic music composition and trance beats and more... but you may be thinking... When I'm going to hear something? Well... you don't have to wait anymore... Here is the secret...
In the last article I presented the Answer Set code of the Bass Drum... and here is the answer:
Answer: 1 playDrum(4,8) playDrum(8,8) playDrum(12,8) playDrum(0,8) playDrum(7,0) playDrum(6,0) playDrum(5,0) playDrum(11,6) playDrum(10,0) playDrum(9,0) playDrum(15,0) playDrum(14,4) playDrum(13,4) playDrum(3,4) playDrum(2,0) playDrum(1,6) SATISFIABLE
This is just only one answer and you can read as: there are 16 "playDrums" the first parameter is the beat number and the second is the amplitude. As you can see the beats 0, 4, 8 and 12 have an amplitude value of 8 (mandatory beats in a 16 times measure). Then, the beats 1 and 11 have an amplitude of 6 (remember that the optional hits have amps between 4-6). The beats 3, 13 and 14 have an amplitude value of 4 and the others (2, 5, 6, 7, 9, 10 and 15) have an amplitude value of 0 which means that there will be no sound during those times.
So... I can guess that you may be concerned about the result and how does this sounds... well... you tell me... here is the audio
How does this works?

Here is an image of how the sound is finally produced... Every answer is taken as the input of the Drums Parser. This parser identifies every hit and its value, and generates a .csd file. Every Csound file generates an audio file. For this single run there were 20 independent fragments/songs of 16 times with the sound of a Bass Drum.
Also when I got this answer, I also asked for 19 more answers in a single run and I got interesting results... Here they are another fragments of this run...
audio 2
audio 3
audio 4
audio 5
Now imagine if we ask to this tool to join this pieces. Joined by certain rules which determine the order and the relevance of appearance during the time of a complete song...
mixdown1
mixdown2
Now imagine... whatever you like... |
|
Last Updated on Saturday, 19 March 2011 13:24 |
|
Automatic Bass Drum Composer |
|
|
|
|
Written by flavioeverardo
|
|
Monday, 13 December 2010 16:49 |
|
Hello there here is the driver for the automatic creation of trance beats... I use Answer Sets Programming to get "n" different answers...
the comments are written in bold and the explanation is given next to the // symbol
%%get the models for the bass drum... mandatory bassDrumHits 1,5,9,13 %%for a 16 notes length
//you can have 16 notes in a 4/4 measure and there are only 4 mandatory hits which are the beat 0, 4, 8 and 12. The others and optional
%%optional hits bassDrumHits(1..3;5..7;9..11;13..15).
%volume (amplitude) values from 4 to 6 or 0 for no hit amplitude(0;4..6). //for the every optional hit an amplitude is given. The amp can be 0 (note off or no kick), 4, 5 or 6.
%%default bassDrum Amplitude = 8 bassDrumAmplitude(8). //for the mandatory hits an amplitude is given as a fact with the value of 8.
%%mandatory BD hits for trance music mandatoryHit(0;4;8;12). //as I mentioned before the mandatory hits are 0, 4, 8 and 12
%% if is mandatory hit... get the amplitude and play it playDrum(X,A) :- bassDrumAmplitude(A), mandatoryHit(X). //for every mandatory hit and the fact amplitude implies play Drum (hit, amp)
%% pick an amplitude and a non mandatory hit... 1{ playDrum(Y,X) : amplitude(X) }1 :- bassDrumHits(Y). //for every optional hit pick and amp and play it...
//hide some facts given in the answer set #hide bassDrumHits(X). #hide amplitude(X). #hide bassDrumAmplitude(X). #hide mandatoryHit(X).
----------------------------------------------------------------------------------------------------------------------------------------
there are many possible results or sets... for example one can be:
Answer: 1 playDrum(4,8) playDrum(8,8) playDrum(12,8) playDrum(0,8) playDrum(7,0) playDrum(6,0) playDrum(5,0) playDrum(11,0) playDrum(10,0) playDrum(9,0) playDrum(15,0) playDrum(14,0) playDrum(13,4) playDrum(3,0) playDrum(2,0) playDrum(1,0) SATISFIABLE
This result tell us that the kick 0, 4, 8 and 12 are played with an amplitude of 8. The other play Drums with a cero in the second parameter means that they will be played but with an amplitude of cero, in other words there are not played in this answer set.
The kick number 13 will be played with an amplitude of 4. So the answer will be
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
x - - - x - - - x - - - x x - -
If you don't like it, just ask for another model... Imagine how many possibilities are, if there are 12 notes that can be on or off? |
|
Last Updated on Monday, 13 December 2010 16:50 |
|
Written by flavioeverardo
|
|
Monday, 11 October 2010 22:06 |
|
Hello everyone here is a new Trance Session... Enjoy it...
to download it just give a rigth click and save the target as...
playlist:
Roger Shah & Sunlounger - Breaking Waves Mark Norman - Actual Events Markus Schulz - Do You Dream Julian Vincent - Here For Me Flavio Everardo - Touch And Sounds Sebastian Brandt - 450 Max Graham - Sun In The Winter Max Graham - nothing else matters Blue Wave, Jorge Nava - Echoes From The Heart Aly & Fila - How Long Paul Webster - The Wolf
Trance Session |
|
Last Updated on Monday, 25 October 2010 21:06 |
|
|