JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=bfd2ca11c35465b24b1c6c09be4fc33bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DirectSound: Soft-Synthie programmieren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
wave_synthese
Mini JLI'ler



Anmeldedatum: 27.09.2003
Beiträge: 3

Medaillen: Keine

BeitragVerfasst am: 27.09.2003, 11:27    Titel: DirectSound: Soft-Synthie programmieren Antworten mit Zitat

Wisst ihr ob man mit DirectSound einen Software-Synthesizer programmieren kann. Sowas würde ich gerne mal machen. Ich hab jetzt zum test schon mal versucht ein Sinuswelle in einen DirectSoundBuffer zu schreiben. Das hat auch alles gut geklappt. Aber was ist wenn ich diese Welle jetzt mit meinen eigenen Algorithmen manipulieren will (zum Beispiel mit einer anderen Welle zu Modulieren). Das müßte während des Abspielens passieren können, aber das unterstützt directSound nicht.
Was kann ich da machen?

gruß
raufi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Claudio
Junior JLI'ler



Anmeldedatum: 25.08.2002
Beiträge: 63

Medaillen: Keine

BeitragVerfasst am: 28.09.2003, 17:54    Titel: Antworten mit Zitat

hmm, würde mich auch interessieren wie es geht so sounds live zu modifizieren, da könnte man sich coole PC-Gitarreneffekte selbst programmieren...hmm, also wenn jemand weiss wies geht, meldet euch hier Wink
_________________
-->http://www.en-studios.de<--
Voilà die neue Homepage ist fertig!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
wave_synthese
Mini JLI'ler



Anmeldedatum: 27.09.2003
Beiträge: 3

Medaillen: Keine

BeitragVerfasst am: 29.09.2003, 15:45    Titel: Antworten mit Zitat

Solche Soft-Synthies gibt es ja schon massenweise: "N.I. fm7", "autaria modularsystem", auch bei verschiedenen Music programmen (Steinberg, MAGIX) sind welche drin. Aber selbst proggen macht noch mehr spaß. Und mit der Frequenz-Modulation kann man bestimmt auch eine schöne, überdrehte Metal-Gittare "modulieren" Wink

Ich hab jetzt Lösung gefunden: Notification-Points:
an bestimmten Zeitpunkten im Buffer kann directSound ein Event schicken. Aber dafür muss man auch noch was über Windows' Events und Threads wissen.
Man kann zum Beispiel einen Buffer von einer Sekunde erstellen. Und sich von DirectSound zwei evnts schicken lassen, eins am anfang des Buffers (0 ms) und ein anderes in der Mitte des Buffers (500 ms). wenn jetzt das Event "Play-Position in der Mitte" ankommt schreibt man schnell in die erste Häflte des Buffers und bei dem anderen Event genau so nur umgekehrt. Das ist das Konzept des Streaming_buffers.

Das Problem ist jedoch wenn der Buffer zu klein ist entsteht ein Knacken im Ton. Warum kann ich mir auch nicht richtig erklären.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 29.09.2003, 15:58    Titel: Antworten mit Zitat

Das knacken kommt vom starten und beenden des Buffers/Sounds man soll das beheben können in dem man einen sound oder etwas anderes immer im hintergrund abspielt.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
wave_synthese
Mini JLI'ler



Anmeldedatum: 27.09.2003
Beiträge: 3

Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 16:49    Titel: Antworten mit Zitat

Ich lasse den Buffer ja loopen, was meinst du mit im Hintergrund spielen? erläutere mal!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 30.09.2003, 17:54    Titel: Antworten mit Zitat

So genau kann ich das auch nicht erläutern da ich kaum mit Sound arbeite, habe das nur mal im Internet gelesen das man so das knacken unternbinden kann. Irgendwas stand da das man den Sound laufen lassen soll. Aber wie genau das gemeint war habe ich auch nicht verstanden.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
robx
Mini JLI'ler



Anmeldedatum: 02.12.2003
Beiträge: 7

Medaillen: Keine

BeitragVerfasst am: 02.12.2003, 22:37    Titel: Antworten mit Zitat

Hi,

ich bin schon ne ganze weile dabei einen software-synth zu entwickeln...

also im prinzip tu ich die ganzen sounds unabhängig von directx in floating point buffer berechnen, manipulieren und zusammenmixen. dann werden die nach 16bit, 44100kHz konvertiert und an die soundkarte geschrieben.

dabei hab ich immer buffer mit fester größe benutzt, und warte jeweils bis auf der soundkarte genug platz ist, einen ganzen buffer zu schreiben... vielleicht nicht ganz so clever, aber in etwa so:

while( 1 ) {
fill_buffer( &buffer, BUFFER_LEN );

while( 1 ) {

- hole read and write positions vom soundbuffer

if( genug platz zwischen read and write position ) {

- buffer an soundkarte schreiben

} else {
- kurz warten
}

}
}
_________________
just my two cents.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum