2010-02-09 5 views
6

Ich habe eine OpenAl-Sound-Engine auf meiner iPhone App. Wenn ich einen Sound spiele, den ich geladen habe, kann ich die Tonhöhe steuern.OpenAl Pitch-Werte für bestimmte Musiknoten in einer Oktave

In OpenAl hat eine Tonhöhe von 1.0 keinen Effekt. Wenn Sie es auf 2.0 verdoppeln, spielt es die Note 1 Oktave höher (12 Halbtöne). Wenn Sie es auf 0,5 halbieren, wird es eine Oktave tiefer (12 Halbtöne).

Also, mein ursprüngliches Sample spielt ein C. Ich nahm an, dass wenn ich 1 durch 12 teile (Halbtöne), ich die Tonhöhe für die einzelnen Noten in dieser Oktave bekommen könnte. Aber das scheint nicht der Fall zu sein. Was bedeutet, dass Halbtöne nicht gleich sind. Ist das wahr?

Weiß jemand, wie ich den OpenAl-Tonwert für einzelne Noten in einer Oktave berechnen kann?

Danke

Antwort

11

Halbtöne- gleiche Verhältnisse sind. Also, wenn Ihre Probe C ist, wird C# die 12. Wurzel von zwei sein. Wenn Sie Halbtöne C = 0, C# = 1 usw. zählen, ist das Verhältnis pow(2.0, n*1.0/12.0)

Funktioniert auch für negative Zahlen.

Ich sollte beachten, das ist nicht streng in jedem Tuning-Schema ... aber das ist ein guter Anfang. Wenn Sie sich wirklich für die ganze Komplexität des musikalischen Tuning interessieren, kann ich Ihnen einige Referenzen finden.

+1

Vielen Dank Andrew! das ist perfekt! ... genau das was ich wollte! Und ja Referenzen wären toll. Insbesondere die Beziehung zwischen Tonhöhe und Länge der Probe. Danke noch einmal. – Jonathan

+0

Oh, nun, die Länge wird im gleichen Verhältnis kürzer. Ich werde eine gute Einführung in Skalen und Tuning finden. –

+1

http://en.wikipedia.org/wiki/Mathematics_of_musical_scales und http://en.wikipedia.org/wiki/Equal_Temperament wird Sie in das Dickicht von Wikipedia-Artikeln zu diesem Thema bringen. Es wird nach einer Weile sehr kompliziert, aber es ist auch sehr wichtig für die praktische Musik, besonders wenn Sie mit Saiten- oder Blasinstrumenten arbeiten. –