PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum Bascom "Sound"-Befehl



DirkP
23.03.2007, 21:35
Hi,

ich möcht gern mal wissen, wie die einzelnen Parameter zum Befehl "Sound" aussehen. Der Befehl besteht ja aus 3 Variablen: 1. Para = Port, 2. Para = Dauer, 3. = Frequenz, also Tonhöhe. Und hier genau liegt der Hase im Pfeffer. Wie wird denn die Frequenz berechnet, denn dieser Wert ist reziprog, d.h. je größer die Zahl, desto tiefer der Ton. Wie setzt sich Zeit zusammen bzw. gibt es eine Liste oder Tabelle dafür?

Gruß Dirk

Bluesmash
23.03.2007, 21:46
bascom hilfe:
Syntax
SOUND pin, duration, pulses


Remarks

Pin: Any I/O pin such as PORTB.0 etc.

Duration: The number of pulses to send. Byte, integer/word or constant.

Pulses: The time the pin is pulled low and high.
This is the value for a loop counter.
When you connect a speaker or a buzzer to a port pin (see hardware) , you can use the SOUND statement to generate some tones.

The port pin is switched high and low for pulses times.
This loop is executed duration times.

The SOUND statement is not intended to generate accurate frequencies. Use a TIMER to do that.


so wie es aussieht ist die generierte frequenz auch stark von der taktrate des up abhängig... und um genaue frequenzen zu erzeugen nicht geeignet...

gruss bluesmash

DirkP
23.03.2007, 21:55
Hi Buesmash,

es muß aber trotzdem eine Tabelle existiren, wo das kommentiert ist.

Gruß Dirk

DirkP
04.12.2009, 22:57
Hi,

ich hab's jetzt mal probiert und die Frequenzen in Abhängigkeit der Zeitvariablen gemessen. Wenn man die Messergebnisse der Zeitvariablen gegenüberstellt, stellt man fest, dass hier nichts linear ist. Die Frequenz kann also nicht berechnet werden, sondern muss empirisch ermittelt werden und in einer "Tabelle" abgelegt werden. Das ist etwas blöd. Hier wäre es schön, einen Befehl zu haben, so etwa wie "play port.x a3 , 500" also den Kammerton "a" in der 3.Oktave also 1320Hz für 500ms. Das könnte noch erweitert werden, wenn man einen 4/4-Takt wählt, also dann eine halbe oder viertel Note o.ä. spielen könnte. Wäre eine Überlegung wert. Dem könnte man natürlich die Tatsache gegenüberstellen, dass die Controller nicht zum musizieren geplant sind sondern zu steuern und regeln.

ist ja nur eine Idee.

Gruß Dirk

kaktus
06.04.2012, 13:07
Kann man schon berechnen:
http://www.mcselec.com/index.php?option=com_content&task=view&id=221&Itemid=57


' ***** FORMAT TO FUNCTIONS SOUND *****
'
' Sound Speaker , Pulses , Periods
' Speaker - port for generations of sound
' Periods - sound frequency (1-65535)
' Pulses - duration of sound (1-65535)
'
' Periods = Abc[F_crystal / (k * F_nota)]
' Pulses = Abc[(T_period * F_crystal) / (k * Periods)]
'
' F_crystal - clockrate of controller, Hz
' F_nota - frequency a notes, Hz
' k = 12 - amount of tacts, for which is formed one period of sound
' T_period - duration of sounding a notes, sec
' Abc - function of truncation whole number
'
'================================================= ==============================
' Table of values Pulses,Periods for 3 octaves at frequency of quartz 8000000 Hz
'================================================= ==============================
'Note|Freqvency|Periods|Pulses 1/1|Pulses 1/2|Pulses 1/4|Pulses 1/8|Pulses 1/16|
'================================================= ==============================
' C1 | 261,63 | 2548 | 523 | 262 | 131 | 65 | 33 |
'Cis1| 277,18 | 2405 | 554 | 277 | 139 | 69 | 35 |
' D1 | 293,66 | 2270 | 587 | 294 | 147 | 73 | 37 |
'Dis1| 311,13 | 2143 | 622 | 311 | 156 | 78 | 39 |
' E1 | 329,63 | 2022 | 659 | 330 | 165 | 82 | 41 |
' F1 | 349,23 | 1909 | 698 | 349 | 175 | 87 | 44 |
'Fis1| 369,99 | 1802 | 740 | 370 | 185 | 92 | 46 |
' G1 | 392,00 | 1701 | 784 | 392 | 196 | 98 | 49 |
'Gis1| 415,30 | 1605 | 831 | 415 | 208 | 104 | 52 |
' A1 | 440,00 | 1515 | 880 | 440 | 220 | 110 | 55 |
'Ais1| 466,16 | 1430 | 932 | 466 | 233 | 117 | 58 |
' B1 | 493,88 | 1350 | 988 | 494 | 247 | 124 | 62 |