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.pl

use strict;
use warnings;



# Variablen

my %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 erfragen

print "\nWelcher Grundton? (C, D, E, F, G, A oder B mit - oder + angeben!)\n";
my $grundton_init = <STDIN>;
chomp $grundton_init;

## Vier Zufallsprogressionen mit Steckverbindung

for ( 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!)
E

Der Stecker sei: 0 => E!



Die ausgewählte Progression hat die Nummer: 3.



Scalar Progression: 24
Progressions-Takt Nr.: 1

Der Akkord zum Grundton E ist:

E-DurMaj7
E
A-
B
E-


Scalar Progression: 24
Progressions-Takt Nr.: 2

Der Akkord zum Grundton E ist:

E-DurMaj7
E
A-
B
E-


Scalar Progression: 24
Progressions-Takt Nr.: 3

Der Akkord zum Grundton E ist:

E-Moll7
E
G
B
D


Scalar Progression: 24
Progressions-Takt Nr.: 4

Der Akkord zum Grundton B ist:

B-Dur7
B
E-
G-
A


Scalar Progression: 24
Progressions-Takt Nr.: 5

Der Akkord zum Grundton D ist:

D-DurMaj7
D
G-
A
D-


Scalar Progression: 24
Progressions-Takt Nr.: 6

Der Akkord zum Grundton D ist:

D-DurMaj7
D
G-
A
D-


Scalar Progression: 24
Progressions-Takt Nr.: 7

Der Akkord zum Grundton E- ist:

E--Moll7
E-
G-
B-
D-


Scalar Progression: 24
Progressions-Takt Nr.: 8

Der Akkord zum Grundton A ist:

A-Dur7
A
D-
E
G


Scalar Progression: 24
Progressions-Takt Nr.: 9

Der Akkord zum Grundton C ist:

C-DurMaj7
C
E
G
B


Scalar Progression: 24
Progressions-Takt Nr.: 10

Der Akkord zum Grundton C ist:

C-DurMaj7
C
E
G
B


Scalar Progression: 24
Progressions-Takt Nr.: 11

Der Akkord zum Grundton C ist:

C-Moll7
C
E-
G
B-


Scalar Progression: 24
Progressions-Takt Nr.: 12

Der Akkord zum Grundton G ist:

G-Dur7
G
B
D
F


Die Buchse ist:

G
B
D
F



Der Stecker sei: 3 => F!



Die ausgewählte Progression hat die Nummer: 2.



Scalar Progression: 16
Progressions-Takt Nr.: 1

Der Akkord zum Grundton F ist:

F-DurMaj7
F
A
C
E


Scalar Progression: 16
Progressions-Takt Nr.: 2

Der Akkord zum Grundton D ist:

D-Moll7
D
F
A
C


Scalar Progression: 16
Progressions-Takt Nr.: 3

Der Akkord zum Grundton G ist:

G-Moll7
G
B-
D
F


Scalar Progression: 16
Progressions-Takt Nr.: 4

Der Akkord zum Grundton C ist:

C-Dur7
C
E
G
B-


Scalar Progression: 16
Progressions-Takt Nr.: 5

Der Akkord zum Grundton A ist:

A-Moll7
A
C
E
G


Scalar Progression: 16
Progressions-Takt Nr.: 6

Der Akkord zum Grundton D ist:

D-Dur7
D
G-
A
C


Scalar Progression: 16
Progressions-Takt Nr.: 7

Der Akkord zum Grundton G ist:

G-Moll7
G
B-
D
F


Scalar Progression: 16
Progressions-Takt Nr.: 8

Der Akkord zum Grundton C ist:

C-Dur7
C
E
G
B-


Die Buchse ist:

C
E
G
B-



Der Stecker sei: 0 => C!



Die ausgewählte Progression hat die Nummer: 1.



Scalar Progression: 8
Progressions-Takt Nr.: 1

Der Akkord zum Grundton D ist:

D-Moll7
D
F
A
C


Scalar Progression: 8
Progressions-Takt Nr.: 2

Der Akkord zum Grundton G ist:

G-Dur7
G
B
D
F


Scalar Progression: 8
Progressions-Takt Nr.: 3

Der Akkord zum Grundton C ist:

C-DurMaj7
C
E
G
B


Scalar Progression: 8
Progressions-Takt Nr.: 4

Der Akkord zum Grundton C ist:

C-DurMaj7
C
E
G
B


Die Buchse ist:

C
E
G
B



Der Stecker sei: 2 => G!



Die ausgewählte Progression hat die Nummer: 3.



Scalar Progression: 24
Progressions-Takt Nr.: 1

Der Akkord zum Grundton G ist:

G-DurMaj7
G
B
D
G-


Scalar Progression: 24
Progressions-Takt Nr.: 2

Der Akkord zum Grundton G ist:

G-DurMaj7
G
B
D
G-


Scalar Progression: 24
Progressions-Takt Nr.: 3

Der Akkord zum Grundton G ist:

G-Moll7
G
B-
D
F


Scalar Progression: 24
Progressions-Takt Nr.: 4

Der Akkord zum Grundton D ist:

D-Dur7
D
G-
A
C


Scalar Progression: 24
Progressions-Takt Nr.: 5

Der Akkord zum Grundton F ist:

F-DurMaj7
F
A
C
E


Scalar Progression: 24
Progressions-Takt Nr.: 6

Der Akkord zum Grundton F ist:

F-DurMaj7
F
A
C
E


Scalar Progression: 24
Progressions-Takt Nr.: 7

Der Akkord zum Grundton G- ist:

G--Moll7
G-
A
D-
E


Scalar Progression: 24
Progressions-Takt Nr.: 8

Der Akkord zum Grundton C ist:

C-Dur7
C
E
G
B-


Scalar Progression: 24
Progressions-Takt Nr.: 9

Der Akkord zum Grundton E- ist:

E--DurMaj7
E-
G
B-
D


Scalar Progression: 24
Progressions-Takt Nr.: 10

Der Akkord zum Grundton E- ist:

E--DurMaj7
E-
G
B-
D


Scalar Progression: 24
Progressions-Takt Nr.: 11

Der Akkord zum Grundton E- ist:

E--Moll7
E-
G-
B-
D-


Scalar Progression: 24
Progressions-Takt Nr.: 12

Der Akkord zum Grundton B- ist:

B--Dur7
B-
D
F
A-


Die Buchse ist:

B-
D
F
A-

Kommentare

Beliebte Posts aus diesem Blog

·

Es brennt.

Bye, bye Nord Stream 2!