Generative Fractals
The theory of form is the theory of complimentary inverses. Simply put if there is something bigger than something else, then there is something smaller than something else. In fact those two things exist as a function of each other. Existence itself relies on a thing not being equal to everything else (and so everything else is not equal to it). Given these insights, when given partial information on the state of a closed system we can populate it completely. The algorithm could generate the inverse of that found information in one go , or it would segment itself in a hierarchical manner revealing more and more detail and hence customising the information being generated in the empty space. The segmentation process basically focuses on proportion. We start off with a low resolution of the given information, this reveals a few large areas that are related. The system then groups similar regions according to the nature of the segments (in images this could be the general pixel values of the large segments). If there are three similar segments spaced apart they are grouped as a feature. Geometrically we could represent this in some space as three regions (ill use rectangles) that are a certain distance apart at a certain angle from each other. The rectangles will have this relative alignment to them. Next we take one of those regions and DE pixelate it further to reveal more information. And hence more proportions and rectangles. At each stage of resolution we reveal more proportions and when we stop we marry the found proportions to the elements (pixel values perhaps) that they proportionate. To explain further, if I play a single chord on the guitar, the system will take a low resolution version of the chord and proportionate it (i.e. create more regions like it) according to one of the proportions it learnt during training. It will then increase the resolution of the first chord and duplicate the proportions across the new regions at each layer of resolution. Here we have a feature (the chords ) and we must now generate its inverse. To do that we move a distance D at an angle Q to some part of the empty region away form the feature, And generate a proportion that was learnt to be complementary to that chosen to distribute the chords. It might only be a single rectangle as opposed to the guitars four. Then one of the chords is analysed further to generate more proportions and the algorithm populates the single rectangle with opposing proportions to those, till it generates another instrument. So we might generate a snare hit at that point. This would be because during training, snare hits were found to contrast strongly with guitar timbre, and topologies of 3 were found to contrast with those of 1 rectangle. Note that the hierarchy of geometries of the guitar will each complement with a certain aspect of the snare, and generate that part of it, till the whole snare is built. Now we take a step back and consider the guitar and the snare as one combined feature. At a distance D and at an angle Q we generate the inverse of that feature. And next we take that new feature and one of either the guitar or the snare to generate yet another feature. This carries on till we have populated the entire space. Note that once we have generated a feature, we remove from memory information about its proportions to free up space and focus only on those features necessary to generate the next feature. If we need that information once more we analyse it again by altering its level of resolution. This makes the algorithm more manageable. To train the system to recognise which proportions complement each other we take the real objects and segment them into proportions in a hierarchical manner. Then at each stage of resolution we associate contrasting regions and similar regions. Then focus on one pair and remove from memory the rest and analyse them. This process is iterated on these features to the features that make them up. Similar to a depth first search, where we only reveal nodes relevant, to an increasing level of detail. This avoids an explosion of variables. Then each feature and inverse is related by a distance and an angle. The information we would like to keep is the relationship between the topology of a feature, its inverse and its separation from it. As we add more training examples we divorce topologies form their associated hierarchical connections and combine them in different ways as motifs come and go. Those motifs that correlate more will have stronger connections than the weaker ones. During operation generating new objects would include and be constrained by what relationships were found in the traing example. To avoid the disadvantages of the Bayesian approach, we create a space which contains these rectangles, and form a tree with each song between them. These rectangles are then linked to each other. This is feasible because it means we will not duplicate proportions within the space. If in the hierarchy of a song we encounter similar proportions lower down a tree to what we found higher up it will be viewed as the same proportion, and a duplicate will not be created, saving space. Again as we analyse the real objects we do so in phases so there is no explosion of variables.
The training process needs more work though.
This generative principle will be able to generate a whole song together with custom vocals and custom lyrics.
Comments
Post a Comment