Go Down

Topic: Arduino Töne berechnen (Read 395 times) previous topic - next topic

freddy64

Hallo zusammen,
ist hier zufällig ein begnadeter Mathematiker?

Ich habe dieses Samplegefunden, funktioniert auch super.
Wer kann die nächsten Töne (D, E, F, G usw.) berechnen?

Ich verwende die Töne als Quittungstöne für eine RFID Kasse. C als OK geht gerade noch so, aber als ERROR - Ton ist das zu tief.

Ich hätte da gerne einen Ton über 1000 Hz.

Gruß
Fred

MicroBahner

#1
Jun 20, 2019, 05:55 pm Last Edit: Jun 20, 2019, 05:55 pm by MicroBahner
Die Formel steht doch oben über der Tabelle. Trage dort z.B. 1046 für die Frequnz ein, und Du hast den Ton C eine Oktave höher.
Und wenn ich das richtig verstehe, geht es doch noch nichtmal um musikalisch korrekte Töne. Dann kannst Du jede für dich passende Frequenz da eintragen.
Gruß, Franz-Peter

postmaster-ino

Hi

Laut den Werten im Link stimmt Das, was ich jetzt ablasse, nicht:
Irgendwo las ich Mal, daß durch Verdoppeln der Frequenz die Note eine Oktave höher erreicht wird.
Bei dem Beispiel passt Das aber 'nicht ganz' - von 'C' 956 auf 'c' käme 'ich' nur auf 1912, dort stehen aber 1915.

Das war's dann aber auch schon wieder, was ich mit Musik am Hut habe :)

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

freddy64

Quote
Irgendwo las ich Mal, dass durch Verdoppeln der Frequenz die Note eine Oktave höher erreicht wird.
Das ist richtig.

Ich brauche aber nicht die Frequenz sondern "period" und der Wert fällt mit steigender Frequenz
c = 3830
C = 1912
f = 2864
F = ????

Die genaue Tonhöhe, wie auf einem Klavier, ist da eigentlich egal.

Ahhhh, genau:

3830 ist in etwa das Doppelte von 1912 (c zu C).
Gleich mal ausprobieren, ob F dann 1432 im Vergleich zu f) ist.

Manchmal sieht man den Wald vor lauter Bäumen nicht.




freddy64

Oh mann, wo war ich damals nur in der Schule? Bestimmt krank  :)

f = 1 / t

Deshalb sinkt die Zeit am Output-Pin mit steigender Frequenz.

Ich gebe alle meine Zeugnisse von der Penne (ABI 1982) zurück.


MicroBahner

f = 1 / t
Genau so steht's in der Formel in deinem Link drin   ;)
Gruß, Franz-Peter

MicroBahner

#6
Jun 20, 2019, 09:33 pm Last Edit: Jun 20, 2019, 09:35 pm by MicroBahner
Irgendwo las ich Mal, daß durch Verdoppeln der Frequenz die Note eine Oktave höher erreicht wird.
Bei dem Beispiel passt Das aber 'nicht ganz' - von 'C' 956 auf 'c' käme 'ich' nur auf 1912, dort stehen aber 1915.
Im Prinzip ist das mit der Oktave so. Musik ist aber keine 'reine' Mathematik. Deshalb klingt sie viel lebendiger, wenn es eben nicht 'genau' stimmt. Und deshalb sollte eine Oktave eben nicht mathematisch genau das doppelte sein.
( Bei den ersten elektronischen Orgeln mit digitalen Frequenzteilern war das noch so, weshalb die sehr 'steril' klangen )
Gruß, Franz-Peter

freddy64

Woran hat sich dann aber z.B. der Silbermann mit seinen Orgeln orientiert?
Irgendwie muss es doch schon zu der Zeit eine Formel für die Töne gegeben haben.
Analog klingt immer besser als digital, warum auch immer.
Deshalb höre ich auch heute wieder Schallplatten statt MP3, ohne digitale Klangbeeinflussung durch irgendwelche DSP's. Der Sound ist einfach abartig geil.  :)


MicroBahner

#8
Jun 21, 2019, 11:13 am Last Edit: Jun 21, 2019, 11:15 am by MicroBahner
Woran hat sich dann aber z.B. der Silbermann mit seinen Orgeln orientiert?
An seinen guten Ohren  :) . Ein Klavierstimmer stimmt ja auch nicht mit dem Frequenzzähler, sondern nach seinem geschulten Gehör. Für den Kammerton A gibt es eine Referenz ( die Stimmgabel ), und ab da gilt dann das geschulte Gehör. Das ist nie mathematisch exakt, aber deshalb ja auch so gut  8)
Gruß, Franz-Peter

qualidat

