AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Soundausgabe ohne Streams
Thema durchsuchen
Ansicht
Themen-Optionen

Soundausgabe ohne Streams

Ein Thema von Macci · begonnen am 9. Mär 2008 · letzter Beitrag vom 9. Mär 2008
Antwort Antwort
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#1

Soundausgabe ohne Streams

  Alt 9. Mär 2008, 17:00
Hallo,

ich versuche zur Zeit ein Programm zu schreiben, dass viele kurze Töne über die Soundkarte ausgibt. Also im Grunde genau wie "Windows.Beep(Frequenz,Dauer)", nur dass der Ton eben nicht über den PC-Speaker ausgegeben werden soll, sondern über die Soundkarte.

Habe schon öfters hier gelesen, dass es mit Streams möglich sein soll, das klappt im Prinzip auch ganz gut, nur leider einfach viel zu langsam. Ich möchte z.B. kurze Töne, die nur 30-40 ms. lang sind hintereinander praktisch ohne Unterbrechung ausgeben, und mit Streams klappt das einfach nicht. In einen Stream gleich mehrere Tönhöhen hintereinander zu schreiben habe ich mir auch schon überlegt, da ich aber nie weiß, welche Tonhöhe als nächstes kommt, ist das für mich auch unbrauchbar.

Hat jemand von euch eine Idee, wie ich es am besten hinkriegen kann, Sound auszugeben ohne auf Streams zurückzugreifen? Werde auch selbst noch weiter suchen, aber vielleicht hat zufällig jemand sowas schon mal gemacht, und kann mir einen guten Tipp geben.

Ich bin für alle nützlichen Tipps und Links dankbar.

Viele Grüße,
Mac
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Soundausgabe ohne Streams

  Alt 9. Mär 2008, 17:01
Du könntest es über die MIDI-Schnittstelle versuchen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#3

Re: Soundausgabe ohne Streams

  Alt 9. Mär 2008, 17:05
Gute Idee DeddyH, aber ist es damit möglich diese typischen Piepstöne, also reine Sinusschwingungen, auszugeben? Soweit ich weiß, muss man da immer auf ein Instrument zurückgreifen. Ansonsten werde ich das gleich mal versuchen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Soundausgabe ohne Streams

  Alt 9. Mär 2008, 17:08
Kommt wohl auf die Wavetable und das ausgewählte Instrument an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#5

Re: Soundausgabe ohne Streams

  Alt 9. Mär 2008, 18:38
Hmm, also ich möchte ja gerne diese Rechtecksschwingung haben, wie sie auch der PC-Speaker erzeugt.
Ich habe jetzt zwar eine Idee wie es gehen könnte, aber das wäre vielleicht wie mit Kanonen auf Spatzen geschossen: Ich würde die Soundkarte einfach direkt ansteuern.

Andererseits will ich meine Soundkarte nicht aus Versehen zerstören
Wie gefährlich ist sowas unter Windows XP? (Direkten Portzugriff würde ich schon hinkriegen, das wär nicht das Problem.)

Aber gibt es vielleicht noch eine elegante Zwischenlösung? Wie ist sndPlaySound intern realisiert? Weis jemand bescheid?

Danke für eure Hilfe,
Macci
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Soundausgabe ohne Streams

  Alt 9. Mär 2008, 21:39
Es ist nicht möglich Sounds ohne zwischenspeichern zu generieren. Du musst immer einen (wenn auch kleinen) Buffer (komfortabel über einen Memorystream zu verwalten) mit deinen Sounddaten füllen und diesen zur Soundkarte (über WaveOut oder Playsound) schicken. Siehe auch: http://wiki.delphigl.com/index.php/T...re-Synthesizer
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#7

Re: Soundausgabe ohne Streams

  Alt 9. Mär 2008, 22:08
@igel457:

Also es geht - zumindest bei meiner Soundkarte - über Basis Port $220 (Reset: Basis+ $6, Tonausgabe: Basis + $C) direkt ohne Zwischenspeicher. Was auf deinem Link steht, ist aber viel interessanter und eleganter als meine direktes Rumpfuschen in der Hardware
Werde ich mir alles in Ruhe durchlesen und probieren. Vielen Dank!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz