---
title: "Toner och frekvens(DirectX)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/100879-toner-och-frekvens-directx"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2004-04-04T10:59:59.000Z"
updated: "2004-04-06T11:50:06.000Z"
replies: 11
views: 510
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/100879-toner-och-frekvens-directx"
---

# Toner och frekvens(DirectX)

## #1 — saw, 2004-04-04T10:59Z

Hej.

Jag undrar om det finns någon som har koll på det här med toner och frekvensen:

```

case "C1":
Frekvens = "8000";
break;
case "C1#":
Frekvens = "8500";
break;
case "D1":
Frekvens = "9000";
break;
case "D1#":
Frekvens = "9500";
break;
case "E1":
Frekvens = "10000";
break;
case "F1":
Frekvens = "10700";
break;
case "F1#":
Frekvens = "11300";
break;
case "G1":
Frekvens = "12000";
break;
case "G1#":
Frekvens = "12800";
break;
case "A1":
Frekvens = "13400";
break;
case "A1#":
Frekvens = "14300";
break;
case "H1":
Frekvens = "15200";
break;
case "C2":
Frekvens = "16300";
break;
case "C2#":
Frekvens = "17300";
break;
case "D2":
Frekvens = "18000";
break;
case "D2#":
Frekvens = "19000";
break;
case "E2":
Frekvens = "20000";
break;
```

Jag skulle behöva komma ner i oktaven (oktaverna ser ni C /C1/C2), och jag skulle också behöva komma upp lite mera.

Någon som känner till detta??? :q

Permalänk: https://www.webforum.nu/p/100879

## #2 — fiddler, 2004-04-04T11:22Z

Vad är det för frekvenser du angett i din kod?

Permalänk: https://www.webforum.nu/p/1314016

## #3 — saw, 2004-04-04T11:41Z

När jag sökte på DirectSound så hittade jag lite kod om hur man kan spela på olika frekvenser.

```
private void PlayNote(int freq)
{
if (null != applicationBuffer)
//applicationBuffer.Dispose();  //tar bort detta för att tonerna 
//skall klinga längre
applicationBuffer = null;
 
BufferDescription desc = new BufferDescription();
desc.ControlFrequency  = true;
desc.ControlPan = true;
desc.ControlVolume = true; 

try
{//här kan man ändra strFileName
strFileName = Application.StartupPath + "\\Ljud\\ding.wav";
//strFileName = @"E:\Music_Translater\Translater\bin\Debug\Ljud\Jag.wav";
applicationBuffer = new SecondaryBuffer(strFileName, desc, applicationDevice);
			
applicationBuffer.Frequency = freq;
if(checkBox2.Checked==true)
{
BufferPlayFlags PlayFlags  =  0;
applicationBuffer.Play(0, PlayFlags);			
}
}
catch(Exception fel)
{
//MessageBox.Show(fel.Message, "PlayNote");	
//DefaultPlayUI();
} 
}
```

Så om du tittar på min andra kod-snutt, så omvandlar jag tonerna till frekvens.

Detta fungerar kanonbra, men jag skulle behöva utöka skalan, därav min fråga. :i

Permalänk: https://www.webforum.nu/p/1314020

## #4 — fiddler, 2004-04-04T20:25Z

Ok! :) Jag tyckte frekvenserna såg så höga ut bara, men om det är tonerna angett i Hz du är ute efter så är det som följer.

a1 (ettstrukna a) = 440Hz är en bra utgångspunkt.
För att få frekvensen för nästa halvton multiplicerar du med 12:e roten ur 2, alternativt dividerar om du ska nedåt.

a1 = 440
a#1 = 466
b1 = 494
c1 = 523

osv...

Permalänk: https://www.webforum.nu/p/1314222

## #5 — UlfT, 2004-04-04T21:39Z

Om jag inte har fått tonskalorna helt om bakfoten, ska en oktavs höjning motsvara en fördubbling av frekvensen. Därför ser det konstigt ut att C1 är på 8000 Hz, medan C2 är på 16300 Hz. Borde inte C2 vara exakt 16000 Hz, alternativt C1=8150 Hz?

Permalänk: https://www.webforum.nu/p/1314256

## #6 — saw, 2004-04-04T22:49Z

Hej fiddler!
Tack för dit svar. Jag skulle vara ännu lyckligare om jag hadde förståt hur du menar, jag har aldrig räknat med roten.
\<multiplicerar du med 12:e roten ur 2

Tror du att du på ett enkelt sätt kan ställ upp det där, så att jag förstår hur du menar?

Permalänk: https://www.webforum.nu/p/1314281

## #7 — fiddler, 2004-04-05T05:10Z

**UlfT:** Du har helt rätt. Jag är mycket tveksam till frekvenserna i koden dock. Om värdena motsvarar svängningar per sekund så håller vi konsert för grannskapets hundar snarare än oss själva... :( 

**saw:** Talet du ska använda är cirka 1.059463094. Som UlfT säger ovan räcker det med att räkna ut en oktav och sedan dubbla eller halvera. Jag ser fram emot att få höra hur det går. :)

Permalänk: https://www.webforum.nu/p/1314293

## #8 — saw, 2004-04-05T08:51Z

Jag vill bara kolla mig själv, är det här rätt:

c3#	1976
d3	2093
d#3	2217
e3	2349
f3	2489
f3#	2637
g3	2794
g3#	2960
a3	3136
a3#	3322
h3	3520
c4#	3729
d4	3951
d#4	4186
e4	4435
f4	4699
f4#	4978
g4	5274
g4#	5588
a4	5920
a4#	6272
h4	6645
c5#	7040

Permalänk: https://www.webforum.nu/p/1317234

## #9 — fiddler, 2004-04-05T09:10Z

Du hoppar över c... :( 
Listan borde bli:

a3 = 1760Hz (exakt)
a#3 = 1864
h3 = 1975
c3 = 2093
c#3 = 2217
d3 = 2349
d#3 = 2489
e3 = 2637
f3 = 2793

osv...

Permalänk: https://www.webforum.nu/p/1317240

## #10 — saw, 2004-04-05T09:59Z

Tusen tack för hjälpen och tålamodet.
Jag tror att jag har fattat. Gjorde en excell uträkning, blev bra.
Jag rundade av decimalerna, tror att det blir bra i alla fall.

Permalänk: https://www.webforum.nu/p/1317266

## #11 — fiddler, 2004-04-05T10:19Z

Vad bra! :)

Permalänk: https://www.webforum.nu/p/1317281

## #12 — saw, 2004-04-06T11:50Z

fiddler

Än en gång kanon tack. Jag har gjort den delen färdig nu, och jag har svårt att förstå hur jag skall kunna få det bättre.

Tack vare dig och dina förslag så känner jag mig väldigt nöjd.
Ha en bra dag.

MVH
saw

Permalänk: https://www.webforum.nu/p/1317750

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/100879-toner-och-frekvens-directx
