AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Wave direkt aus nem Array abspielen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wave direkt aus nem Array abspielen?

Ein Thema von dizzy · begonnen am 1. Dez 2004 · letzter Beitrag vom 1. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 18:19
Tach miteinander!

Ich breche mir gerade gut einen ab dabei... Ich möchte gerne ein Wave abspielen dessen Daten ich ein einem array of SmallInt (also 16 Bit Wave-Daten) halte. Nur irgendwie bekomme ich das so garnicht hin.
Ich hab jetzt schon einiges mit DelphiX versucht zu drehen, aber ich bekomme das Teil einfach nicht von Hand initialisiert. Und einfach eine temporäre Datei zu erzeugen finde ich absolut unschön, zumal es sich um Wavedaten im Millisekundenbereich handelt (ich will jetzt nen Sythesizer bauen ).

Ich bin absolut nicht auf DirectX festgelegt! Jede möglichkeit ist mir lieb um mein array hörbar zu machen
Kennt da einer was?

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 18:47
wenn du das in echtzeit berechnen und wiedergeben willst ( midi gesteuert z.b. ) dann müsstest du wohl den ASIO treiber bzw ASIO2 oder DirectX (das ist langsamer und fast nicht zu gebrauchen) benutzen, sonst haste da eine derbe latenz drin.

fürs offline synthesizen und rumprobieren reicht das normale unbeschleunigte audiotreiber system aus. aber für live glaub mir, ist es absolut nicht gut wenn du da keinen ASIO standard unterstützen würdest.
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#3

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 20:22
MSDN-Library durchsuchenplaysound, ist aber nur eine zweitklassige Lösung.
Am besten beschäftigst du dich direkt mit DirectSound.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 20:36
@supermuckl: Naja, Fruityloops läuft bei mir auch über DirectX (bietet aber auch ASIO), und das klappt auch mit x Synthies noch gut . Aber an sich wäre ASIO eine feine Sache, da bin ich nicht drauf gekommen. Jetzt gibt es da nur ein winziges Problemchen: Wo zum Henker finde ich Infos/Kompos um ASIO anzusprechen!?

@Tubos: Sauberes Loopen ist damit quasi nicht möglich - zumindest wenn man aus einer Datei abspielt (die für jeden Aufruf neu geöffnet wird). Und das ist schon sehr wichtig, da ich keine Lieder abspielen will, sonden ein Waveform-Loop von wenigen ms Länge. Zudem ist ja das eigentliche Problem nicht womit ich abspiele, sondern wie bekomme ich meine Daten worein? (ohne Umweg über ein Wavefile)

Direktes DirectSound - ich weiss ja nicht ob ich das hinbekomme... DX ist für mich immer noch ein Buch mit 6 1/2 Siegeln. Ein wirklich gutes Grundlagen-Tut täte da wohl Not, und ich habe bisher nur solche gesehen die davon ausgingen dass man das Konzept/System schon längst durchblickt hat, und sofort mit Code (meist auch noch VC++ *shiver*) beginnen.
Mir fehlt irgendwie das Gesamtverständnis zu DirectX - ich weiss nur dass meine Zocks damit prima laufen


Danke euch beiden schon mal! Werd mal versuchen noch was zu ASIO rauszufinden... und u.U. DirectSound
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 20:40
naja wie gesagt, die latenzzeit merkst du nur, und sie stört dich auch nur, wenn du z.b. mit einem midi eingabegerät ( keyboard ) spielst, und dein softwaresynthesizer soll darauf in echtzeit töne von sich geben. dann kommt midi in realtime und der sound wenige millisekunden hinterher und sowas ist extrem störend..
in fruity loops machst du ja alles offline und lässt abspielen. da fällt dir die verzögerung 1. nicht auf und 2. nervt es nicht

ASIO und DirectX sind da die einzigen anlaufstellen für latenzfreien sound.

es geht auch noch mit gigasampler schnittstellen aber sowas unterstützen nur teure soundkarten

ASIO übrigends auch nicht jede billigkarte, aber schon die CreativeLabs Audigy 2 ZS für knappe 70 kröten hat es!

je nach soundkarte ist die latenzzeit größer ( und je nach wavebuffer größe )
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 20:46
Zitat von supermuckl:
in fruity loops machst du ja alles offline und lässt abspielen. da fällt dir die verzögerung 1. nicht auf und 2. nervt es nicht
Stimmt ja... ich hab mal mein Keyboard mit FL verwendet, und ich erinnere mich daran es aus diesem Grund recht schnell wieder aufgegeben zu haben

Zitat von supermuckl:
es geht auch noch mit gigasampler schnittstellen aber sowas unterstützen nur teure soundkarten
Na, sooo hoch wollmer net greifen.

Zitat von supermuckl:
ASIO übrigends auch nicht jede billigkarte, aber schon die CreativeLabs Audigy 2 ZS für knappe 70 kröten hat es!
Meine SB Audigy Player sogar auch


Hast du zufällig nette Links in diese Richtung (wenn möglich sogar mit Delphibezug)?
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 20:53
nein leider garnichts developer mäßiges.

ich mach nur nebenbei als hobby musik und kenn mich deshalb ein wenig aus mit dem zeug.

{schleichwerbung}

guck mal auf meine page unter selfmade music

{/schleichwerbung}
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 20:55
YEAH! Die ersten 2 Treffer bei Google sehen echt spitze aus! Für alle die sowas mal suchen sollten:

ASIO SDK für Delphi
DirectX SDK für Delphi (Der hier verlinkt sogar auf den ersten )

\\edit2: evtl. auch interessant in diesem Zusammenhang: ASIO- & VST-Host

Bin jetzt erstmal wieder beschäftigt damit rauszubekommen ob ich damit klar komme. Danke für den Denkanstoß!

\\edit: Die Mucke bockt! Reason klingt echt schon nett, woll!? Ach wenn ich doch nur auch endlich meinen Webspace auf unserem Clanserver hätte... hab hier auch noch so einiges rumliegen...
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 21:02
np

es wird auf jeden fall das optimum sein, es gleich richtig zu machen. am meisten spass macht sowas, wenn du dann in echtzeit dein keyboard abrocken lassen kannst und dein softsynth macht die sounds

auch wenn es evtl schwieriger ist, mit asio oder DX zu arbeiten, ist es trotzdem sehr zu empfehlen, sich da durch zu kämpfen.

lege am besten die prio auf asio. das ist wirklich nur dafür gemacht, das es die latenz auf ein minimum reduziert. DX ist zwar auch schneller als der standardtreiber, ist aber noch lange nicht so schnell wie der ASIO.

in den meisten audio apps kann man übrigends wählen ob man asio oder dx oder standard haben will.

evtl kannst du es ja auch so machen, das du dann nurnoch eine einzige schnittstelle hast, und dort dann wählen kannst.
es sieht zwar so aus als ob es sowas gäbe ( so wie bei der codec auswahl @ verschiedene video editoren usw )
aber es könnte auch für alle 3 fälle gesondert programmiert worden sein und nur eine standard gui dafür gemacht worden sein, wo es dann so aussieht alsob

schwer auszudrücken.. zieh dir das Demo von Reason (www.Propellerhead.se), damit arbeite ich. Dort kann man das besagte so auswählen.
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Wave direkt aus nem Array abspielen?

  Alt 1. Dez 2004, 21:08
Ich werf hier einfach mal diverse APIs in den Raum..
waveOutOpen()
waveOutPrepareHeader()
waveOutWrite()
waveOutClose()
...
Manuel Pöter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:01 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