Nun, als lesbar würde ich die C++-Codes darin nur bezeichnen, wenn du mir ne Knarre an den Kopf hältst
bei struktur und workflow von C oder java bin ich auch vollnoob, aber dir dort verwendete mathematik lässt sich für uns nichtmathematiker viel einfacher lesen und in andere sprachen übersetzen, ohne dass man nun C können müsste.
if (fsScale != 1.0) {
// scale comb filter delay lines
for (int i = 0; i < numCombs; i++) {
cDelayLen
= (int) floor(fsScale * cDelayLen);
}
// scale allpass filter delay lines
for (int i = 0; i < numAllPasses; i++) {
aDelayLen = (int) floor(fsScale * aDelayLen);
}
}
// initialize delay lines for the LBFC filters
for (int i = 0; i < numCombs; i++) {
combDelayL_.setMaximumDelay(cDelayLen);
combDelayL_.setDelay(cDelayLen);
combDelayR_.setMaximumDelay(cDelayLen + stereoSpread);
combDelayR_.setDelay(cDelayLen + stereoSpread);
}
...zumal da ja oft auch alles ordentlich kommentiert ist.
vor allem beschäftigen sich wissenschaftliche papiere mit viel zu viel kram, den man zum bloßen bauen überhaupt nicht braucht.
was hab ich denn davon zu wissen, dass die sich das ampltudenspektrum des onepole allpasses wie folgt berechnet:
sebst die blockdiagramme in solchen papieren erscheinen mir immer ein wenig überkompliziert zu sein, zumal ich alles, was aus elektrischen schaltplänen stammt, auch nicht flüssig lesen und korrekt interpretieren kann.
praktiker kommunizieren da viel klarer:
das kann ich nun in einer sprache, die ich halbwegs kenne, sofort umsetzen.
wobei dazu verraten sei, dass falls man es nicht hinbekommt den filter kernel selbst zu bauen damit er exakt genau so funktioniert wie dort beschrieben, dass man natürlich auch genauso gut irgendeinen anderen comb und irgendeinen anderen onepole verwenden kann.
chowning hat das schröder II mindestens 5 mal geändert, bis es ihm gefiel. das darfst du auch.
um das freeverb zu bauen und spass damit zu haben muss ich auch nicht wissen ob die von mir verwendete max/csound/c++ klasse für den combfilter 2-fach oder 4-fach upsampling macht oder ob der biquad auch bloß direct form II ist oder nicht.
den filter selbst klaut man, kauft man oder programmiert ihn ein einziges mal und dann verwendet man ihn 30 jahre lang.
ich baue allerdings keine freeverbs, weil ich besseres habe.
Hier die verhallte Version der zweiten Variante
mich würde mal interessieren wie die zeiten und die amplituden deiner reflektionen aussehen. diese ratchet-mäßigem echos dort klingen zwar ganz nett, aber nicht nach einem halbwegs natürlichen raum, weil dort die frequenzfilterung normalerweise mit der verzögerungszeit ansteigt (weiter weg = stärkere luft absorbtion)
nimm dir hierzu mal ein beliebiges freeverb VST plug-in und analysiere die presets.
Primzahlen spielen ja auch bei reinen Stimmungen eine Rolle.
ganz andere baustelle, oder vielleicht auch nicht.
es geht einfach nur darum zu vermeiden, dass 2 oder mehr verzögerungen sich überlappen und dann eine einzige lautere entsteht, denn das führt zu dem bekannten phänomen des "metallischen" klangs...
Auch wenn ich diesen Zusammenhang nicht konzis erklären kann, aber diese Vermutung drängt sich auf, nicht?
...das kannst du ausprobieren indem du mal 20/40/50/60/80/100 gegen primzahlen (oder auch nur zufällig gewürfelte 3-stellige zahlen) vergleichst.
Back to diffusion
Themenwechsel. Annahme, Vermutung, Arbeitshypothese für mich: Ist Diffusion physikalisch verständlich als second-order reverberation, Nachhall zweiter Ordnung, also ein Hall auf jede Reflektion?
nein, es ist eine abkürzung dafür, jede einzelne
reflektion einer reflektion nicht mehr einzeln berechnen zu müssen.
dass spätere reflektionen in der realität in der tat auch "mehr gestreut" sind ist nur ein nebenaspekt, der unter "deswegen stört es auch nicht weiter" fällt.
erste und zweite reflektionen lassen sich für kubisch/stage/cathedral noch einzeln berechnen, dritte reflektionen gibt es einfach zu viele dafür, als dass man sie noch korrekt ausrechnen will.
da erzeugt man dann eben einfach
irgendwelche (indem man z.b. einen längeres feedbackdelay dahinterhängt, wo sich die einzeln berechneten reflektionen dann immer wieder wiederholen, und dabei aber untereinander gemischt und in der phase invertiert werden.)
Nehmen wir exemplarisch die Täler zwischen den Noppen einer Raufasertapete: Das sind doch eigentlich auch wieder "Räumchen", in dem das einzelne Echo des Gesamthalls seinerseits in einer sehr kurzen Nachhallzeit "zerstreut" wird.
das nennt man zwar auch diffusion, aber das ist hier nicht gemeint.
allerdings: halte dir bezüglich dieses reverb designs (erst ein paar reflektion möglichst realitätsnah berechnen, für die späteren dann alles zusammenmatschen) vor augen, dass man genau das auch in theatern macht: mit 50 centimeter großen, leicht schief montierten panelen versucht man die reflektionen ganz bewusst ein bischen "umzulenken" - ganz einfach weil so ein raum besser klingt als ein kubischer.
in einem guten theater- oder konzertsaal kannst du mit geschlossenen augen manchmal nicht mal mehr sagen ob du links oder rechts sitzt.
Betrachtet man Diffusoren, ich meine konstruierte Wandapplikationen aus bestimmten Materialien
die im tonstudio haben wieder ein bischen eine andere aufgabe, aber das wirkungsprinzip ist sicher das gleiche.