Ukufon 0.42
Ich glaube es liegt an dem Sample, dass ich verwende. Das beginnt ziemlich hart und laut. Kann sein, dass wenn das Sample 4 mal zu gleich abgespielt wird, sich die Lautstärke summiert und die maximal mögliche Auflösung übersteigt und es dann knackt. Werde das mal näher untersuchen.
In der neuen Version kann man das Sample übrigens ändern, wenn man möchte (suche sowieso nach einem weicheren Klang):
http://www.lebostein.de/tomysoft/ukufon/
Einfach eine wav, ogg oder mp3 Datei ins Ukufon-Verzeichnis kopieren (zum Beispiel http://www.lebostein.de/tomysoft/ukufon/beep.wav) und die ini ändern von
in
Mit SAMPLE_TUNE kann man quasi stimmen. Hab das bei dem original Sample mit G-Tune gemacht (http://www.jhc-software.com/gtune.htm). Und so lange iterativ den Wert geändert (auf letztendlich 81.77), bis die A-Saite auch 440 Hz hatte... (bei dem Testbeispiel mit beep.wav ist der Wert 60.0 willkürlich gewählt)
In der neuen Version kann man das Sample übrigens ändern, wenn man möchte (suche sowieso nach einem weicheren Klang):
http://www.lebostein.de/tomysoft/ukufon/
Einfach eine wav, ogg oder mp3 Datei ins Ukufon-Verzeichnis kopieren (zum Beispiel http://www.lebostein.de/tomysoft/ukufon/beep.wav) und die ini ändern von
Code: Alles auswählen
SAMPLE_FILE = default
SAMPLE_TUNE = 81.77
SAMPLE_VOLUME = 140
Code: Alles auswählen
SAMPLE_FILE = beep.wav
SAMPLE_TUNE = 60.0
SAMPLE_VOLUME = 140
Zuletzt geändert von Lebostein am 03.06.2008 09:09, insgesamt 1-mal geändert.
ganz einfach: So kann man einen beliebigen Ton (Sample), egal welcher Frequenz, in die richtige Stimmung bringen. Den Ukulelenton, den ich hier verwende, ist glaube ich von einer G-Saite.
Intern wird die Frequenz, mit der das Sample abgespielt werden soll (nicht die Frequenz der Tonhöhe!!!) so berechnet:
freq.f = 440. * Pow(2., (ziffer + tune - 57) / 12.)
FSOUND_PlaySoundEx(channel, ....
FSOUND_SetFrequency(channel, freq)
Letztendlich ist tune so ne Art Korrektur zwischen Abspielfrequenz (playback rate) und der gehörtern Frequenz.... ich müsste das halt mal so kalibrieren, dass bei einem Tonsample von 440 Hz SAMPLE_TUNE gleich 0 gesetzt werden kann...
Intern wird die Frequenz, mit der das Sample abgespielt werden soll (nicht die Frequenz der Tonhöhe!!!) so berechnet:
freq.f = 440. * Pow(2., (ziffer + tune - 57) / 12.)
FSOUND_PlaySoundEx(channel, ....
FSOUND_SetFrequency(channel, freq)
Letztendlich ist tune so ne Art Korrektur zwischen Abspielfrequenz (playback rate) und der gehörtern Frequenz.... ich müsste das halt mal so kalibrieren, dass bei einem Tonsample von 440 Hz SAMPLE_TUNE gleich 0 gesetzt werden kann...
Zuletzt geändert von Lebostein am 29.05.2008 14:14, insgesamt 2-mal geändert.
Achsoo
440Hz + (81.schlagmichtot minus 57) ergibt das G in Hertz
Also sollte man das Sample in G erstellen und
nicht muss mehr getunt werden.
Stuss .. hab 'n Brainbug
Welche Frequenz müsste ein Sample haben damit es
mit korrekturfaktor 0 funktioniert?
Aber auch nur ein Sample.
Vermutlich wäre es naturnaher eine Sampleliste
zu benutzen die sich besser an die natürlichen
Gegenheiten von Instrumenten anpassen lässt.
Tonhöhe ,Schwingungsdauer , Obertöne u.a sind
ja im Original (hier Ukulele) auch nicht gleichmäßig
verteilt.
440Hz + (81.schlagmichtot minus 57) ergibt das G in Hertz
Also sollte man das Sample in G erstellen und
nicht muss mehr getunt werden.
Stuss .. hab 'n Brainbug
Welche Frequenz müsste ein Sample haben damit es
mit korrekturfaktor 0 funktioniert?
Aber auch nur ein Sample.
Vermutlich wäre es naturnaher eine Sampleliste
zu benutzen die sich besser an die natürlichen
Gegenheiten von Instrumenten anpassen lässt.
Tonhöhe ,Schwingungsdauer , Obertöne u.a sind
ja im Original (hier Ukulele) auch nicht gleichmäßig
verteilt.
Zuletzt geändert von bobobo am 29.05.2008 14:15, insgesamt 1-mal geändert.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ein A4 mit 440 Hz hat in meiner Halbtonzählweise die ziffer 57. Wenn ich das zusammen mit den 81.77 einsetze, erhalte ich freq = 49513 Hz. Das G-Saiten-Sample, welches mit 44100 Hz aufgenommen wurde, wird jetzt also mit 49513 Hz abgespielt, also etwas schneller, so dass man ein A hört.
Aufgenommene Samples pro Sekunde:
49513 / 44100 = 1.122748710469744
Gehörte Frequenz:
440 / 392 = 1.1224489795918366
... das Sample, was ich verwende, scheint nicht exakt G zu sein, seh ich grade....aber ich habe ich ja diesen Faktor
Aufgenommene Samples pro Sekunde:
49513 / 44100 = 1.122748710469744
Gehörte Frequenz:
440 / 392 = 1.1224489795918366
... das Sample, was ich verwende, scheint nicht exakt G zu sein, seh ich grade....aber ich habe ich ja diesen Faktor
Zuletzt geändert von Lebostein am 29.05.2008 14:24, insgesamt 4-mal geändert.
Cool!
Wenn ich die Formel ein wenig ändere, entspricht SAMPLE_TUNE genau den Halbtonschritten, um die man das Sample nach oben bzw. unten stimmt. So wird es transparenter.
In der nächsten Version wird daher dann sowas in der INI stehen
Wenn ich die Formel ein wenig ändere, entspricht SAMPLE_TUNE genau den Halbtonschritten, um die man das Sample nach oben bzw. unten stimmt. So wird es transparenter.
Code: Alles auswählen
ziffer = 57
; ein 44100 Sample wird mit 44100 Hz angespielt
SAMPLE_TUNE.f = 0.
Debug 440. * Pow(2., (ziffer - 57 + 79.765577 + SAMPLE_TUNE) / 12.)
; ein 44100 Sample wird mit 49500 Hz angespielt (ein g wird zum a, 2 Halbtöne höher stimmen)
SAMPLE_TUNE.f = 2.
Debug 440. * Pow(2., (ziffer - 57 + 79.765577 + SAMPLE_TUNE) / 12.)
Code: Alles auswählen
SAMPLE_FILE = default
SAMPLE_TUNE = 2.0
SAMPLE_VOLUME = 140