Moderator: Redaktörer
solhaga skrev:Du tickar i många boxar, Henrik!
Tror du att det kan användas som plugin till JRiver som finns för Linux?
Står och faller med de properitära drivarna till min DAC dock (ExaSound E38).
dewpo skrev:Eftersom jag märkt att olika DSP hanterar FIR olika med avseende på impulsens centering
Så slänger jag in en fråga.
I tex BruteFIR Och HQPlayer så går det hantera önskad fördröjning av en kanal med centering av impulsen,
Om jag centrerar Topparna (400ms) och Basen (400ms-120cm) så hanterar detta önskad fördröjning
Medans i Equaliser APO så åsidosätts centering av impulsen i processen och fördröjningen måste hanteras annorlunda
Hur fungerar det i CamillaDSP?
Och kan du som är familjär med matten bakom förklara vad det beror på
AndreasArvidsson skrev:Va skoj. Mycket bra!
Är lite nyfiken på hur du löst en del saker så jag skall ta mig en titt på koden när jag har tid. Även om Rust inte är min starka sida.
HenrikE skrev:AndreasArvidsson skrev:Va skoj. Mycket bra!
Är lite nyfiken på hur du löst en del saker så jag skall ta mig en titt på koden när jag har tid. Även om Rust inte är min starka sida.
Rust har en relativt lättläst syntax, tror inte du kommer ha några större bekymmer
inline const double process(const double data) {
const double out = data * _b0 + _z1;
_z1 = data * _b1 - out * _a1 + _z2;
_z2 = data * _b2 - out * _a2;
return out;
}
AndreasArvidsson skrev:HenrikE skrev:AndreasArvidsson skrev:Va skoj. Mycket bra!
Är lite nyfiken på hur du löst en del saker så jag skall ta mig en titt på koden när jag har tid. Även om Rust inte är min starka sida.
Rust har en relativt lättläst syntax, tror inte du kommer ha några större bekymmer
Nej det är inga större problem, men tar längre tid än språk man är van vid så klart.
Ser att du använder "Direct form 2" för dina biquads och jag blev lite nyfiken på varför du inte gick på "Transposed Direct form 2" istället?
Min egna implementation:
- Kod: Markera allt
inline const double process(const double data) {
const double out = data * _b0 + _z1;
_z1 = data * _b1 - out * _a1 + _z2;
_z2 = data * _b2 - out * _a2;
return out;
}
fn process_single(&mut self, input: PrcFmt) -> PrcFmt {
let out = self.s1 + self.coeffs.b0 * input;
self.s1 = self.s2 + self.coeffs.b1 * input - self.coeffs.a1 * out;
self.s2 = self.coeffs.b2 * input - self.coeffs.a2 * out;
out
}
HenrikE skrev:Nu finns det en alpha-version med stöd för både Windows och macOS att hämta! Och för de vanligaste konfigurationerna slipper man kompilera själv, det finns färdiga exekverbara filer att hämta från Github. Se förstainlägget!
HenrikE skrev:Nu finns det en alpha-version med stöd för både Windows och macOS att hämta! Och för de vanligaste konfigurationerna slipper man kompilera själv, det finns färdiga exekverbara filer att hämta från Github. Se förstainlägget!
devices:
samplerate: 192000
chunksize: 1024
queuelimit: 128
silence_threshold: -60
silence_timeout: 3.0
target_level: 500
adjust_period: 10
enable_rate_adjust: false
enable_resampling: false
resampler_type: Synchronous
capture_samplerate: 192000
capture:
type: Wasapi
channels: 2
device: "CABLE Output (VB-Audio Virtual Cable)"
format: FLOAT32LE
playback:
type: Wasapi
channels: 6
device: "Högtalare (Sound Blaster AE-9)"
format: FLOAT32LE
mixers:
to6channels:
channels:
in: 2
out: 6
mapping:
- dest: 0
sources:
- channel: 0
gain: -3
inverted: false
- dest: 1
sources:
- channel: 1
gain: -3
inverted: false
- dest: 2
sources:
- channel: 0
gain: 0
inverted: false
- dest: 3
sources:
- channel: 0
gain: 0
inverted: false
- dest: 4
sources:
- channel: 1
gain: 0
inverted: false
- dest: 5
sources:
- channel: 1
gain: 0
inverted: false
filters:
lowpass_fir:
type: Conv
parameters:
type: File
filename: ./Lo.txt
format: TEXT
highpass_fir:
type: Conv
parameters:
type: File
filename: ./Hi.txt
format: TEXT
pipeline:
- type: Mixer
name: to6channels
- type: Filter
channel: 0
names:
- highpass_fir
- type: Filter
channel: 1
names:
- highpass_fir
- type: Filter
channel: 2
names:
- lowpass_fir
- type: Filter
channel: 3
names:
- lowpass_fir
- type: Filter
channel: 4
names:
- lowpass_fir
- type: Filter
channel: 5
names:
- lowpass_fir
dewpo skrev:Nu har jag fått det att fungera med spdif ingången,
Det verkar ha varit något problem med namngivningen
Efter att jag bytt namn på ingången så fungerar det
HenrikE skrev:Med spdif in har du ju två oberoende sampelklockor, och du kan råka ut för att de långsamt driver ifrån varann. Har du märkt att du har en långsamt ökande delay, eller kortkorta avbrott i ljudet ibland? Om ja så finns det en ny version nu där den asynkrona resamplern kan användas för att synka med wasapi och coreaudio också! Innan funkade det bara med Alsa.
devices:
samplerate: 192000
chunksize: 1024
queuelimit: 128
silence_threshold: -80
silence_timeout: 3.0
target_level: 500
adjust_period: 10
enable_rate_adjust: true
enable_resampling: true
resampler_type: AccurateAsync
capture_samplerate: 48000
capture:
type: Wasapi
channels: 2
device: "OPTI (Sound Blaster AE-9s)"
format: FLOAT32LE
playback:
type: Wasapi
channels: 6
device: "Högtalare (Sound Blaster AE-9)"
format: FLOAT32LE
mixers:
to6channels:
channels:
in: 2
out: 6
mapping:
- dest: 0
sources:
- channel: 0
gain: -3
inverted: false
- dest: 1
sources:
- channel: 1
gain: -3
inverted: false
- dest: 2
sources:
- channel: 0
gain: 0
inverted: false
- dest: 3
sources:
- channel: 0
gain: 0
inverted: false
- dest: 4
sources:
- channel: 1
gain: 0
inverted: false
- dest: 5
sources:
- channel: 1
gain: 0
inverted: false
filters:
lowpass_fir:
type: Conv
parameters:
type: File
filename: ./Lo_40.txt
format: TEXT
highpass_fir:
type: Conv
parameters:
type: File
filename: ./Hi_40.txt
format: TEXT
pipeline:
- type: Mixer
name: to6channels
- type: Filter
channel: 0
names:
- highpass_fir
- type: Filter
channel: 1
names:
- highpass_fir
- type: Filter
channel: 2
names:
- lowpass_fir
- type: Filter
channel: 3
names:
- lowpass_fir
- type: Filter
channel: 4
names:
- lowpass_fir
- type: Filter
channel: 5
names:
- lowpass_fir
HenrikE skrev:Ok!
Du kan testa en lite större chunksize, 4096 kanske. Det kan få ner cpu-användningen lite och borde inte ge någon märkbar extra fördröjning.
Kör lite större target_level då också, kanske 2000.
Användare som besöker denna kategori: Inga registrerade användare och 7 gäster