Mustersuche für Nur-Spanisch-VersteherInnen - Teil I
So sieht es am Ende aus:
Es lässt sich sagen: schön. Schön sieht das aus.
Aber das ist erst der Anfang, das dicke Ende wartet vermutlich nur darauf, später unerwartet zuschlagen zu können. Mer schau'n aber trotzdem mal ...
Die große Frage ist, ob dieser Ansatz sinnvoll ist, oder ob es sinnvollere gibt (auch wenn er nicht unsinnvoll sein sollte [Grad der Sinnvolligkeit wäre evtl. auch noch zu definieren]).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wenn ohnehin alle Suchmuster durchprobiert werden sollen - und das ist das bisherige Vorhaben an dieser Stelle -, brauchen sie nicht vorsortiert zu werden. Es wird aber nicht dabei bleiben, alle Suchmuster für sinnvoll zu erachten. Zum Beispiel könnte ich mir vorstellen, daß mindestens alle Suchmuster, die länger als der Suchstring/2 sind, wegfallen können - ggf. bei Erhalt des Suchmusters, was genauso lang wie der Suchstring ist (jedenfalls für theoretisches Erörterli, oso; für die Praxis werden mutmaßlich nur Suchstrings interessant sein, die mindestens viermal vorkommen können ... mal schau'n ...).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Von jetzt an wird's aber wohl schwierig ... mal guggeguccilii ...
...
Noch ein bissi weiter vorbereitet (jedenfalls denke - ohne es zu wissen - ich mir, dass es so besser ist als Ausgangslage ;-) ):
143 rows × 2 columns
117 rows × 2 columns
Zwar nicht ganz schlecht, nur: So komme ich nicht weiter!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
G C Am Em F C Am Em G C Am Em F G C Am Em F C Am Em G C Am Em G C Am Em F C Am Em G C Am G C Am Em F C Am Em G C G C Am Em F C Am Em G G C Am Em F C Am Em G C Am Em F C Am G C Am Em F C G C Am Em F G C Am Em G C Am G C G C Am Em F C Am Em G C Am Em F C Am Em F C Am Em G C Am Em C Am Em F C Am Em G C Am C Am Em F C Am Em G C C Am Em F C Am Em G C Am Em F C Am Em C Am Em F C Am C Am Em F C C Am Em F C Am Em C Am C Am Em F C Am Em G C Am Em F Am Em F C Am Em G C Am Em Am Em F C Am Em G C Am Am Em F C Am Em G C Am Em F C Am Em G Am Em F C Am Em Am Em F C Am Am Em F C Am Em F Am Em Am Em F C Am Em G C Am Em F Em F C Am Em G C Am Em Em F C Am Em G C Am Em F C Am Em G C Em F C Am Em G Em F C Am Em Em F C Am Em F C Em F Em F C Am Em G C Am Em F F C Am Em G C Am Em F C Am Em G C Am F C Am Em G C F C Am Em G F C Am Em F C Am F C F C Am Em G C Am Em F C Am Em G C Am Em C Am Em G C Am C Am Em G C C Am Em G C Am Em C Am C Am Em G C Am Em F Am Em G C Am Em Am Em G C Am Am Em G C Am Em G Am Em Am Em G C Am Em F Em G C Am Em Em G C Am Em G C Em G Em G C Am Em F G C Am Em G C Am G C G C Am Em F C Am Em C Am C Am Em F Am Em Am Em F Em F
Es lässt sich sagen: schön. Schön sieht das aus.
Aber das ist erst der Anfang, das dicke Ende wartet vermutlich nur darauf, später unerwartet zuschlagen zu können. Mer schau'n aber trotzdem mal ...
Aktueller + bisheriger Stand
#!/usr/bin/env python
# coding: utf-8
# In[1]:
# Datei öffnen und einlesen
template = open('/home/zarko/Dokumente/mma-Files/chord-templates/regular-templates/NeuesTemplate.mma','r')
# In[2]:
import re
chords = []
muster = re.compile('^[0-9].*')
for zeile in template:
if muster.match(zeile):
zeile_rstrp = zeile.rstrip()
chord = re.sub(r'^[0-9]+[^a-zA-Z]+([a-zA-Z].*$)',r'\1',zeile_rstrp)
print(chord)
chords.append(chord)
# In[3]:
# Datei schließen
template.close()
# In[4]:
chords
# In[5]:
progression_fund = ""
for akkord in chords:
progression_fund = progression_fund + akkord + "\t"
progression_fund = progression_fund.rstrip()
progression_fund
# In[9]:
# Alle möglichen Suchmuster erstellen
import time
suchmuster = []
chords_temp = chords.copy()
removes = len(chords_temp)
for n in range(removes):
newlist = chords_temp.copy()
nl_removes = len(newlist)
for m in range(nl_removes):
suchmuster_temp = ""
for akkord in newlist:
suchmuster_temp = suchmuster_temp + akkord + "\t"
suchmuster_temp = suchmuster_temp.rstrip()
suchmuster.append(suchmuster_temp)
newlist.pop()
chords_temp.remove(chords_temp[0])
# In[10]:
type(suchmuster)
# In[11]:
chords
# In[12]:
for muster in suchmuster:
print(muster,"\n")
Die große Frage ist, ob dieser Ansatz sinnvoll ist, oder ob es sinnvollere gibt (auch wenn er nicht unsinnvoll sein sollte [Grad der Sinnvolligkeit wäre evtl. auch noch zu definieren]).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Diese Suchmuster entdubliziert und nummeriert (aber nicht sortiert):
suchmuster = list(set(suchmuster))
for musterno in range(len(suchmuster)):
print("Muster-Nummero: ", musterno,"\n\n", suchmuster[musterno], "\n\n")
Ergibt (Ende der Ausgabe):
Muster-Nummero: 4607 F C Am Em G C Am Em G C Am Em C Am Em G C Am Em G C Am Em F C Am Em Muster-Nummero: 4608 Em G C Am Em G C Am Em C Am Em G C Am Em G Muster-Nummero: 4609 Am Em G C Am Em C Am Em F C Am Em G C Am Em F C Am Em G C Am Em G C Am Em C Am Em G C Am Em G C Am Em F C Am Em G C Am Em F C Am Em G Muster-Nummero: 4610 C Am Em F C Am Em G C Am Em G C Am Em G C Am Em G C Am Em C Am Em F C Am Em G C Am Em F C Am Em G C Am Em G C Am Em C Am Em G C Am Em G C Am Em F C Am
Wenn ohnehin alle Suchmuster durchprobiert werden sollen - und das ist das bisherige Vorhaben an dieser Stelle -, brauchen sie nicht vorsortiert zu werden. Es wird aber nicht dabei bleiben, alle Suchmuster für sinnvoll zu erachten. Zum Beispiel könnte ich mir vorstellen, daß mindestens alle Suchmuster, die länger als der Suchstring/2 sind, wegfallen können - ggf. bei Erhalt des Suchmusters, was genauso lang wie der Suchstring ist (jedenfalls für theoretisches Erörterli, oso; für die Praxis werden mutmaßlich nur Suchstrings interessant sein, die mindestens viermal vorkommen können ... mal schau'n ...).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Update
Ist ja easy-peasy bis jetzt. Der folgende Code:
import pandas as pf
musterfunde = []
for suchstring in suchmuster:
suchstring_regex = re.compile(suchstring)
# print(suchstring_regex, "\n")
fundzahl = len(re.findall(suchstring_regex,progression_fund))
# print("Anzahl der gefundenen Muster: ", fundzahl, "\n")
musterfunde.append([fundzahl,suchstring])
musterfunde_df = pd.DataFrame(musterfunde, columns=['fundzahl', 'muster'])
musterfunde_df.sort_values(by=['fundzahl'], ascending=False)
gibt das folgende aus (Ausschnitt!):
fundzahl | muster | |
---|---|---|
2514 | 27 | Em |
575 | 27 | Am |
1953 | 25 | C\tAm |
213 | 25 | C |
784 | 25 | C\tAm\tEm |
4599 | 25 | Am\tEm |
93 | 16 | G |
2487 | 14 | Am\tEm\tG |
4597 | 14 | C\tAm\tEm\tG |
161 | 14 | Em\tG |
1843 | 13 | Em\tG\tC |
4009 | 13 | G\tC |
1160 | 13 | Am\tEm\tG\tC |
1635 | 13 | G\tC\tAm |
3351 | 13 | Em\tG\tC\tAm |
753 | 13 | G\tC\tAm\tEm |
3048 | 9 | C\tAm\tEm\tG\tC\tAm\tEm |
4591 | 9 | Am\tEm\tG\tC\tAm\tEm |
2749 | 9 | Am\tEm\tG\tC\tAm |
4540 | 9 | C\tAm\tEm\tG\tC\tAm |
267 | 9 | Em\tG\tC\tAm\tEm |
731 | 9 | C\tAm\tEm\tG\tC |
3378 | 8 | Am\tEm\tF |
1525 | 8 | Em\tF |
550 | 8 | C\tAm\tEm\tF |
2430 | 8 | F |
1383 | 7 | Am\tEm\tF\tC\tAm\tEm\tG |
1269 | 7 | C\tAm\tEm\tF\tC |
273 | 7 | F\tC\tAm\tEm\tG |
609 | 7 | Am\tEm\tF\tC\tAm\tEm |
... | ... | ... |
1578 | 1 | Em\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm\tF\t... |
1579 | 1 | Em\tF\tC\tAm\tEm\tG\tAm\tDm\tG\tEm\tAm\tDm\tG\... |
Von jetzt an wird's aber wohl schwierig ... mal guggeguccilii ...
...
Noch ein bissi weiter vorbereitet (jedenfalls denke - ohne es zu wissen - ich mir, dass es so besser ist als Ausgangslage ;-) ):
musterfunde_df = musterfunde_df.sort_values(by=['fundzahl'], ascending=False)
musterfunde_df.loc[musterfunde_df['fundzahl'] > 2]
143 rows × 2 columns
fundzahl | muster | |
---|---|---|
2514 | 27 | Em |
575 | 27 | Am |
1953 | 25 | C\tAm |
213 | 25 | C |
784 | 25 | C\tAm\tEm |
4599 | 25 | Am\tEm |
93 | 16 | G |
2487 | 14 | Am\tEm\tG |
4597 | 14 | C\tAm\tEm\tG |
161 | 14 | Em\tG |
1843 | 13 | Em\tG\tC |
4009 | 13 | G\tC |
1160 | 13 | Am\tEm\tG\tC |
1635 | 13 | G\tC\tAm |
3351 | 13 | Em\tG\tC\tAm |
753 | 13 | G\tC\tAm\tEm |
3048 | 9 | C\tAm\tEm\tG\tC\tAm\tEm |
4591 | 9 | Am\tEm\tG\tC\tAm\tEm |
2749 | 9 | Am\tEm\tG\tC\tAm |
4540 | 9 | C\tAm\tEm\tG\tC\tAm |
267 | 9 | Em\tG\tC\tAm\tEm |
731 | 9 | C\tAm\tEm\tG\tC |
3378 | 8 | Am\tEm\tF |
1525 | 8 | Em\tF |
550 | 8 | C\tAm\tEm\tF |
2430 | 8 | F |
1383 | 7 | Am\tEm\tF\tC\tAm\tEm\tG |
1269 | 7 | C\tAm\tEm\tF\tC |
273 | 7 | F\tC\tAm\tEm\tG |
609 | 7 | Am\tEm\tF\tC\tAm\tEm |
... | ... | ... |
3742 | 3 | F\tC\tAm\tEm\tG\tC\tAm\tEm\tF\tC |
4360 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm |
1135 | 3 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF\tC |
3314 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm |
1653 | 3 | Am\tEm\tG\tC\tAm\tEm\tF\tC\tAm |
4034 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm |
1470 | 3 | Am\tEm\tG\tC\tAm\tEm\tC |
874 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tC |
230 | 3 | G\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm |
1187 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tA... |
3200 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm\tG |
3175 | 3 | C\tAm\tEm\tC |
1738 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC |
3188 | 3 | Am\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm |
690 | 3 | Am\tEm\tG\tC\tAm\tEm\tC\tAm |
3107 | 3 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm |
4255 | 3 | F\tC\tAm\tEm\tG\tC\tAm\tEm\tF |
2676 | 3 | Am\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF\tC |
2719 | 3 | Am\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm |
1329 | 3 | Am\tEm\tG\tC\tAm\tEm\tC\tAm\tEm |
1796 | 3 | G\tC\tAm\tEm\tC |
2186 | 3 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF |
378 | 3 | Em\tG\tC\tAm\tEm\tC\tAm\tEm |
4141 | 3 | Am\tEm\tC\tAm |
1543 | 3 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tA... |
979 | 3 | Em\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF |
1618 | 3 | Em\tG\tC\tAm\tEm\tF\tC\tAm\tEm\tG |
3117 | 3 | Am\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm |
4263 | 3 | C\tAm\tEm\tC\tAm\tEm |
693 | 3 | G\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC |
Sackgasse! Ich habe es schon geahnt!
uniques = []
for fundzahl in range(max(musterfunde_df['fundzahl'])):
list_2check = musterfunde_df.loc[musterfunde_df['fundzahl'] == fundzahl]
print("Fundzahl = ", fundzahl)
# time.sleep(11)
if len(list_2check) > 0:
string_2check = list_2check.sort_values(by=['musterlaenge'], ascending=False).head(1)['muster'].values[0]
print(string_2check, "\n")
uniques.append([string_2check,fundzahl])
for object_2check in list_2check['muster']:
print("Objekt ist: ", object_2check, "\n")
if object_2check not in string_2check:
print("Hippihippi-huuuraaayyy!!\n")
uniques.append([object_2check,fundzahl])
uniques
uniques_df = pd.DataFrame(uniques, columns=['muster','fundzahl'])
uniques_df = uniques_df.sort_values(by=['fundzahl'], ascending=False)
uniques_df
117 rows × 2 columns
muster | fundzahl | |
---|---|---|
116 | C\tAm\tEm | 25 |
115 | G | 16 |
114 | C\tAm\tEm\tG | 14 |
113 | G\tC\tAm | 13 |
112 | G\tC\tAm\tEm | 13 |
111 | Em\tG\tC\tAm | 13 |
110 | Am\tEm\tG\tC | 13 |
109 | C\tAm\tEm\tG\tC\tAm\tEm | 9 |
108 | C\tAm\tEm\tF | 8 |
107 | C\tAm\tEm\tF\tC\tAm\tEm\tG | 7 |
104 | F\tC\tAm\tEm\tG\tC\tAm | 6 |
103 | Am\tEm\tF\tC\tAm\tEm\tG\tC | 6 |
105 | F\tC\tAm\tEm\tG\tC\tAm\tEm | 6 |
106 | Em\tF\tC\tAm\tEm\tG\tC\tAm | 6 |
102 | C\tAm\tEm\tG\tC\tAm\tEm\tF | 5 |
92 | Em\tC\tAm\tEm | 4 |
82 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm | 4 |
83 | G\tC\tAm\tEm\tF\tC\tAm | 4 |
84 | Em\tG\tC\tAm\tEm\tG\tC | 4 |
85 | Em\tG\tC\tAm\tEm\tF\tC\tAm | 4 |
86 | G\tC\tAm\tEm\tG\tC | 4 |
87 | Am\tEm\tG\tC\tAm\tEm\tF\tC | 4 |
89 | Em\tG\tC\tAm\tEm\tG | 4 |
90 | Em\tG\tC\tAm\tEm\tF\tC | 4 |
91 | G\tC\tAm\tEm\tF\tC\tAm\tEm | 4 |
88 | Em\tC | 4 |
93 | G\tC\tAm\tEm\tG\tC\tAm\tEm | 4 |
95 | Em\tG\tC\tAm\tEm\tG\tC\tAm | 4 |
96 | Em\tC\tAm | 4 |
97 | G\tC\tAm\tEm\tG | 4 |
... | ... | ... |
7 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm | 2 |
6 | Em\tC\tAm\tEm\tG\tC | 2 |
22 | C\tAm\tEm\tG\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tA... | 2 |
4 | Em\tG\tC\tAm\tEm\tG\tC\tAm\tEm\tC\tAm | 2 |
3 | Em\tC\tAm\tEm\tG\tC\tAm\tEm | 2 |
2 | G\tC\tAm\tEm\tG\tC\tAm\tEm\tC\tAm\tEm | 2 |
21 | Am\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm | 2 |
29 | Em\tG\tC\tAm\tEm\tG\tC\tAm\tEm\tC\tAm\tEm | 2 |
23 | Am\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC | 2 |
24 | G\tC\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tF | 2 |
44 | Dm\tG\tEm | 2 |
43 | Em\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC | 2 |
42 | C\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm\tC\tAm | 2 |
41 | Em\tC\tAm\tEm\tG | 2 |
40 | Am\tDm\tG\tEm | 2 |
39 | Em\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm | 2 |
38 | F\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm | 2 |
37 | Am\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm | 2 |
36 | F\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm | 2 |
35 | Am\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm\tC | 2 |
34 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG | 2 |
33 | Em\tC\tAm\tEm\tG\tC\tAm | 2 |
32 | Am\tDm\tG | 2 |
31 | G\tC\tAm\tEm\tG\tC\tAm\tEm\tC | 2 |
30 | Am\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm\tC\tAm | 2 |
28 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC | 2 |
27 | Am\tDm | 2 |
26 | Em\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tAm\tEm | 2 |
25 | Em\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG | 2 |
0 | C\tAm\tEm\tF\tC\tAm\tEm\tG\tC\tAm\tEm\tG\tC\tA... | 1 |
Zwar nicht ganz schlecht, nur: So komme ich nicht weiter!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Update
import re
uniques_fc_onob = [] # Muster, die mit dem ersten Akkord beginnen und ungerade Taktzahl besitzen
uniques_fc_enob = [] # Muster, die mit dem ersten Akkord beginnen und gerade Taktzahl besitzen
fc = re.sub(r'^([^\t]+).*$', r'\1', progression_fund)
for index, row in uniques_df.iterrows():
muster_tmp = row.muster
nob_tmp = re.sub(r'[^\t]+', r'C', muster_tmp)
nob_tmp = re.sub(r'[\t]', r'', nob_tmp)
nob_tmp = len(nob_tmp)
if muster_tmp.startswith(fc):
print('Helau!\n')
print(muster_tmp, "\n")
print(nob_tmp, "\n")
# Ist es eine ungerade Zahl an Takten?
if nob_tmp % 2 != 0:
uniques_fc_onob.append([muster_tmp, row.fundzahl])
else:
uniques_fc_enob.append([muster_tmp, row.fundzahl])
for chords in uniques_fc_enob:
print(chords[1], "mal\t", chords[0], "\n")
bringt (Ausschnitt):
8 mal F Em7 A7 Dm Dm Bb 4 mal F F 4 mal F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F 4 mal F Em7 A7 Dm Dm Bb Gm C 2 mal F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm 2 mal F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb 2 mal F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm
Und:
for chords in uniques_fc_enob:
chordstring_tmp = chords[0]
for wdh in range(11):
if chordstring_tmp in progression_fund:
if wdh > 0:
print(wdh, "mal Wiederholung. Aber Hallo!\n")
print(chordstring_tmp, "\n")
chordstring_tmp = chordstring_tmp + "\t" + chordstring_tmp
bringt:
1 mal Wiederholung. Aber Hallo! F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F 1 mal Wiederholung. Aber Hallo! F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C 1 mal Wiederholung. Aber Hallo! F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb 1 mal Wiederholung. Aber Hallo! F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F 1 mal Wiederholung. Aber Hallo! F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb 1 mal Wiederholung. Aber Hallo! F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C F F Em7 A7 Dm Dm Bb C7 Bb F C Dm G7 Bb F Em7 A7 Dm Dm Bb Gm C F Em7 A7 Dm Dm Bb Gm C
Sowie:
for chords in uniques_fc_onob: chordstring_tmp = chords[0] for wdh in range(11): if chordstring_tmp in progression_fund: if wdh > 0: print(wdh, "mal Wiederholung. Aber Hallo!\n") print(chordstring_tmp, "\n") chordstring_tmp = chordstring_tmp + "\t" + chordstring_tmp
bringt:
1 mal Wiederholung. Aber Hallo! F F
Wir sind damit übrigens bei Yesterday von Paul McCartney gelandet.
Ich glaube, ein bisschen ist es damit dann doch noch weitergegehet, oso.
Kommentare
Kommentar veröffentlichen