Ton über lautsprecher erzeugen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Ton über lautsprecher erzeugen

Beitrag 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 !!!!!!!!!!! :freak:

hilfe !!!!

THX
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

es wurden schon öfter codes gepostet, um WAVs on the fly zu erzeugen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Moskito
Beiträge: 182
Registriert: 18.01.2006 23:01
Kontaktdaten:

Beitrag 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
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Danke

Beitrag 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
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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("","")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

thx

Beitrag 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
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Rokur
Beiträge: 167
Registriert: 29.12.2005 09:58
Computerausstattung: Intel Core2 Quad (4x2,4 GHz), 4096 MB RAM, GForce 8800GTX 786 MB
Windows XP 32 Bit, PureBasic 4.40 (x86)

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

thx

Beitrag 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
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Antworten