[Ubuntu 16.04] Resampling JACK input

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Sando
  • Registratie: Januari 2007
  • Niet online

Sando

Sandoichi

Topicstarter
Ik heb een USB device die 44100 Hz audio naar mijn computer stuurt. Via JACK redirect ik dat dan naar de geluidskaart zodat ik het kan horen en opnemen, maar mijn geluidskaart lijkt alleen 48000 Hz te begrijpen.

Daardoor is er een mismatch, en wordt het geluid hoger afgespeeld. Ik dacht eerst dat dit aan JACK lag, maar blijkbaar kunnen veel onboard audiochips simpelweg alleen 48000 Hz afspelen. Om hardwarematig sample rates aan te passen zou ik een 'echte' geluidskaart moeten aanschaffen.

Is er een manier om die input eerst te resamplen? Dan zou ik (met enig kwaliteitsverlies) gewoon met deze hardware verder kunnen.

USB -> PC -> resampler -> JACK -> Output

🇪🇺 Buy from EU (GoT)


Acties:
  • 0 Henk 'm!

  • andrekappert
  • Registratie: April 2016
  • Laatst online: 20-09 22:05
“en wordt het geluid hoger afgespeeld” klinkt alsof je een bestand eerst met 44100 hz opneemt en vervolgens geforceerd afspeeld met 48000 Hz. Dit kan niet live gebeuren. En het lijkt of deze methode niets met jack te maken heeft. Dat jack niet op 44100 Hz kan werken op de geluidskaart heb ik nog nooit gehoord, dus ik denk dat je jack systeem nog helemaal niet goed is ingesteld.
Eerst moet je een goed werkend jack systeem hebben. Als je een software synhesizer of hydrogen (als test) werkend hebt op dit systeem (en hoort) weet je zeker of dit jack systeem werkend is. Ik gebruik zelf gladish om dit systeem op te bouwen.
De USB device wordt gezien als een 2e geluidskaart. Jack kan maar op 1 geluidskaart tegelijk werken. En kan niet met de uitvoer op kaart 1, en de invoer op kaart 2 ingesteld worden. Dit komt omdat iedere geluidskaart een eigen klok heeft, en deze gaan uit fase lopen. Om het signaal van een tweede kaart in te kunnen voeren in het jack systeem moet een speciaal programma (zita-a2j of alsa_in) opgestart worden. Deze past het uit fase lopend signaal van de 2e geluidskaart voor de 1e geluidskaart aan.
Voor een externe microfoon had ik op de commandline de volgende opdracht nodig (jack moet al zijn opgestart)

zita-a2j -j "C01U" -d hw:C01U -r 44100 -c 2 -S -p 64

Dit kan gewoon vanaf een terminal of vanuit gladish. Ik heb de microfoon “C01U”, maar om de namen van jouw geluidskaarten te vinden gebruik je de opdracht

cat /proc/asound/cards

De te gebruiken naam staat tussen []. Er zijn vermoedelijk meerdere geluidskaarten. Nadat zita-a2j is opgestart verschijnt in de GUI van gladish het device systeem. Door slepen tussen de contactpunten van dit device en bijv. de uitgang kan dan de connectie worden gemaakt. Een ander systeem dan gladish zal ongeveer synonym werken. (package is zita-ajbridge, zita-a2j -h voor help)

Acties:
  • 0 Henk 'm!

  • Sando
  • Registratie: Januari 2007
  • Niet online

Sando

Sandoichi

Topicstarter
Je bedoelt: "Ik wist niet dat dit kon. Weer wat geleerd!"

Ik installeer gewoon jack, plug alles in, route de USB input naar de onboard output (en als jack daar technisch gezien onder water een "speciaal programma" voor start, dan zij het zo).

Als ik vervolgens een E aansla op mijn gitaar, dan hoor ik een G. Alle 44kHz buffers worden gewoon live op 48kHz afgespeeld. Als ik in JACK de buffers vergroot, dan worden de pauzes tussen de te snel afgespeelde buffers ook groter.

🇪🇺 Buy from EU (GoT)


Acties:
  • 0 Henk 'm!

  • sugarlee89
  • Registratie: November 2016
  • Niet online
weet niet welk usb interface je hebt, maar bij Edirol als je niet de advanced mode gebruikt kom je ook niet hoger dan 44.1. Onder andere de UA25 UA25ex en zijn voorgangers, de wat proffesioneler UA-101 weet ik niet of die daar ook last van heeft.

Acties:
  • 0 Henk 'm!

  • andrekappert
  • Registratie: April 2016
  • Laatst online: 20-09 22:05
In de oorspronkelijke vraag was sprake van geluid hoger afspelen. Dit kan live echt niet, want dan krijg je gigantische modulatie /vervorming. Waar moeten de extra samples verschil tussen 44100 en 48000 vandaan getoverd worden. In de reaktie heb je het nu wel opeens over deze modulatie /vervorming/pauzes. Wat dus bewijst dat live niet kan! Dat je in deze herrie nog een toon kan horen is gewoon toeval, voor hetzelfde geld was het programma gewoon vast gelopen. Als je buiten de specifikaties werkt, is het onvoorspelbaar wat de effecten zijn.

“en als jack daar technisch gezien onder water een "speciaal programma" voor start” Dit doet jack dus niet! Dat moet jij doen. Jack sluist de geluidsinformatie gewoon tussen de programma’s door. De programma’s bewerken/converteren het, niet jack.

Het probleem is gewoon dat de input bij jack op dezelfde geluidskaart moet zitten als de output. Anders blijf je de mismats van de interne klokken houden. (Ook als de ene geluidskaart op 44100 Hz zit en de andere geluidskaart op 44100,001 Hz houdt je deze mismats. Een klok is nooit exact 44100, maar zit er in reele tijd iets naast)
Je zult dus echt het programma zita-a2j moeten gebruiken.

Ik vroeg me eerst af of je beseft dat je jack niet alleen moet installeren maar ook moet opstarten en dat je dus alles binnen het ALSA systeem regelt. Dit omdat bij mij de externe geluidskaart/device helemaal niet zichtbaar is binnen het jack systeem zonder gebruik van het programma zita-a2j. Dit komt dus waarschijnlijk doordat je de input van jack op de externe device hebt ingesteld. Omdat je verschil hoort bij wijzigen van de grootte van de jack buffer ga ik er van uit dat deze wel dus wel is opgestart.