The next half half intermediate step (von heut') - wolla!
Die nächste Hälfte ist hiermit immerhin zur Hälfte geschritten (sprich: 3/4 Zwischenschritt ist geschafft!)
Code
#!/usr/bin/perl# konzeptentwickler-2.2.pluse strict;use warnings;# Variablenmy %chordtypes = ( "DurMaj7" => ["DurMaj7", "0", "4", "7", "11"], "Dur7" => ["Dur7", "0", "4", "7", "10"], "MollMaj7" => ["MollMaj7", "0", "3", "7", "11"], "Moll7" => ["Moll7", "0", "3", "7", "10"], "Moll7b5" => ["Moll7b5", "0", "3", "6", "10"], "Dim7" => ["Dim", "0", "3", "6", "9"] );my %chroma = ( "C-" => 0, "C" => 1, "D-" => 2, "D" => 3, "E-" => 4, "E" => 5, "F-" => 5, "F" => 6, "G-" => 7, "G" => 8, "A-" => 9, "A" => 10, "B-" => 11, "B" => 12 ); my %chroma_inv = ( "0" => "C-", "1" => "C", "2" => "D-", "3" => "D", "4" => "E-", "5" => "E", "6" => "F", "7" => "G-", "8" => "G", "9" => "A-", "10" => "A", "11" => "B-", "12" => "B" ); my %progressions = ( "1" => ["2", "Moll7", "7", "Dur7", "0", "DurMaj7", "0", "DurMaj7"], "2" => ["0", "DurMaj7", "9", "Moll7", "2", "Moll7", "7", "Dur7", "4", "Moll7", "9", "Dur7", "2", "Moll7", "7", "Dur7"],
"3" => ["0", "DurMaj7", "0", "DurMaj7", "0", "Moll7", "7", "Dur7",
"10", "DurMaj7", "10", "DurMaj7", "11", "Moll7", "5", "Dur7", "8",
"DurMaj7", "8", "DurMaj7", "8", "Moll7", "3", "Dur7"], "4" => ["0", "DurMaj7", "1", "Dim7", "2", "Moll7", "3", "Dim7", "4", "Moll7", "9", "Dur7"] );my @buchse;my $stecker = "0"; # Programm## Grundton erfragenprint "\nWelcher Grundton? (C, D, E, F, G, A oder B mit - oder + angeben!)\n";my $grundton_init = <STDIN>;chomp $grundton_init;## Vier Zufallsprogressionen mit Steckverbindungfor ( my $round = 1; $round < 5; $round++ ) { ## Stecker, falls Buchse vorhanden (nach erster Runde) if ( $round > 1 ) { $stecker = int rand(scalar @buchse); $grundton_init = $buchse[$stecker] } print "\nDer Stecker sei: $stecker => $grundton_init!\n\n"; ## Progression per Zufall aussuchen my $progression_choice = int rand(scalar keys %progressions) + 1; print "\n\nDie ausgewählte Progression hat die Nummer: $progression_choice.\n\n"; my $progression_ref = $progressions{$progression_choice}; my @progression = @$progression_ref; ### Progression transformieren foreach ( @progression ) { if ( $_ =~ m/^[0-9]+/ ) { $_ = $chroma{$grundton_init} + $_ } if ( $_ =~ m/^[0-9]+/ && $_ > 12 ) { $_ = $_ - 12 } if ( $_ =~ m/^[0-9]+/ ) { $_ = $chroma_inv{$_} } } ### Progression ausdrucken print "\n"; for ( my $p = 0; $p < scalar @progression; $p+=2 ) { print "\nScalar Progression: ", scalar @progression, "\n"; # Ausgabe der Progressions-Taktnummer print "Progressions-Takt Nr.: ", ($p + 2)/2, "\n"; # Akkordtyp, Akkordarray und Grundton pro Schritt ermitteln my $grundton = $progression[$p]; my $chordtype = $progression[$p + 1]; my $chord_ref = $chordtypes{$chordtype}; my @chord = @$chord_ref; ## Akkordbezeichnung $chord[0] = "$grundton-".$chord[0]; ## Akkordtöne for ( my $i = 1; $i < 5; $i++ ) { $chord[$i] = $chroma{$grundton} + $chord[$i]; if ( $chord[$i] > 12 ) { $chord[$i] = $chord[$i] - 12 } $chord[$i] = $chroma_inv{$chord[$i]}; } # Ausgabe der Töne print "\nDer Akkord zum Grundton $grundton ist:\n\n"; print map { $_, "\n" } @chord; print "\n"; # Steckerarray einlesen if ( $p == (scalar @progression) - 2 ) { $buchse[0] = $chord[1]; $buchse[1] = $chord[2]; $buchse[2] = $chord[3]; $buchse[3] = $chord[4] } else { next } } print "\nDie Buchse ist:\n\n"; print map { $_, "\n" } @buchse; print "\n"; print "\n";}Output
Welcher Grundton? (C, D, E, F, G, A oder B mit - oder + angeben!)EDer Stecker sei: 0 => E!Die ausgewählte Progression hat die Nummer: 3.Scalar Progression: 24Progressions-Takt Nr.: 1Der Akkord zum Grundton E ist:E-DurMaj7EA-BE-Scalar Progression: 24Progressions-Takt Nr.: 2Der Akkord zum Grundton E ist:E-DurMaj7EA-BE-Scalar Progression: 24Progressions-Takt Nr.: 3Der Akkord zum Grundton E ist:E-Moll7EGBDScalar Progression: 24Progressions-Takt Nr.: 4Der Akkord zum Grundton B ist:B-Dur7BE-G-AScalar Progression: 24Progressions-Takt Nr.: 5Der Akkord zum Grundton D ist:D-DurMaj7DG-AD-Scalar Progression: 24Progressions-Takt Nr.: 6Der Akkord zum Grundton D ist:D-DurMaj7DG-AD-Scalar Progression: 24Progressions-Takt Nr.: 7Der Akkord zum Grundton E- ist:E--Moll7E-G-B-D-Scalar Progression: 24Progressions-Takt Nr.: 8Der Akkord zum Grundton A ist:A-Dur7AD-EGScalar Progression: 24Progressions-Takt Nr.: 9Der Akkord zum Grundton C ist:C-DurMaj7CEGBScalar Progression: 24Progressions-Takt Nr.: 10Der Akkord zum Grundton C ist:C-DurMaj7CEGBScalar Progression: 24Progressions-Takt Nr.: 11Der Akkord zum Grundton C ist:C-Moll7CE-GB-Scalar Progression: 24Progressions-Takt Nr.: 12Der Akkord zum Grundton G ist:G-Dur7GBDFDie Buchse ist:GBDFDer Stecker sei: 3 => F!Die ausgewählte Progression hat die Nummer: 2.Scalar Progression: 16Progressions-Takt Nr.: 1Der Akkord zum Grundton F ist:F-DurMaj7FACEScalar Progression: 16Progressions-Takt Nr.: 2Der Akkord zum Grundton D ist:D-Moll7DFACScalar Progression: 16Progressions-Takt Nr.: 3Der Akkord zum Grundton G ist:G-Moll7GB-DFScalar Progression: 16Progressions-Takt Nr.: 4Der Akkord zum Grundton C ist:C-Dur7CEGB-Scalar Progression: 16Progressions-Takt Nr.: 5Der Akkord zum Grundton A ist:A-Moll7ACEGScalar Progression: 16Progressions-Takt Nr.: 6Der Akkord zum Grundton D ist:D-Dur7DG-ACScalar Progression: 16Progressions-Takt Nr.: 7Der Akkord zum Grundton G ist:G-Moll7GB-DFScalar Progression: 16Progressions-Takt Nr.: 8Der Akkord zum Grundton C ist:C-Dur7CEGB-Die Buchse ist:CEGB-Der Stecker sei: 0 => C!Die ausgewählte Progression hat die Nummer: 1.Scalar Progression: 8Progressions-Takt Nr.: 1Der Akkord zum Grundton D ist:D-Moll7DFACScalar Progression: 8Progressions-Takt Nr.: 2Der Akkord zum Grundton G ist:G-Dur7GBDFScalar Progression: 8Progressions-Takt Nr.: 3Der Akkord zum Grundton C ist:C-DurMaj7CEGBScalar Progression: 8Progressions-Takt Nr.: 4Der Akkord zum Grundton C ist:C-DurMaj7CEGBDie Buchse ist:CEGBDer Stecker sei: 2 => G!Die ausgewählte Progression hat die Nummer: 3.Scalar Progression: 24Progressions-Takt Nr.: 1Der Akkord zum Grundton G ist:G-DurMaj7GBDG-Scalar Progression: 24Progressions-Takt Nr.: 2Der Akkord zum Grundton G ist:G-DurMaj7GBDG-Scalar Progression: 24Progressions-Takt Nr.: 3Der Akkord zum Grundton G ist:G-Moll7GB-DFScalar Progression: 24Progressions-Takt Nr.: 4Der Akkord zum Grundton D ist:D-Dur7DG-ACScalar Progression: 24Progressions-Takt Nr.: 5Der Akkord zum Grundton F ist:F-DurMaj7FACEScalar Progression: 24Progressions-Takt Nr.: 6Der Akkord zum Grundton F ist:F-DurMaj7FACEScalar Progression: 24Progressions-Takt Nr.: 7Der Akkord zum Grundton G- ist:G--Moll7G-AD-EScalar Progression: 24Progressions-Takt Nr.: 8Der Akkord zum Grundton C ist:C-Dur7CEGB-Scalar Progression: 24Progressions-Takt Nr.: 9Der Akkord zum Grundton E- ist:E--DurMaj7E-GB-DScalar Progression: 24Progressions-Takt Nr.: 10Der Akkord zum Grundton E- ist:E--DurMaj7E-GB-DScalar Progression: 24Progressions-Takt Nr.: 11Der Akkord zum Grundton E- ist:E--Moll7E-G-B-D-Scalar Progression: 24Progressions-Takt Nr.: 12Der Akkord zum Grundton B- ist:B--Dur7B-DFA-Die Buchse ist:B-DFA-
Kommentare
Kommentar veröffentlichen