Go Back   Home > Forums > >

PC Based Computer music servers, crossovers, and equalization

CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools
Old 30th November 2020, 06:17 AM   #1401
sarcastic1 is offline sarcastic1
diyAudio Member
 
Join Date: Oct 2020
Quote:
Originally Posted by HenrikEnquist View Post
v0.4.0 is released: Release v0.4.0 * HEnquist/camilladsp * GitHub
See the changelog and the readme for details!

Got to give Henrik a tremendous vote of thanks for all the help over the last days.

It wasn't a walk in the park.



I have a project which entailed prototype running Raspberry OS-x86 "live install" on a SD card via a USB reader.
It runs on an old but good IBM x86 notebook, with multi boot.
(4 different OS no less & 2 hard disks, one of which is in a draw-thanks to IBM's "meccano" boy's toys concept ).



The first test - "proof of concept" was to make DRC (if you can call it that) on an old Sennheiser headphone* which had known issues.
I have (new gen) sound engineers turning their noses up at them, - until I come out with "don't knock it 'til you tried it"!


The trick bit, is having 2 sound cards in the Notebook, one of them being one of the very few rare pro sound cards in a PCMCIA reader (no USB wanted there, as it's direct to PCI - cardbus), and has balanced in/out XLR + Spdif native.


It has a wiring harness that pours out of the end of the PC card with on some of them the connectors to connect an external clock chip.

That is super, and the AKM DAC is not so bad.



I have to say after making a rough and ready (thanks henrik!), correction to the Senn's spikes, (for which we had proper data from 1987) the headphones were transformed out of all recognition.


My feeling at 2am in freezing URAL when it worked was WOW!



Being as I strongly believe in a stepwise approach,-

test, validate, then adopt,



I felt this was a very useful modular approach to optimising the ARM version of Raspberry OS with a high end DAC on the only just released CM4 boards.


FYI the new CM4 also has an external wifi antenna connector and PCI-e slot.
This makes them an ideal candidate for insertion into a DANTE system..


I have spoken to the company making Linux support for a Dante board that goes into that slot, so watch this space.


They are developing some stuff, and I have the sw engineer's card.

Headphone DSP correction in studios, you bet!


*The headphone was an ancient HD414.
It now sounds much better than many modern ones.
  Reply With Quote
Old 1st December 2020, 04:07 AM   #1402
camplo is offline camplo
diyAudio Member
 
Join Date: Feb 2019
Hi, everyone, I am just learning of this wonderful program...Can someone report on the latency of processing this way....I've used equalizer api in the past the latency it ads to the system is higher than running eq on my minidsp...how does latency fair on this platform...I would like to see a 2 channel three way be be equalized very well per channel.
  Reply With Quote
Old 1st December 2020, 08:48 PM   #1403
HenrikEnquist is online now HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Quote:
Originally Posted by sarcastic1 View Post
Got to give Henrik a tremendous vote of thanks for all the help over the last days.

It wasn't a walk in the park.
Thanks! So now it's time to continue with setting up the gui



Quote:
Originally Posted by camplo View Post
Hi, everyone, I am just learning of this wonderful program...Can someone report on the latency of processing this way....I've used equalizer api in the past the latency it ads to the system is higher than running eq on my minidsp...how does latency fair on this platform...I would like to see a 2 channel three way be be equalized very well per channel.
The total latency depends on many things, but if you go with IIR filters, or FIR where the main impulse comes near the beginning, and a not too large chunksize (1024 is usually a good start) then there should be very little latency added.

Are you using Windows? I haven't tried to measure how much delay is added by going through VB-Cable+CamillaDSP chain, so can't give a number.
I used EqualizerAPO before. I did not notive any added delay with IIR filters, and only the expected delay from FIR. How was your setup?
__________________
CamillaDSP - cross platform dsp engine
Reporting an issue with CamillaDSP? Please attach the config file and the log from a run with "debug" log level.
  Reply With Quote
Old 2nd December 2020, 06:57 PM   #1404
sarcastic1 is offline sarcastic1
diyAudio Member
 
Join Date: Oct 2020
Just a little extra.
Latency seems to quite OK to begin with, but if left running for many happy hours will give a 2-3sec delay when run with video.


After reboot, the audio-vid sync came back to normal.
Not sure why this could be but bears looking at.


I suppose not many people imagine to use a DSP with TV type sound (mpg4) but it can be useful.
  Reply With Quote
Old 2nd December 2020, 08:01 PM   #1405
HenrikEnquist is online now HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Quote:
Originally Posted by sarcastic1 View Post
Just a little extra.
Latency seems to quite OK to begin with, but if left running for many happy hours will give a 2-3sec delay when run with video.


After reboot, the audio-vid sync came back to normal.
Not sure why this could be but bears looking at.


I suppose not many people imagine to use a DSP with TV type sound (mpg4) but it can be useful.
This is a mismatch in rate between the Alsa loopback and your soundcard. It's easy to fix! The trick is that the loopback allows its rate to be fine-tuned to match another device, and CamillaDSP can do that if you ask for it.

Post your config file, and I'll show you what to change.
__________________
CamillaDSP - cross platform dsp engine
Reporting an issue with CamillaDSP? Please attach the config file and the log from a run with "debug" log level.
  Reply With Quote
Old 5th December 2020, 04:10 PM   #1406
jdarg is offline jdarg  United States
diyAudio Member
 
Join Date: Aug 2005
Hi I'm trying to get Camilla working on a Windows PC in an attempt to move off of equalizer APO. I'm getting this error - any suggestions on how to resolve?

2020-12-05 10:02:29.176 ERROR camilladsp - Capture error: A backend-specific error has occurred: failed to build capture client: OS Error -2004287485 (FormatMessageW() returned error 15100) (os error -2004287485)
  Reply With Quote
Old 5th December 2020, 06:51 PM   #1407
HenrikEnquist is online now HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Could you post your config file, and the output of this program?
Release First release * HEnquist/cpal-listdevices * GitHub
Just download the prebuilt windows version, unzip it and run it in a terminal.
__________________
CamillaDSP - cross platform dsp engine
Reporting an issue with CamillaDSP? Please attach the config file and the log from a run with "debug" log level.
  Reply With Quote
Old 6th December 2020, 12:46 PM   #1408
sarcastic1 is offline sarcastic1
diyAudio Member
 
Join Date: Oct 2020
Another few days, and it's been non stop fun.


Not only have the x86 version working now (on the notebook with studio card), but got the 64 bit arm version up and running if only using the cheapy HDI/headphone output on the RPI.


This meant I could start creating working profiles for headphone corrections. It works like a dream.
Nothing the aftermarket for tweaking headphones in the normal analog way works like this.


The Senn HD650 once sorted out sounds like something totally different.
No more harshness, and a much closer approach to the original sound, and that was only the beginning...


..after that I tackled the monster hifi system with all kinds of notches (it's a big valve amps system ++)

The change in sheer clarity was literally astonishing, it just removes resonances in the system

(eg a nasty one at 5800hz-6100hz on the compression horn tweeter, which you simply cannot remove with analogue components).



I thought I would let you know how I got on with the install.

There's a few tricks, mostly revolving around Debian/Raspian OS using out of date repos, so DON'T install rustc with Apt, get it from rustrs.


On the ARM chips it's a good idea to check out exactly how "Headphones" are defined. I struggled for quite a while until figuring it out with VLC.


Funnily even on the original headphone output of the RPi, using Camilla + HD650 made it sound quite respectable..


Well done again Henrik!
  Reply With Quote
Old 7th December 2020, 11:52 AM   #1409
lykkedk is offline lykkedk  Denmark
diyAudio Member
 
lykkedk's Avatar
 
Join Date: Dec 2002
Location: Denmark, Fredericia
@Henrik... nice upgrade.

Well i compiled the develop version (0.5.0), but there was an error doing this::

Code:
git clone GitHub - HEnquist/camilladsp: A flexible linux IIR and FIR engine for crossovers, room correction etc.
git checkout develop
git checkout <--- To check if correct !

rustc 1.48.0 (7eac88abb 2020-11-16)

RUSTFLAGS='-C target-feature=+neon -C target-cpu=native' cargo build --release --no-default-features --features alsa-backend --features websocket --features 32bit >

  Compiling serde_yaml v0.8.14
   Compiling serde_json v1.0.60
   Compiling camilladsp v0.5.0 (/home/pi/camilladsp/camilladsp)
error[E0308]: mismatched types
   --> src/basicfilters.rs:110:39
    |
110 |                 self.current_volume = shared_vol as f64;
    |                                       ^^^^^^^^^^^^^^^^^ expected `f32`, found `f64`

error: aborting due to previous error

So correcting line 110:39 till f32 make it compile :)
      // Volume setting changed
        if (shared_vol - self.target_volume).abs() > 0.001 {
            if self.ramptime_in_chunks > 0 {
                trace!("starting ramp {} -> {}", self.current_volume, shared_vol);
                self.ramp_start = self.current_volume;
                self.target_volume = shared_vol;
                self.ramp_step = 1;
            } else {
                self.current_volume = shared_vol as f64;
                self.target_volume = shared_vol;
                self.ramp_step = 0;
            }

pi@raspberrypi:~/camilladsp/camilladsp $ RUSTFLAGS='-C target-feature=+neon -C target-cpu=native' cargo build --release --no-default-features --features alsa>
   Compiling camilladsp v0.5.0 (/home/pi/camilladsp/camilladsp)
    Finished release [optimized] target(s) in 6m 04s
So creating a example .yml like this ::

Code:
tc@piCorePlayer:~/camilladsp$ cat 44100.yml

devices:
  samplerate: 44100
  chunksize: 4096
  queuelimit: 1

  capture:
    type: File
    channels: 2
    filename: /dev/stdin
    format: S32LE
  playback:
    type: Alsa
    channels: 2
    device: "sound_out"
    format: S32LE

filters:
  clipgain:
    type: Gain
    parameters:
      gain: 0.0
      inverted: false

  Baseboost:
    type: Biquad
    parameters:
      type: Highshelf
      freq: 80
      gain: -6
      slope: 6

  volume_l:
    type: Volume
    parameters:
      ramp_time: 200

  volume_r:
    type: Volume
    parameters:
      ramp_time: 200
                
pipeline:
- type: Filter
  channel: 0
  names:
    - clipgain
    - Baseboost
- type: Filter
  channel: 1
  names:
    - clipgain
    - Baseboost

- type: Filter
  channel: 0
  names:
    - Volume_l

- type: Filter
  channel: 1
  names:
    - Volume_r
This .yml are running, NEXT is to figure out how i actually use it through the websocket

Jesper.
__________________
DCG3 Dual DCSTB, AK4490 Dual SuperDAC
AlephJ Mimi! http://www.diyaudio.com/forums/pass-...mimi-mini.html. Github https://github.com/Lykkedk/SuperPlayer

Last edited by lykkedk; 7th December 2020 at 11:53 AM. Reason: Typo
  Reply With Quote
Old 7th December 2020, 05:10 PM   #1410
HenrikEnquist is online now HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Thanks for testing! That only happens when building with the 32bit feature. I don't have any automatic testing for that yet, should definitely be added.

BTW you don't need to define separate Volume filters for the two channels, it's fine to use a single one. It anyway creates separate instances of each filter for each channel. It's better to keep a single definition of shared filters. That removes the risk of confusion from when you change one, but forget about the other one
__________________
CamillaDSP - cross platform dsp engine
Reporting an issue with CamillaDSP? Please attach the config file and the log from a run with "debug" log level.
  Reply With Quote

Reply


CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.Hide this!Advertise here!
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
The room correction or speaker correction? What can we do with dsp power now availabl Raimonds Full Range 233 28th January 2017 08:51 AM
Introducing OpenDRC, Open Digital Room Correction engine minidsp miniDSP 20 20th January 2016 06:37 PM
What the difference between dsp room correction eq and software correction erez1012 PC Based 0 10th March 2014 08:07 PM
Writing a Cross-Platform, Free Software Modeling Tool and TS-Parameter DB justinzane Software Tools 6 31st December 2013 07:55 AM
FS: DAC, room-correction, active crossovers, amp, speakers! taloyd Swap Meet 4 14th April 2009 04:16 PM


New To Site? Need Help?

All times are GMT. The time now is 11:32 AM.


Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2021 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 14.29%
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2021 DragonByte Technologies Ltd.
Copyright ©1999-2021 diyAudio
Wiki