Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi soundkarte ansprechen und manipulieren (https://www.delphipraxis.net/52788-soundkarte-ansprechen-und-manipulieren.html)

mr.unbekannt 3. Sep 2005 18:42


soundkarte ansprechen und manipulieren
 
hi@all

ich möchte meine soundkarte ansprechen mit mp3-wiedergabe und sie dann manipulieren indem ich zum beispiel die gesangsspur herausfiltere. kann mir da jemand helfen?

mr.unbekannt

Joachim Rohde 3. Sep 2005 19:19

Re: soundkarte ansprechen und manipulieren
 
In einer MP3 sind allerdings nicht die einzelnen Spuren abgespeichert, so dass man die nicht einzeln manipulieren kann.

mr.unbekannt 3. Sep 2005 21:02

Re: soundkarte ansprechen und manipulieren
 
ja is richtig, man kann sie aber herausfiltern, denke ich, weil: das winamp plugin defx macht es auch! deswegen denke ich ist es auch so möglich!
danke für jede hilfe!

SirThornberry 3. Sep 2005 21:04

Re: soundkarte ansprechen und manipulieren
 
die mp3 reicht man nicht an die soundkarte sondern muss diese vorher decoden und dann als rohdaten an die Soundkarte liefern. Und auch das Rausfiltern der Stimme geht nicht über die Soundkarte sondern du musst es selbst machen (rohdaten manipulieren). Allerdings ist dies so ziemlich ungmöglich, daher gibt es nach meinem Wissensstand auch kein Programm welches das kann (und das obwohl firmen vermutlich mehr geld und ahnung haben als du)

mr.unbekannt 3. Sep 2005 21:07

Re: soundkarte ansprechen und manipulieren
 
danke für die antwort sirthornberry!

wie gesagt bei winamp.com gibt es für winamp ein plugin namens defx und das wurde glaube ich auch privat erstellt und kann aus einer normalen version eine karaoke version machen!

thx

Nikolas 3. Sep 2005 21:08

Re: soundkarte ansprechen und manipulieren
 
Eine Stimme rauszufiltern ist sehr schwierig, teuer und zeitaufwändig. Ich habe einen Bericht darüber gehört, wie eine Firma die Stimme eines Opernsängers aus einer Aufnahme extrahieren wollte um sie dann in die Musik eines anderen Orchesters einzuspielen. Die haben manchmal für ein paar Takte ganze Tage gearbeitet. Also nichts, was du dir schnell wo runterladen oder selbst schreiben könntest.

SirThornberry 3. Sep 2005 21:09

Re: soundkarte ansprechen und manipulieren
 
werd ich mir mal anschauen wie gut das funktioniert. (dann hab ich mich in diesem punkt eben getäuscht, aber das die daten an die soundkarte als rohdaten geschickt werden weiß i zu 100%)

mr.unbekannt 3. Sep 2005 21:11

Re: soundkarte ansprechen und manipulieren
 
wie schon öfter gesagt, bei winamp gibt es diese komponente, es kann also nicht schwer sein sowas zu machen. und dieses plugin ist nicht groß, kann also nicht viel quelltext haben!

mr.unbekannt 3. Sep 2005 21:12

Re: soundkarte ansprechen und manipulieren
 
dazu kann ich nix sagen @ sirthornberry, nur ich dneke das das plugin irgendwie zwischen mp3 und soundkarte hgeht und einfach nur diese spur herausnimmt. dieses plugin funktioniert fast immer!

SirThornberry 3. Sep 2005 21:19

Re: soundkarte ansprechen und manipulieren
 
das plugin wird nicht mit den mp3-Daten versorgt sondern mit den decodierten mp3-Daten also den rohdaten, sonst würde das plugin ja nur bei mp3's funktionieren und nicht bei wave's oder ogg-vorbisdateien

Sierra 3. Sep 2005 21:32

Re: soundkarte ansprechen und manipulieren
 
So weit ich das jetzt ausprobiert habe, hört es sich so an, als würde das Plug-In einfach nur bestimmte Höhen/Tiefen rausfiltern.

omata 3. Sep 2005 21:50

Re: soundkarte ansprechen und manipulieren
 
Habe das auch mal ausprobiert und sehe das genauso wie Sierra.

Das ist nicht so dolle.
Aber wenn du soetwas selber machen möchtest, dann könntest du das z.b. mit dem bass-System machen (siehe BassDllPlayerEx hier im Forum)

MfG
Thorsten

Joachim Rohde 3. Sep 2005 23:13

Re: soundkarte ansprechen und manipulieren
 
Hm... auch auf die Gefahr, mich auf Glatteis zu bewegen:
ich habe mal gehört, dass man die Stimme mehr oder weniger dadurch rausfiltern kann, wenn man den linken und rechten Kanal voneinander subtrahiert. Dadurch, dass die Stimme auf beiden Kanälen gleich 'stark' vorhanden ist, die Instrumente aber auf die beiden Kanäle 'verteilt' sind, erhält man mehr oder weniger das Instrumental-Stück.

Wie gesagt: gefährliches Halbwissen, kann aber auch sein, dass in meiner Bierlaune mir meine Synapsen etwas zusammengereimt haben. Cheers!

Wishmaster 4. Sep 2005 01:01

Re: soundkarte ansprechen und manipulieren
 
Hi

Also ich habe mich auch mal damit auseinander gesetzt. Und das kam dabei raus

ich habe es wieder aus meinem Project raus genommen weil es nicht so funktioniert wie ich es mir erhofft hatte. es ist für Bass.dll feileicht kannst du damit etwas anfangen.

Delphi-Quellcode:

// Remove Vocal
  type
    PSample16 = ^TSample16;
    TSample16 = record
    data: Smallint;
  end;


Procedure DSP_RemoveVocal_16Bit(DSPHandle: HDSP; Channel: DWORD; Buffer: PSample16; Length: DWORD; var User: DWORD); stdcall; export;
var
  i: DWORD;
  dmch: Smallint;
  lch, rch: PSample16;
begin
    try
     i := 0;
     lch := buffer;
     rch := buffer;
     Inc(rch);

     while (i < length) do
       begin
       dmch := Trunc(((0 - lch.data) + rch.data) / 2);

        lch.data := dmch;
        rch.data := dmch ;

        Inc(lch, 2);
        Inc(rch, 2);
        Inc(i, SizeOf(Smallint) * 2);
      end;
    except
     //Error()
 end;
end;



    else
     RvHandle:= BASS_ChannelSetDSP(Channel, @DSP_RemoveVocal_16Bit, 0, NumEQBands+3)
   end
  else
   if RvHandle <> 0 then
    if BASS_ChannelRemoveDSP(Channel, RvHandle) then
     RvHandle:= 0;

dizzy 4. Sep 2005 04:10

Re: soundkarte ansprechen und manipulieren
 
Hier geht es zwar um das Isolieren von einzelnen Instrumenten, aber die Problematik an sich ist identisch.

\\Edit: Die Idee mit der Subtraktion der Kanäle ist... sagen wir auf extrem wenige Spezialfälle anwendbar ;). Sobald die Stimme (wie es meist der Fall ist) nicht immer genau mittig liegt, bzw. Echo-/Hall-/Choruseffekte drauf liegen (die fast immer eine Stereoerweiterung nutzen um den Klang voller zu machen) hast du schon ein Problem.
Ein weiteres hast du noch: Was ist mit Intrumenten die sicher nicht alle 100% auf nur einem Kanal liegen? (Das gabs nur gaaanz früher beim ersten 4-Kanal Module-Tracker Format :D) Du ziehst diese gleichermaßen raus.
In Einzelfällen kann das wie gesagt zumindest ansatzweise die Stimme killen, aber sicher nie ganz und man wird sich auch den instrumentalen Teil gewaltig verstümmeln :?.

mr.unbekannt 4. Sep 2005 13:26

Re: soundkarte ansprechen und manipulieren
 
danke für alle antworte, bei den plugin von winamp wird dieser kanal nur herausgefiltert. nur wie kann ich das machen, wie kann ich einzelne kanäle herausfiltern? die bass.dll habe ich mir schon mal angeguckt, bin nur net richtig mit klargekommen! vieleicht kann mir da jemand helfen!

dizzy 4. Sep 2005 13:31

Re: soundkarte ansprechen und manipulieren
 
Ein Kanal ist bei mp3s links oder rechts. Es gibt einfach keinen Voice-Channel, alle Audiodaten befinden sich (bei Stereo) immer in 2 Kanälen - einen für links, einen für rechts. Der Gesang ist in keinster Weise vom Instrumentalteil getrennt, und das ist das Problem. Du musst von Hand trennen, und das ist mit o.g. Schwierigkeiten behaftet. Einfach mal nen Kanal killen - so einfach ist das im Tonstudio bevor der Mixdown auf ein Master gemacht wird, aber danach nicht mehr.

mr.unbekannt 4. Sep 2005 13:35

Re: soundkarte ansprechen und manipulieren
 
is mir schon klar dizzy, nur kann man bestimmte höhen und tiefen herausfiltern? die die stimme sind?

Tubos 4. Sep 2005 13:55

Re: soundkarte ansprechen und manipulieren
 
Klar kannst du das machen, aber das funktioniert nicht bzw. nur schlecht.
Wenn du den Frequenzbereich der menschlichen Stimme rausschneidest, schneidest du alle Instrumente auch mit raus die auf dem Frequenzbereich liegen!

omata 4. Sep 2005 13:58

Re: soundkarte ansprechen und manipulieren
 
Ja, man kann bestimmte Höhen und Tiefen herausfiltern.
Allerdings weiss man eben nicht aus welchen Höhen und Tiefen die Stimme besteht.
Das ist von Lied zu Lied bzw. Stimme zu Stimme eben unterschiedlich.

Für das Herausfiltern habe ich doch die BassDllPlayerEx-Komponente erwähnt. Dort habe ich einen Equilaizer eingebaut, dem du unendlich viele Bänder geben kannst. Diese Bänder können sehr schmal gemacht werden. Einfacher kommst du an diese Funktionalität nun wirklich nicht heran.

MfG
Thorsten

dizzy 4. Sep 2005 17:02

Re: soundkarte ansprechen und manipulieren
 
Wie Omata schon schreibt kann man einzelne Frequenzbänder herausziehen, ja. Das Problem dabei ist jedoch nicht der Equalizer an sich, sondern viel mehr die Analyse um überhaupt erstmal herauszebekommen in welchen Bereichen eben die Stimme liegt! Und das sind bei Leibe nicht eine oder zwei Frequenzen ;).
Und wenn man es ganz sauber machen wollte, so muss man auch noch herausfinden welchen Anteil die Stimme in jenem gefundenen Band hat, damit man nicht noch u.U. Instrumente mit beinträchtigt. Um aber DAS zu tun, müsste man "Stimme" als Gesamtheit identifizieren können, und kann sie nichts mehr als "Ansammlung von Frequenzen" betrachten, da diese eine Frequenz an einer Stelle im Lied eben nur noch eine Frequenz ist, und du hast so keine Chance mehr herauszufinden wie groß der Stimmenanteil wirklich ist. Nach meinem Kenntnisstand ist das Erkennen von Stimme an und für sich als zusammengehörige Einheit in frühesten Kinderschuhen steckende Forschung an diversen Instituten - also eher nix für den Hausgebrauch :).

Was die Sache noch gemeiner macht: In fast allen Liedern wird die Stimme nicht "clean" verwendet. Zumindest wird es sehr häufig gemacht, dass ein und die selbe Person das selbe immer und immer wieder singt, und dies dann zusammengemischt wird um einen volleren Klang zu erhalten. Vollerer Klang -> mehr Frequenzchaos. Dann die Effekte wie Hall oder Chorus. Sie verändern meist auch den Frequenzgang - beim Hall z.B. fliegen viele Tiefen raus, und Höhen kommen verstärkt heraus. Es ist fraglich ob man diesen Anteil überhaupt noch via EDV als Teil einer Stimme identifizieren kann.

Ansätze gibt es sicher viele, aber eine wirklich brauchbare Lösung bietet bisher imho niemand. Der o.g. Weg über einen Equalizer stellt meiner Meinung nach noch den Weg dar, der einigermaßen Aufwand und Nutzen aufwiegt. Nur das Einstellen des EQs würde ich per Hand machen, da eben die automatische Analyse in den Bereich "kaum möglich" fällt. Die Instrumente werden hierbei aber sicherlich auch etwas abbekommen, und du wirst die Stimme niemals ganz wegbekommen, da die menschliche Stimme ein sehr breites Spektrum abdeckt. Du würdest also fast das ganze Spektrum killen müssen um alle Stimmteile zu erwischen - die Musik is dann aber auch weg :stupid:


Gruss,
Fabian

mr.unbekannt 5. Sep 2005 13:53

Re: soundkarte ansprechen und manipulieren
 
danke für eure antworten!

mr.unbekannt


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz