Seite 1 von 1
Ton über lautsprecher erzeugen
Verfasst: 19.04.2009 18:41
von kob
Ich habe ein problem . Ich möchte ein ton wie mit beep_() erzeugen ,
nur das der über die soundkarte ausgegeben werden soll . gibt es eine einfache (und ich meine einfach !!!!!) möglichkeit die zu bewerkstelligen .
das problem ist nähmlich volgendes :
letzte nacht habe ich mir aus einer alten web-cam , ein paar bretter
und nägln eine art tisch gebaut über der die cam hängt . nun lege ich
ein mit 2 schwarzen kreisen bemalten holz block auf den tisch und drehe
ihn nach beliben . mein programm sucht nun diese punkte und erechnet einen winkel . dieser winkel soll nun als ton ausgegeben werden .
das leuft schon ganz gut , aber ich will das halt über die boxen !!!!!!!!!!!
hilfe !!!!
THX
Verfasst: 19.04.2009 19:50
von KeyKon
lol, willst du so einen Synth nachbauen der kürzlich bei TV-Total vorgeführt wurde^^?
Es geht auf jeden Fall, irgendwo gabs da mal einen Code der das ganze wie Beep gemacht hat, du kannst natürlich auch ein Wav mit der Frequenz von 1000Hz endlos abspielen und über SoundFrequenzy() die Frequenz dementsprechend verändern...
Verfasst: 19.04.2009 20:05
von Kaeru Gaman
es wurden schon öfter codes gepostet, um WAVs on the fly zu erzeugen...
Verfasst: 20.04.2009 12:09
von Moskito
Sound ? Da kann ich auch was zu beisteuern.
InitSound()
winkelfrequenz= 45*100
grundfrequenz=44100
LoadSound(1,"test.wav")
SoundFrequency(1, winkelfrequenz+grundfrequenz)
PlaySound (1)
;delay (1000)
;End
Nimm ein Sample das dir passend erscheint und combiniere deine
Frequenz (hier 45 Grad) mit der Grundfrequenz. Feddisch.
bis denne
Thomas
Danke
Verfasst: 27.04.2009 13:58
von kob
Danke für die antworten .
werde mich mal daheim an den rechner setzen , und ein paar
sachen nachproggen. hoffe , die funzen auch .
Und NEIN , ich mache nicht das teil bei TV-Total nach , ich habe
ma so ein teil im net gesehen und mache greade mit web-cam rum
habe gadacht "mach'st ma sowas".
THX
Verfasst: 27.04.2009 14:29
von ts-soft
Hier mal ein CodeBeispiel von GPI:
Code: Alles auswählen
EnableExplicit
Structure wave_
wFormatTag.w
nChannels.w
nSamplesPerSec.l
nAvgBytesPerSec.l
nBlockAlign.w
wBitsPerSample.w
cbSize.w
EndStructure
Procedure CreateSound(nr, Frequency, Duration, SampleRate)
Protected SoundValue.b
Protected w.f; // omega ( 2 * pi * frequency)
Protected wave_FormatEx.wave_
Protected DataCount.l, RiffCount.l, start.l, MS.l, TempInt.l, i.l
wave_FormatEx\wFormatTag=#WAVE_FORMAT_PCM;
wave_FormatEx\nChannels =$0001;mono
wave_FormatEx\nSamplesPerSec = SampleRate;
wave_FormatEx\wBitsPerSample = $0008;
wave_FormatEx\nBlockAlign = (wave_FormatEx\nChannels * wave_FormatEx\wBitsPerSample) /8
wave_FormatEx\nAvgBytesPerSec = wave_FormatEx\nSamplesPerSec * wave_FormatEx\nBlockAlign;
wave_FormatEx\cbSize = 0;
DataCount = (Duration * SampleRate)/1000; // sound data
RiffCount = 4+4 +4+ SizeOf(wave_)+4 +4+ DataCount
start=GlobalAlloc_(#GMEM_FIXED|#GMEM_ZEROINIT,RiffCount+100)
MS=start
PokeS(MS,"RIFF"):MS+4 ;'RIFF'
PokeL(MS,RiffCount):MS+4 ;file Data size
PokeS(MS,"wave"):MS+4 ;'wave_'
PokeS(MS,"fmt "):MS+4 ;'fmt '
TempInt = SizeOf(wave_);
PokeL(MS,TempInt):MS+4 ;Twave_Format data size
PokeW(MS,wave_FormatEx\wFormatTag):MS+2; wave_FormatEx record
PokeW(MS,wave_FormatEx\nChannels):MS+2
PokeL(MS,wave_FormatEx\nSamplesPerSec):MS+4
PokeL(MS,wave_FormatEx\nAvgBytesPerSec):MS+4
PokeW(MS,wave_FormatEx\nBlockAlign):MS+2
PokeW(MS,wave_FormatEx\wBitsPerSample):MS+2
PokeW(MS,wave_FormatEx\cbSize):MS+2
PokeS(MS,"data"):MS+4 ;'data'
PokeL(MS,DataCount):MS+4 ;sound data size
; {Calculate And write out the tone signal} // now the Data values
w = 2 * 3.1415 * Frequency; omega
For i = 0 To DataCount - 1
SoundValue = 127 + 127 * Sin(i * w / SampleRate);
PokeB(MS,SoundValue):MS+1;
Next
CatchSound(Nr,start)
GlobalFree_(start)
EndProcedure
InitSound()
CreateSound(1, 1000, 1000, 44000)
PlaySound(1)
MessageRequester("","")
thx
Verfasst: 08.05.2009 11:10
von kob
danke funzt gut , sorry das ich nicht
immer sofort schreibe , ich habe nicht immer
inet .
aber jetzt mal was anderes kann es sein , das
wenn man eine Camera hat dan keine sprites mehr
anzeigen kann ? zumindest in 4.3
Code: Alles auswählen
InitEngine3D()
InitSprite()
InitMouse()
InitKeyboard()
OpenScreen(640,480,16,"Test")
LoadSprite(1,"Test.bmp")
CreateCamera(1,0,0,100,100)
DisplaySprite(1,CameraProjectionX(1,100,100,100),CameraProjectionY(1,100,100,100))
FlipBuffers()
Delay(10000)
er meint bei mir immer das es die sprite nicht gibt , das stimmt aber net !!! habe extra eine aus dem example ortner kopiert help
Verfasst: 08.05.2009 13:09
von Rokur
Wenn du Sprites aus Dateien lädst, dann solltest du immer den Rückgabewert prüfen, ob das überhaupt erfolgreich war.
Ob ein Sprite richtig initialisiert ist kannst du ausserdem mit IsSprite() testen.
Gib mal beim Laden der Datei den kompletten Pfad mit an, wenn das klappt, dann sucht dein Programm im falschen Verzeichnis.
Verfasst: 08.05.2009 13:39
von Kaeru Gaman
@kob
mach ruhig nen neuen thread auf für ne komplett andere frage....
Rokurs anmerkung ist berechtigt, immer die Rückgabewerte prüfen.
thx
Verfasst: 09.05.2009 14:38
von kob
danke für eure hilfe werde einen neuen erstellen .
habe schon mit debug den rüggabewert überprüft , er ist null
das lustige is , das wen ich die 3d befehle auskomentiere
alles normal funktioniert !!!
wir sehen un im nächsten thread