#cs ----------------------------------------------------------------------------

	AutoIt Version: 3.3.6.1
	Author:         Aquaplant

	Script Function:
	Gibt das Intervall aus.
	_Intervall(1. Ton, 2. Ton)
	liefert das Intervall ausgeschrieben, als Zahl und die Halbtonschritte mit "|" abgegrenzt
	bei Vorzeichen entweder ausschreiben oder hinter den Ton ein b/# setzen: Cis = C#, Des = Db

	Beispiel:

	MsgBox(0, "Intervall zwischen h und gis", _Intervall("h", "g#"))

#ce ----------------------------------------------------------------------------


Dim $Intervalle[16] = [0, "C", "D", "E", "F", "G", "A", "H", "C", "D", "E", "F", "G", "A", "H", "C"]
Dim $sI[13] = [0, "Prime", "Sekunde", "Terz", "Quarte", "Quinte", "Sexte", "Septime", "Oktave", "None", "Dezime", "Unodezime", "Duodezime"]
Dim $sIP[6] = [0, "verminderte ", "kleine ", "reine ", "große ", "übermäßige "]

Func _Intervall($Ton1, $Ton2)
	$1Ton = $Ton1
	$2Ton = $Ton2
	$Ton1 = StringLeft($Ton1, 1)
	$Ton2 = StringLeft($Ton2, 1)
	If $Ton1 = "B" Then
		$Ton1 = "H"
	EndIf
	If $Ton2 = "B" Then
		$Ton2 = "H"
	EndIf
	$i = 0
	$j = 0
	While 1
		$i += 1
		If $Intervalle[$i] = $Ton1 Then
			$j = $i
			ExitLoop
		EndIf
	WEnd
	For $i = $j To 8 + $j
		If $Intervalle[$i] = $Ton2 Then
			$iIntervall = $i - $j + 1
			ExitLoop
		EndIf
	Next
	$HTS = _Halbtone($1Ton, $2Ton)
	Return _Intervalle($iIntervall, $HTS) & "|" & $iIntervall & "|" & $HTS
EndFunc   ;==>_Intervall

Func _Intervalle($iIntervall, $HTS)
	If $iIntervall = 1 Then
		If $HTS = 0 Then
			Return $sIP[3] & $sI[1]
		EndIf
		If $HTS = 1 Or $HTS = -11 Then
			Return $sIP[5] & $sI[1]
		EndIf
		If $HTS = -1 Or $HTS = 11 Then
			Return $sIP[1] & $sI[1]
		EndIf
	EndIf
	If $iIntervall = 2 Then
		If $HTS = 0 Then
			Return $sIP[1] & $sI[2]
		EndIf
		If $HTS = 1 Then
			Return $sIP[2] & $sI[2]
		EndIf
		If $HTS = 2 Then
			Return $sIP[4] & $sI[2]
		EndIf
		If $HTS = 3 Then
			Return $sIP[5] & $sI[2]
		EndIf
	EndIf
	If $iIntervall = 3 Then
		If $HTS = 2 Then
			Return $sIP[1] & $sI[3]
		EndIf
		If $HTS = 3 Then
			Return $sIP[2] & $sI[3]
		EndIf
		If $HTS = 4 Then
			Return $sIP[4] & $sI[3]
		EndIf
		If $HTS = 5 Then
			Return $sIP[5] & $sI[3]
		EndIf
	EndIf
	If $iIntervall = 4 Then
		If $HTS = 4 Then
			Return $sIP[1] & $sI[4]
		EndIf
		If $HTS = 5 Then
			Return $sIP[3] & $sI[4]
		EndIf
		If $HTS = 6 Then
			Return $sIP[5] & $sI[4]
		EndIf
	EndIf
	If $iIntervall = 5 Then
		If $HTS = 6 Then
			Return $sIP[1] & $sI[5]
		EndIf
		If $HTS = 7 Then
			Return $sIP[3] & $sI[5]
		EndIf
		If $HTS = 8 Then
			Return $sIP[5] & $sI[5]
		EndIf
	EndIf
	If $iIntervall = 6 Then
		If $HTS = 7 Then
			Return $sIP[1] & $sI[6]
		EndIf
		If $HTS = 8 Then
			Return $sIP[2] & $sI[6]
		EndIf
		If $HTS = 9 Then
			Return $sIP[4] & $sI[6]
		EndIf
		If $HTS = 10 Then
			Return $sIP[5] & $sI[6]
		EndIf
	EndIf
	If $iIntervall = 7 Then
		If $HTS = 9 Then
			Return $sIP[1] & $sI[7]
		EndIf
		If $HTS = 10 Then
			Return $sIP[2] & $sI[7]
		EndIf
		If $HTS = 11 Then
			Return $sIP[4] & $sI[7]
		EndIf
		If $HTS = 12 Then
			Return $sIP[5] & $sI[7]
		EndIf
	EndIf
	If $iIntervall = 8 Then
		If $HTS = 11 Then
			Return $sIP[1] & $sI[8]
		EndIf
		If $HTS = 12 Then
			Return $sIP[3] & $sI[8]
		EndIf
		If $HTS = 13 Then
			Return $sIP[5] & $sI[8]
		EndIf
	EndIf
EndFunc   ;==>_Intervalle

Func _Halbtone($Ton1, $Ton2)
	If $Ton1 = "C" Or $Ton1 = "His" Or $Ton1 = "H#" Or $Ton1 = "Deses" Or $Ton1 = "Dbb" Then
		$iTon1 = 1
	EndIf
	If $Ton2 = "C" Or $Ton2 = "His" Or $Ton2 = "H#" Or $Ton2 = "Deses" Or $Ton2 = "Dbb" Then
		$iTon2 = 1
	EndIf
	If $Ton1 = "Cis" Or $Ton1 = "Hisis" Or $Ton1 = "C#" Or $Ton1 = "H##" Or $Ton1 = "Des" Or $Ton1 = "Db" Then
		$iTon1 = 2
	EndIf
	If $Ton2 = "Cis" Or $Ton2 = "Hisis" Or $Ton2 = "C#" Or $Ton2 = "H##" Or $Ton2 = "Des" Or $Ton2 = "Db" Then
		$iTon2 = 2
	EndIf
	If $Ton1 = "D" Or $Ton1 = "Cisis" Or $Ton1 = "C##" Or $Ton1 = "Eses" Or $Ton1 = "Ebb" Then
		$iTon1 = 3
	EndIf
	If $Ton2 = "D" Or $Ton2 = "Cisis" Or $Ton2 = "C##" Or $Ton2 = "Eses" Or $Ton2 = "Ebb" Then
		$iTon2 = 3
	EndIf
	If $Ton1 = "Es" Or $Ton1 = "Eb" Or $Ton1 = "Dis" Or $Ton1 = "D#" Or $Ton1 = "Feses" Or $Ton1 = "Fbb" Then
		$iTon1 = 4
	EndIf
	If $Ton2 = "Es" Or $Ton2 = "Eb" Or $Ton2 = "Dis" Or $Ton2 = "D#" Or $Ton2 = "Feses" Or $Ton2 = "Fbb" Then
		$iTon2 = 4
	EndIf
	If $Ton1 = "E" Or $Ton1 = "Fes" Or $Ton1 = "Fb" Or $Ton1 = "Disis" Or $Ton1 = "D##" Then
		$iTon1 = 5
	EndIf
	If $Ton2 = "E" Or $Ton2 = "Fes" Or $Ton2 = "Fb" Or $Ton2 = "Disis" Or $Ton2 = "D##" Then
		$iTon2 = 5
	EndIf
	If $Ton1 = "Eis" Or $Ton1 = "E#" Or $Ton1 = "F" Or $Ton1 = "Geses" Or $Ton1 = "Gbb" Then
		$iTon1 = 6
	EndIf
	If $Ton2 = "Eis" Or $Ton2 = "E#" Or $Ton2 = "F" Or $Ton2 = "Geses" Or $Ton2 = "Gbb" Then
		$iTon2 = 6
	EndIf
	If $Ton1 = "Fis" Or $Ton1 = "F#" Or $Ton1 = "Ges" Or $Ton1 = "Gb" Or $Ton1 = "Gbb" Then
		$iTon1 = 7
	EndIf
	If $Ton2 = "Fis" Or $Ton2 = "F#" Or $Ton2 = "Ges" Or $Ton2 = "Gb" Or $Ton2 = "Gbb" Then
		$iTon2 = 7
	EndIf
	If $Ton1 = "G" Or $Ton1 = "Fisis" Or $Ton1 = "F##" Or $Ton1 = "Ases" Or $Ton1 = "Abb" Then
		$iTon1 = 8
	EndIf
	If $Ton2 = "G" Or $Ton2 = "Fisis" Or $Ton2 = "F##" Or $Ton2 = "Ases" Or $Ton2 = "Abb" Then
		$iTon2 = 8
	EndIf
	If $Ton1 = "Gis" Or $Ton1 = "G#" Or $Ton1 = "As" Or $Ton1 = "Ab" Or $Ton1 = "heses" Or $Ton1 = "hbb" Then
		$iTon1 = 9
	EndIf
	If $Ton2 = "Gis" Or $Ton2 = "G#" Or $Ton2 = "As" Or $Ton2 = "Ab" Or $Ton2 = "heses" Or $Ton2 = "hbb" Then
		$iTon2 = 9
	EndIf
	If $Ton1 = "A" Or $Ton1 = "Gisis" Or $Ton1 = "G##" Or $Ton1 = "Heses" Or $Ton1 = "hbb" Or $Ton1 = "hbb" Then
		$iTon1 = 10
	EndIf
	If $Ton2 = "A" Or $Ton2 = "Gisis" Or $Ton2 = "G##" Or $Ton2 = "Heses" Or $Ton2 = "hbb" Or $Ton2 = "hbb" Then
		$iTon2 = 10
	EndIf
	If $Ton1 = "Ais" Or $Ton1 = "A#" Or $Ton1 = "B" Or $Ton1 = "Ceses" Or $Ton1 = "Cbb" Then
		$iTon1 = 11
	EndIf
	If $Ton2 = "Ais" Or $Ton2 = "A#" Or $Ton2 = "B" Or $Ton2 = "Ceses" Or $Ton2 = "Cbb" Then
		$iTon2 = 11
	EndIf
	If $Ton1 = "H" Or $Ton1 = "Aisis" Or $Ton1 = "A##" Or $Ton1 = "Ces" Or $Ton1 = "Cb" Then
		$iTon1 = 12
	EndIf
	If $Ton2 = "H" Or $Ton2 = "Aisis" Or $Ton2 = "A##" Or $Ton2 = "Ces" Or $Ton2 = "Cb" Then
		$iTon2 = 12
	EndIf
	If $iTon2 - $iTon1 < 0 Then
		Return 13 + ($iTon2 - $iTon1)
		Else
	Return $iTon2 - $iTon1
	EndIf
EndFunc   ;==>_Halbtone