Bestimmter Buchstabe = bestimmte Zahl

J@ckWhiteIII

Mitglied
Hallo,
ich befasse mich gerade ein wenig mit Musik/Frequenzen. Darum wollte ich in Java einen Converter machen, der den Notennamen in eine Zahl umwandelt (Kammerton a ist 0, darum ist g = -2 (wegen der Halbtonschritte etc)). Nur habe ich keine Ahnung, wie man überhaupt solche Zuordnungen macht.
Hat da jemand eine Idee?
Ich hatte erst an etwas ähnliches wie Konstanten gedacht, aber da wüsste ich auch nicht, wie man das machen soll.
Ein kleiner Denkanstoß reicht, glaube ich ^^
Danke für jede Antwort
 

Network

Top Contributor
Du könntest eine HashMap verwenden, dass ist jetzt das was mir am ehesten einleuchten würde...
Java:
HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
hm.put( 'a', 0 );

System.out.println( hm.get( 'a' ) ) // Ausgabe: 0

Oder eine doppelte ArrayList:
Java:
ArrayList<Integer> alI = new ArrayList<Integer>();
ArrayList<Character> alC = new ArrayList<Character>();

alI.add( 0 );
alC.add( 'a' );

System.out.println( alI.get( alC.indexOf( 'a' ) ) ); // Ausgabe: 0
System.out.println( alC.get( alI.indexOf( 0 ) ) ); // Ausgabe: a

Das sind jetzt 2 Möglichkeiten von vielen.
Wenn die Performance von Wichtigkeit ist:
Java:
char c = 'a';
switch( c ) {
case 'a':
     return 0;
case 'h':
     return [Zahl];
[etc...]
}

Gruß
Net
 
Zuletzt bearbeitet:

J@ckWhiteIII

Mitglied
Ah, also die switch Variante käme mir also am gelegensten, auch wenn es mehr Arbeit ist.
Vielen Dank für das Zeigen der anderen Varianten. Die doppelte ArrayList könnte ich später noch gut gebrauchen
Autoboxing muss ich mir dann noch einmal anschauen, kenne ich bis jetzt noch nicht
 

Timothy Truckle

Top Contributor
Ah, also die switch Variante käme mir also am gelegensten,
Ich würde [JAPI]enum[/JAPI]s empfehlen:
Java:
enum Note {
 A(0),
 C(1),
 // hier weitere Töne ergänzen...
 G(-2);
 private final int tonWert;
 Note(int tonWert) { this.tonWert=tonWert;}
 public int getTonWert() { return tonWert; }
 public int getTransposeQuinte(int quinte) { return 5*quinte + tonWert;}
 public int getTransposeOktave(int oktave) { return 8*oktave + tonWert;}
}
bye
TT
 

Bernd Hohmann

Top Contributor
ich befasse mich gerade ein wenig mit Musik/Frequenzen. Darum wollte ich in Java einen Converter machen, der den Notennamen in eine Zahl umwandelt (Kammerton a ist 0, darum ist g = -2 (wegen der Halbtonschritte etc)). Nur habe ich keine Ahnung, wie man überhaupt solche Zuordnungen macht.
Hat da jemand eine Idee?

Keine Idee weil zumindest mir nicht so recht klar ist, wohin Du willst.

Dein Kammerton "a" ist ja ein ein "a'" (weil es in der eingestrichenen Oktave liegt). Also erstmal brauchst Du eine Konvention wie Du intern die Noten benennen möchtest. Wenn man sich an die Konventionen hält würde deine Tonleiter von ",,c" bis "c''" gehen. Weiterhin ist das lineare durchzählen der Noten (gerade wenn Du mit den zugehörigen Frequenzen arbeiten möchtest) eine eher schlechte Idee, denn das Fis ist ja was anderes als das Ges (ein Violinist sieht das nämlich etwas anders als ein Klavierspieler).

