Seite 5 von 6

Verfasst: 28.05.2008 19:37
von bobobo
x (abgedämpft) scheint Töne abzubrechen (knackt ab und zu)
Besser wäre hier ein schnelles Ausblenden (so möglich)

Verfasst: 28.05.2008 23:07
von Lebostein
Das mit dem Knacken hab ich auch bei normalem Akkordwechsel öfters mal... muss an FMOD liegen. Hab das noch nicht wegbekommen, hab auch schon vieles probiert...

Verfasst: 29.05.2008 08:14
von Lebostein
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

Code: Alles auswählen

SAMPLE_FILE   = default
SAMPLE_TUNE   = 81.77
SAMPLE_VOLUME = 140
in

Code: Alles auswählen

SAMPLE_FILE   = beep.wav
SAMPLE_TUNE   = 60.0
SAMPLE_VOLUME = 140
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)

Verfasst: 29.05.2008 13:42
von bobobo
das mit der Tune angabe ist mir nicht ganz transparent

Wenn ich ein sample erstelle , da schnapp ich mir ne Ukulele (z.B.)
und zupf ein A (440Hz) und gut ist.

Was genau bewirkt die TuneAngabe ?

Verfasst: 29.05.2008 14:02
von Lebostein
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...

Verfasst: 29.05.2008 14:07
von bobobo
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.

Verfasst: 29.05.2008 14:14
von Lebostein
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

Verfasst: 29.05.2008 14:17
von bobobo
so langsam sickert es auch durch meine eine Hirnwindung :)

Verfasst: 29.05.2008 14:38
von Lebostein
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.

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.) 
In der nächsten Version wird daher dann sowas in der INI stehen

Code: Alles auswählen

SAMPLE_FILE   = default
SAMPLE_TUNE   = 2.0
SAMPLE_VOLUME = 140

Verfasst: 29.05.2008 15:24
von bobobo
ist für schmalhirne like me sicher besser :D