Der Wahnsinn bekommt Flügel
Der Wahnsinn bekommt Flügel!
Das Folgende zum Thema "Die Leute mit 'gefährlichem' Halbwissen".
Ich habe mir einen umständlichen Code geschrieben, weil ich heute nacht zu faul war, mir mehr Gedanken als nötig zu machen. Nich umständlich für mich, nur für den Computer ... aber führt zum Ziel bzw. ermöglicht interessante Zwischenziele.
Code
#!/usr/bin/perl
# rythmcreator-1.0.pl
use strict;
use warnings;
use bigrat;
use Storable qw(store retrieve);
# Variablen
my @values = (1,2,4,8,16);
# Programm
# Pattern für 2/4 Takt erzeugen
my %rythms;
for ( my $i = 1; $i < 1111; $i++ ) {
my $one = 1/2;
my @rythm;
until ( $one < 0 ) {
my $value_choice = int rand(scalar @values);
my $value = $values[$value_choice];
push @rythm, $value;
$one = $one - 1/$value;
}
print map { $_, ":" } @rythm;
print "\n";
print "Mein Rest: $one\n";
my $last_val_choice = scalar @rythm - 1;
my $last_val = 1/$rythm[$last_val_choice];
print "Mein letzter Wert: $last_val\n";
if ( abs($one) == $last_val ) {
print "Der letzte Wert ist genauso groß wie der Rest!\n";
pop @rythm;
my $rythmstring = join ( ":", map { $_ } @rythm );
print "Mein Rythmusstring: $rythmstring\n";
if ( not exists $rythms{$rythmstring} ) { $rythms{$rythmstring} = [@rythm] }
} elsif ( abs($one) < $last_val ) {
print "Der letzte Wert ist größer als der Rest!\n";
}
print "\n";
}
print "Anzahl der ermittelten Rythmen: ", scalar keys %rythms, "\n\n";
## Array of Arrays erzeugen
my @pattern_2half;
foreach ( keys %rythms ) {
my $array_temp_ref = $rythms{$_};
my @array_temp = @$array_temp_ref;
foreach ( @array_temp ) {
$_ = "1-".$_;
}
push @pattern_2half, [@array_temp];
}
foreach ( @pattern_2half ) {
print @$_, "\n";
}
store \@pattern_2half, 'pattern_2half.str';
# Pattern für 4/4 Takt erzeugen
%rythms = ();
for ( my $i = 1; $i < 11111; $i++ ) {
my $one = 1/1;
my @rythm;
until ( $one < 0 ) {
my $value_choice = int rand(scalar @values);
my $value = $values[$value_choice];
push @rythm, $value;
$one = $one - 1/$value;
}
print map { $_, ":" } @rythm;
print "\n";
print "Mein Rest: $one\n";
my $last_val_choice = scalar @rythm - 1;
my $last_val = 1/$rythm[$last_val_choice];
print "Mein letzter Wert: $last_val\n";
if ( abs($one) == $last_val ) {
print "Der letzte Wert ist genauso groß wie der Rest!\n";
pop @rythm;
my $rythmstring = join ( ":", map { $_ } @rythm );
print "Mein Rythmusstring: $rythmstring\n";
if ( not exists $rythms{$rythmstring} ) { $rythms{$rythmstring} = [@rythm] }
} elsif ( abs($one) < $last_val ) {
print "Der letzte Wert ist größer als der Rest!\n";
}
print "\n";
}
print "Anzahl der ermittelten Rythmen: ", scalar keys %rythms, "\n\n";
## Array of Arrays erzeugen
my @pattern_4whole;
foreach ( keys %rythms ) {
my $array_temp_ref = $rythms{$_};
my @array_temp = @$array_temp_ref;
foreach ( @array_temp ) {
$_ = "1-".$_;
}
push @pattern_4whole, [@array_temp];
}
foreach ( @pattern_4whole ) {
print @$_, "\n";
}
store \@pattern_4whole, 'pattern_4whole.str';
Lustig, nicht wahr?
Immerhin habe ich mit "bigrat" etwas neues Gutes dazugelernt.
Outputs
Die erste Belegung war:
...
# Pattern für 2/4 Takt erzeugen
%rythms = ();
for ( my $i = 1; $i < 111; $i++ ) {
...
# Pattern für 4/4 Takt erzeugen
%rythms = ();
for ( my $i = 1; $i < 111; $i++ ) {
...
Das hat folgende Mysuke hervorgebracht:
madrythm-1
Die zweite Belegung war:
11111
Und die hat Folgendes zur Folge gehabt:
madrythm-2
Und die dritte Belegung war:
333333*
Und die hat dieses outgeputtet:
madrythm-3
Es lässt sich damit also spielen. Wunnebar!
Das Interessante dürften die zufällig ermittelten Kombinationen in den unteren Regionen der Durchlaufanzahlen sein. Wolle mer da heut' noch einen testen? Ei, warum denn net?!
Probieren wir's mal mit 55 ( 2/4 ) & 222 ( 4/4 ):
madrythm-4
Und, wie kommt's an?
Noch interessanter sind natürlich gezielte Rythmusauswahlen. Außerdem krankt das ganze bisherige System logischerweise daran, daß mit Taktbeginn immer alle Instrumente alle Töne spielen, die sie maximal spielen sollen. Es gibt also noch keinerlei Vorschlags-Rythmen (äh, das heißt sicher anders). Darüber hinaus fehlen noch die in der Musik überaus wichtigen Pausen - falls es noch keifim gemerkt hat. Tja, es gibt noch eine Unmenge zu basteln ... fertig wird das nie werden, no way. Aber solange jeder Schritt weiter noch Spaß macht, darf's von mir aus weitergehen.
Rythm-Creator ist grade fertig geworden mit den
333333
ern:
...
1-161-41-81-161-161-41-161-8
1-41-161-161-41-81-161-161-8
1-81-81-81-81-161-81-161-4
1-161-81-161-81-21-161-16
1-81-161-21-81-161-161-16
1-161-161-21-81-161-161-161-16
1-81-161-41-81-41-161-161-16
1-81-161-81-161-21-161-16
1-41-161-41-161-81-4
1-41-161-41-81-161-81-8
1-21-161-161-161-161-161-161-8
1-81-41-161-161-81-41-161-16
1-81-161-41-21-16
1-41-161-81-161-81-81-81-8
1-161-161-81-41-81-161-161-4
1-81-161-41-41-161-81-8
1-81-161-41-81-81-41-16
1-161-161-41-161-41-81-81-16
1-81-81-161-161-161-81-41-161-8
1-81-81-21-4
1-41-161-41-161-41-8
1-41-161-161-81-41-81-8
1-161-21-161-41-161-16
1-81-161-81-21-81-16
1-161-161-161-81-161-81-41-4
1-81-81-41-81-161-81-81-16
1-161-41-41-41-161-8
1-81-81-41-161-81-161-81-8
1-81-81-161-41-81-161-4
1-81-41-81-41-4
1-81-41-81-81-81-4
1-41-81-81-41-81-8
1-161-81-81-161-81-161-41-81-16
1-161-81-41-81-161-161-161-161-81-16
1-161-41-161-161-21-16
1-21-81-161-161-161-81-16
1-161-161-161-81-161-81-2
Die noch schnell, dann noch die oben angekündigten 55 & 22, dann darf ich etwas ruhen (hoffe ich).
(1)Lionel Messi schießt Traumtor gehen Betis Sevilla - Sport - Süddeutsche.de Anschlag in Neuseeland: Als ginge uns der Terror gegen Muslime nichts an | ZEIT ONLINE
* Für das Herauspulen der 2/4-Takt-Belegungen reichen deutlich weniger. Es gibt insgesamt - so ich nicht irre - 44 Möglichkeiten, die ( so umständlich ) herausgefunden werden müssen.
Kommentare
Kommentar veröffentlichen