Ton mit Frequenz erzeugen.

Übersicht Ressourcen Sound & Music

Neue Antwort erstellen

 

Goblin

Betreff: Ton mit Frequenz erzeugen.

BeitragDi, Mai 08, 2007 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde gerne einen Ton mit einer Frequenz von 40 Hz erzeugen (mit BlitzPlus) und bräuchte da die passende DLL. hab sie auch schon gefunden: bass.dll
fehlt noch eins: bass.decls
und: ein beispiel
danke für alle antworten (zumindest die sinnvollen)

BladeRunner

Moderator

BeitragDi, Mai 08, 2007 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
40 Hz, lecker. noch unterhalb des Steckdosenbrummens, das macht lustig.

https://www.blitzforum.de/foru...t=bass+dll
Einmal decls, rucki gefunden sogar per GOOGLE. Bitteschön.
Bedienung gibts auch per google Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Mai 09, 2007 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub ein Ton von 30 Hz unter Dauerbelastung macht Menschen Verrückt, bzw. lässt sie Halluzinationen sehen. Oder waren es doch 40 Hz?

Obwohl ich ein Freund solcher Selbstversuche bin, habe ich dieses bisher noch nicht ausprobiert, obwohl ein Subwoofer (marke Selbstbau) zur Verfügung steht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

skey-z

BeitragMi, Mai 09, 2007 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
oder einfach mit Windows, über den Systemlautsprecher
Code: [AUSKLAPPEN]

.lib "kernel32.dll"

Beep%(Freq, Duration)
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

StepTiger

BeitragMi, Mai 09, 2007 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Klappt bei mir nicht, das dürfte daran liegen, dass ich keinen Systemlautsprecher mehr habe ^^

Wie kann man mit der BASS DLL eine bestimmte Frequenz erzeugen?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Goblin

BeitragMi, Mai 09, 2007 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das, StepTiger, wollte ich auch wissen...

ich hab die bass.decls in meim Userlibs ordner.

@BladeRunner: Danke für den link aber das war nicht was ich suche. Damit kann ich bloß das mit den CDs machen(...)

Ich bräuchte einfach die Function aus der Bass.dll
(sowas ähnliches (zur veranschaulichung): Bass_CreateFrequenz(freqenz), wenn ihr versteht was ich meine )

danke

BladeRunner

Moderator

BeitragMi, Mai 09, 2007 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Die decls (und die bass.bb im selben thread) ist alles was man benötigt, unter der Voraussetzung dass man weiss wie man die Dll zu nutzen hat. Und genau da scheint es zu hapern.

Die bass.dll stellt keine "generiere Hüllkurve"-Funktion zur Verfügung. Aber sie bietet die Funktionalität Streams zu erzeugen, die Du dann jedoch noch mit Inhalt füllen musst.
Dazu solltest Du ein wenig Ahnung von der Art wie Sounds gespeichert werden haben. Hier wäre zum Beispiel wotsit.org zu nennen, denn Du musst wissen wie eine wav funktioniert.
Sprich: Erst vorbilden, dann wird dass. Aber es ist ne Ladung Arbeit.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Mai 09, 2007 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnte man nicht gleich in den Speicher die Wellenform per PokeByte (für mono 8 Bit) oder PokeShort (für mono 16 Bit) ablegen, die dann nur noch ausgelesen wird. Denn die bass.dll macht doch nichts anderes, oder? Die packt ein Stream in den Speicher, der dann (zB für die Visualisierung) mit Blitz ausgelesen werden kann. Das geht eventuell dann auch anders rum... Falls es klappt, will ich die Lösung hier sehen, bitte, bitte, bitte...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

BladeRunner

Moderator

BeitragMi, Mai 09, 2007 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Prinzip läuft es so, allerdings muss man sich dennoch mit dem Aufbau einer .wav beschäftigen, da noch einige Angaben dazu kommen: Samplerate ZB, was direkt auch die Samplegröße bestimmt. Und dann musst du Die amplitude in der passenden Frequenz in die Bank hämmern, damit du Auch hörst was Du hören willst.
Dann gibts noch die Frage nach Sinus, Sägezahn öder Rechteckschwingung, was den Sound massgeblich beeinflusst.

Wer sich mal mit der Programmierung des SID befasst hat sollte in Grundzügen wissen wie das funzt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Mai 09, 2007 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Töne erzeugt werden, weiß ich. Ich habe mit Blitz auch schon .wav -Dateien eingelesen und mit Blitz dann Hüllkurvenänderungen und anderes programmiert und wieder als .wav gespeichert, um besondere Effekte zu erziehlen, die mit meinem Musikprogrammen nicht möglich waren. Wüsste jetzt aber nicht, wozu man sich den .wav -Header antun müsste, um in ein Stream zu speichern. Da stelle ich mir die Headerinformationen so vor, dass sie als Parameter übergeben werden. Wobei eine .wav ja wirklich sehr einfach struktuiert ist im Gegensatz zu mp3, wo ich immer noch nicht ganz dahinter gekommen bin.

Meine Vorstellungen währen:

Sampling(Hz[0-88200], Bits[8/16], Channels[1/2])

Und dann für eine Sekunde Ton zB Code: [AUSKLAPPEN]

Sampling(44100,16,1)
For q=1 to 44100
  PokeShort(bank,q*2,32768+sin(q)*32767)
Next
StartSample()

Für echtes Streaming natürlich kein StartSample()
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

BladeRunner

Moderator

BeitragMi, Mai 09, 2007 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dem Studium der .wav kommt auch das wissen wie die Audiodaten gespeichert sind. der Header ist tatsächlich im wesentlichen nebensächlich. Aber ich glaube eben das Goblin dachte es gäbe einen makesound()-Befehl.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Goblin

BeitragDo, Mai 10, 2007 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ... so in etwa. Ich werd mich mal mit dem Aufbau einer .wav beschäftigen...
Trotzdem mal danke.

D2006

Administrator

BeitragFr, Mai 11, 2007 3:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben in meinem Code-Ordner gefunden:

BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,32,2 
SetBuffer BackBuffer()

Include "BASS.bb"

hWnd = CallDLL("User32.dll","GetActiveWindow")
If BASS_Init(-1,44100,0,hWnd) = 0 Then
RuntimeError "Konnte nicht initalisieren!"
End
EndIf

BASS_Start()

ptrData = BASS_SampleCreate(128,41160,1,BASS_SAMPLE_MONO Or BASS_SAMPLE_LOOP Or BASS_SAMPLE_OVER_POS)
bnkData = CreateBank(256)
For a = 0 To 127
PokeShort bnkData,a * 2,Cos(A) * 5000
Next
Result = RtlMoveMemory2(ptrData,bnkData,256) : DebugLog Result
FreeBank bnkData
hSample = BASS_SampleCreateDone()

Channel = BASS_SamplePlay(hSample)
WaitKey

BASS_ChannelStop(Channel)
BASS_Stop()
BASS_Free()
End


Da is mich allerdings mit Tönen usw. nicht sehr gut auskenne, weiß ich jetzt nicht wirklich, wie man einen 40 Hz Ton erzeugt, aber man kann bei dem Beispiel ja schön rumspielen. Smile

PS:
Das Beispiel braucht die bass.bb, welche du auch über die Forensuche finden solltest und den Befehl RtlMoveMemory2.

Den kann ich noch fix mitgeben:
kernel32.decls hat Folgendes geschrieben:
.lib "Kernel32.dll"
RtlMoveMemory2%(Destination,Source*,Length) : "RtlMoveMemory"


Steht allerdings bei mir mit in der bass.decls, vllt bei euch auch schon.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Mai 11, 2007 5:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja geil, danke, jetzt habe ich was zum rumspielen und testen von ausgedachter Wellenformen. Cool

Hier mal eine modifizierte Version von deinem Vorschlag (Voreinstellung auf Sinuns 40 Hz) Code: [AUSKLAPPEN]
Graphics 1024,512,32,2
SetBuffer BackBuffer()

Include "Bass.bb"

hWnd = CallDLL("User32.dll","GetActiveWindow")
If BASS_Init(-1,44100,0,hWnd) = 0 Then
; RuntimeError "Konnte nicht initalisieren!"
; End
EndIf


BASS_Start()

hz=40 ; Hier die Frequenz angeben (nur bei art=1 genau)
art=1 ; Hier die Abspielart angeben (1-4)


length=1048576 ; Ein Megabyte Daten

BassHandle=BASS_SampleCreate(length,44100,1,BASS_SAMPLE_MONO Or BASS_SAMPLE_LOOP); Or BASS_SAMPLE_OVER_POS)
bnkData=CreateBank(length*2)

LockBuffer BackBuffer()
 For q=0 To length-1
  If art=1 y=Sin(q/44100.0*360*hz)*32767
  If art=2 yy=yy+Rand(hz/8,hz*3):y=Sin(yy/44100.0*360)*16384
  If art=3 yy=yy+Rand(1000.0*hz/(q+1),1000.0*hz/(q+1)*10):y=Sin(yy/44100.0*360)*16384
  If art=4 y=y+hz*1.45:If y>32767 y=-32767

  PokeShort bnkData,q*2,y
  WritePixel q*243000.0/length,128+y/256,-1
  WritePixel q*24300.0/length,384+y/256,-1
 Next
UnlockBuffer BackBuffer()
Text 20,20,"~erste 1/10 Sekunde"
Text 20,276,"~erste 1/1 Sekunde"
Flip


Result=RtlMoveMemory2(BassHandle,bnkData,length)

FreeBank bnkData

hSample=BASS_SampleCreateDone()
Channel=BASS_SamplePlay(hSample)
WaitKey

BASS_ChannelStop(Channel)
BASS_Stop()
BASS_Free()
End

Die Variable Hz gibt die Abspielfrequenz an. Mit der Variable Art, kann man andere Effekte abspielen lassen (zB Art=3 Drumähnlich).

Bei mir funktionierte allerding die Initialisierung nicht, wo ich sie bei mir auskommentieren musste?!
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Mr Hopp

BeitragSa, Mai 26, 2007 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Toll! Gefällt mir das Programm! Smile Ich habe mich letztens auchmal mit der Bass.dll angefreundet aber nur zur Visualisierung. Schön mal richtig Bass zum machen, hehe...

Hast du den Selbstversuch eigentlich mittlerweile mal durchgeführt? Very Happy
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.

Neue Antwort erstellen


Übersicht Ressourcen Sound & Music

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group