#9
Jun 25, 2019, 07:59 pm Last Edit: Jun 25, 2019, 08:06 pm by qualidat
Elektronische Instrumente arbeiten rein mathematisch. Basis ist z.B. der Kammerton A mit 440 Hz. Oktaven sind - wie bereits erwähnt - die doppelte bzw. halbe Frequenz. Der Abstand der Frequenz von benachbarten Halbtönen beträgt genau den Faktor 12. Wurzel aus 2, so dass man nach 12 Halbtonschritten eben genau bei der Hälfte bzw. dem Doppelten angekommen ist.

Also z.B.

A = 440 Hz, dann ist B = 440 Hz * 1,059463094359295 = 466 Hz (gerundet)
B = 466 Hz, dann ist H = 466 Hz * 1,059463094359295 = 494 Hz ... usw.

Die Oktaven wurden in elektronischen Instrumenten gerne per Frequenzteiler (D-Flipflop) aus entsprechend hohen Tongeneratoren abgeleitet. Heute macht man das in Software (DSP).

freddy64

Ich habe jetzt rein mathematisch die Tonhöhen berechnet, bis ich auf diese 2 Töne gekommen bin:

#define  C2    1912    // 523 Hz
#define  D2    1700    // 587 Hz
#define  E2    1516   
#define  F2    1432   
#define  G2    1275
#define  A2    1136
#define  B2    1014
#define  C3    956
#define  D3    850
#define  E3    758
#define  F3    716
#define  G3    637
#define  A3    668
#define  B3    507
#define  C3    478

uint16_t melody_ok[] = { B2 };
uint8_t beats_ok[]  = { 16 };

uint16_t melody_err[] = { B3, B3, B3 };
uint8_t beats_err[]  = { 8, 8, 8};

Damit kann ich einen OK-Ton bzw. ein Error beep,beep, beep mit einem 8Ohm / 0.5 W Lautsprecher direkt an den GPIO's erzeugen.

Jetzt noch zum Thema Lautstärke:
Der ESP32 arbeitet nur mit 3.3V. Wie kann ich mit 1 Transistor und 1-2 Widerständen die Lautstärke erhöhen. Ohne Gehäuse würde die Lautstärke ausreichen, aber sobald alles im Gehäuse verstaut ist, reicht die Lautstärke nicht mehr aus.
Hat da jemand von euch eine kleine Skizze parat?





hajos118

Nur mit Transistoren und Widerständen wirds nix. Du brauchst noch eine (höhere) Spannung.
Dann bietet sich aber gleich ein fertiger Treiberbaustein an:
UILN2803 besitzt gleich mehrere OK Treiberstufen. Lautsprecher zwischen Ausgang des Treibers und der Versorgungsspannung und den entsprechenden Eingang an den ESP.
Das wird dann laut genug....
Orthographie und Interpunktion folgen keiner gültigen Norm. Wer Fehler findet darf sie behalten!

freddy64

Die Spannungsversorgung erfolgt über USB. An Vin liegen doch dann ~5V an.
Reicht das nicht schon mit ein paar extra Bauteilen für eine höhere Lautstärke?

combie

#13
Jun 26, 2019, 02:44 pm Last Edit: Jun 26, 2019, 03:35 pm by combie
5V an 8 Ohm ergibt ca 0,600A

Das müsste deine Treiberstufe für maximale Lautstärke an 5V bringen.
Ein nackter AVR Pin bricht bei ca 0,020A schon merkbar ein.
Über 0,040A kommt kaum noch Spannung raus.

USB2 ist mit 0,600A auch schon gut gefordert.
Üblicher weise, ohne Sonderabhandlung, sind 0,100A das Ende der Fahnenstange.

Mache dich kundig:
Klasse A Endstufe
Klasse B Gegentaktendstufe


Über "Klangqualität", müssen wir hier nicht reden.
Oder?
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

freddy64

So weit ich mich noch erinnern kann, berechnet man die Leistung einer Endstufe:
Sinus-Ausgangsspannung² / Lautsprecherwiderstand.
Da müssten doch mit 5V Vcc locker 0.5W an 8 Ohm über einen oder 2 Transistor(en) erreichbar sein.
Es geht hier nicht um Qualität. Der Beep muss nur lauter werden, als direkt vom GPIO.
Ich bin in der NF-Schaltungstechnik nicht so bewandert.
Vom GPIO über einen ELKO auf die Basis eines Transistors, einen Widerstand für die Gegenkopplung vom Kollektor zurück auf die Basis. Den Kollektor an +Vcc und den Lautsprecher in die Emitterleitung des Transistors gegen GND.
ABER: was für einen Transistor und welchen Widerstand, damit der µC nicht abraucht?

Go Up