AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Töne (wave-rohdaten) mischen
Thema durchsuchen
Ansicht
Themen-Optionen

Töne (wave-rohdaten) mischen

Ein Thema von SirThornberry · begonnen am 6. Mär 2007 · letzter Beitrag vom 6. Mär 2007
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

Töne (wave-rohdaten) mischen

  Alt 6. Mär 2007, 10:15
Hallo,

ich möchte zwei wave-Dateien mischen. Die Dateien haben das gleiche Waveformat (Samplerate etc.) und ich weiß das man letztendlich nur die Samples addieren muss um einen gemischten Ton zu erhalten.

Anfangs hab ich versucht den Mittelwert von 2 Samples zu bilden was natürlich unschön klingt weil die Stille mit verstärkt wird wenn man Stille mit Gesang mischt.
Wenn man einfach nur die Samples addiert und nicht durch die Anzahl der addierten Samples teilt klingt das ganze auch ordentlich.
Allerdings habe ich meine Bedenken das dies auch gut klingt wenn ich 20 Dateien mische denn dann wird der Samplewert irgendwann so hoch das er nicht mehr in den 16bit wert passt (bei 16bit sound). Und wenn ich dann den wert einfach abschneide müsste es ja übersteuert klingen. Wie macht man das also richtig?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Töne (wave-rohdaten) mischen

  Alt 6. Mär 2007, 10:41
Zitat von SirThornberry:
Hallo,
Hallo!

Zitat von SirThornberry:
ich möchte zwei wave-Dateien mischen. Die Dateien haben das gleiche Waveformat (Samplerate etc.) und ich weiß das man letztendlich nur die Samples addieren muss um einen gemischten Ton zu erhalten.

Anfangs hab ich versucht den Mittelwert von 2 Samples zu bilden was natürlich unschön klingt weil die Stille mit verstärkt wird wenn man Stille mit Gesang mischt.
Diese Aussage verstehe ich nicht ganz. Meinst du, dass der Gesang leiser wird? Wenn du die 16-Bit Samplewerte als vorzeichenbehaftete Werte (SmallInt) interpretierst, sollte Stille (0) überhaupt keine Auswirkungen haben.

Zitat von SirThornberry:
Wenn man einfach nur die Samples addiert und nicht durch die Anzahl der addierten Samples teilt klingt das ganze auch ordentlich. Allerdings habe ich meine Bedenken das dies auch gut klingt wenn ich 20 Dateien mische denn dann wird der Samplewert irgendwann so hoch das er nicht mehr in den 16bit wert passt (bei 16bit sound).
So macht's die Natur auch - die Wellen werden einfach überlagert. Allerdings gibt's da den Overflow nur in der jeweils betroffenen Membran (Lautsprecher oder Ohr) und nicht als "Digital Distortion" in einem Samplewert.

Zitat von SirThornberry:
Und wenn ich dann den wert einfach abschneide müsste es ja übersteuert klingen. Wie macht man das also richtig?
Ich habe ein ähnliches Problem mal so gelöst:
1. Der Zielpuffer besteht aus 32-Bit Integer-Werten
2. Jeder Kanal (jede Wave-Datei) bekommt eine Lautstärke von 0-256, und der Sample-Wert multipliziert mit der Lautstärke wird jeweils zum Zielpuffer addiert
3. Die Werte im Zielpuffer dividiert durch 256 (also um 8 Bit nach Rechts geschoben) ergeben dann das Ergebnis. Hier musst du auf Überlauf prüfen (-32767 <= Samplewert <= 32767). Liegt der Wert außerhalb dann musst du Clippen, d.h. auf den Minimal- oder Maximalwert abschneiden.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 20:33 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