Ich würde daher nicht mit dem Kammerton (eingestrichenes "a") anfangen sondern mich am Schloss-C (eingestrichenes C) oder dem C selbst (eine Oktave unter dem Schloss-C) anfangen, mir eine passende Systematik für die Benennung der Noten einfallen lassen (zb F#' Gb') und das in eine Hashmap mit dem Notennamen als Schlüssel. Das Datenteil der Hashmap kannst Du dann zb. die Frequenz je nach temperierter Stimmung packen.

Bernd
 

Bernd Hohmann

Top Contributor
Ich möchte nach der Formel f(i) = Kammertonfrequenz * 2^(i/12) arbeiten. g# ist dann z.B. minus 1, etc

Ok. Da würde ich mich aber trotzdem nur für die Berechnung auf dieses +/-Kammerton-Schema stützen und irgendeine intelligente Benamsung von C auf/absteigend nehmen. Eventuell Tonleitern in separaten Tabellen definieren.

Hängt natürlich davon ab, was Du konkret vor hast (Orgel auf der PC-Tastatur oder so).

Bernd
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards Bestimmter Text aus PDF extrahieren Allgemeine Java-Themen 3
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
H Stack mit bestimmter Aufgabe Allgemeine Java-Themen 62
J Message Box soll bei bestimmter Zeit angezeigt werden Allgemeine Java-Themen 19
N Java Robot Printscreen in bestimmter Konstellation Allgemeine Java-Themen 2
Bananabert Java mit bestimmter GPU ausführen Allgemeine Java-Themen 7
H Bestimmte Aufgaben zur bestimmter Zeit/ in bestimmten Intervallen Allgemeine Java-Themen 3
N Zahl mit bestimmter Länge und nur bestimmten Zahlen generieren lassen Allgemeine Java-Themen 7
S HTML-Quelltext nach bestimmter Stelle durchsuchen Allgemeine Java-Themen 2
M Klassen Array aus Klassen bestimmter Klassen ? Allgemeine Java-Themen 11
A Programm an bestimmter Stelle ausführen Allgemeine Java-Themen 5
M Nach bestimmter Namenskonvention filtern Allgemeine Java-Themen 2
C Problem beim einlesen bestimmter Seiten Allgemeine Java-Themen 5
T indexOf => bestimmter Bereich Allgemeine Java-Themen 26
G In Datei an bestimmter Stelle schreiben! Allgemeine Java-Themen 12
L 8 bytes von bestimmter position weg lesen? Allgemeine Java-Themen 11
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
I Buchstabe durch seinen Nachfolger ersetzen Allgemeine Java-Themen 29
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
Tacofan Hangman wo sitzt der Buchstabe Allgemeine Java-Themen 8
H Buchstabe in String finden Allgemeine Java-Themen 3
JavaJakob22 Bestimmte HashMap importieren Allgemeine Java-Themen 4
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
C Aus MEHREREN Excel Tabellen bestimmte Zelle addieren Allgemeine Java-Themen 1
J Eine bestimmte Zahl im Integer ändern Allgemeine Java-Themen 9
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
C Eclipse einstellen, dass eine bestimmte JDK benutzt werden soll Allgemeine Java-Themen 3
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
K Apache POI Word bestimmte Textstellen bearbeiten Allgemeine Java-Themen 1
X Schauen ob eine bestimmte .exe geöffnet ist Allgemeine Java-Themen 7
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
A Bestimmte Sonderzeichen im Regulären Ausdruck Allgemeine Java-Themen 2
C Input/Output Bestimmte Zeile in Datei ändern. Allgemeine Java-Themen 13
R Bestimmte Tasten abgreifen Allgemeine Java-Themen 3
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
Iron Monkey RandomAccessFile - Bestimmte Filesize begrenzen Allgemeine Java-Themen 4
L Programm um eine bestimmte Uhrzeit ausführen Allgemeine Java-Themen 4
M Security Manager für bestimmte Klassen/Classloader? Allgemeine Java-Themen 3
E Wie Arraylisten auf bestimmte Art durchlaufen? Allgemeine Java-Themen 3
X Codeabarbeitung innerhalb des Hauptprogramms für bestimmte Zeit unterbrechen Allgemeine Java-Themen 2
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
S Java Excel bestimmte Zellen auslesen (POI HSSF) Allgemeine Java-Themen 11
S bestimmte Strings spliten! Allgemeine Java-Themen 7
G bestimmte Files suchen Allgemeine Java-Themen 2
A Bestimmte JVM verwenden Allgemeine Java-Themen 13
A bestimmte Zeichen aus einem String auslesen Allgemeine Java-Themen 2
L Wie für ein bestimmte JVM-Version kompilieren? Allgemeine Java-Themen 2
I Thread eine bestimmte Zeit zur Ausführung geben Allgemeine Java-Themen 2
P JSlider nur bestimmte werte geben Allgemeine Java-Themen 2
D Programmunterbrechung für eine bestimmte Zeit (Millisikunden Allgemeine Java-Themen 10
M JTextPane Mausklick auf bestimmte Wörter startet Aktion Allgemeine Java-Themen 8
T Bestimmte bytes in einer Datei ersetzen? Allgemeine Java-Themen 4
D Vektor - bestimmte Werte auslesen. Allgemeine Java-Themen 3
A bestimmte Taste an Server verschicken Allgemeine Java-Themen 11
G Einem Programm eine bestimmte Rechenzeit zuteilen Allgemeine Java-Themen 3
8 Programme für bestimmte Dateitypen finden Allgemeine Java-Themen 6
S Bestimmte Tasten mit der Robot Klasse? Allgemeine Java-Themen 4
G Bestimmte Dateien aus Verzeichnis löschen Allgemeine Java-Themen 5
G Nur bestimmte Variablen einer Klasse übernehmen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben