Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] new crone, standalone jack client #661

Merged
merged 118 commits into from Dec 27, 2018
Merged

[WIP] new crone, standalone jack client #661

merged 118 commits into from Dec 27, 2018

Conversation

@catfact
Copy link
Collaborator

@catfact catfact commented Dec 2, 2018

3rd time is the charm for PR #650

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 7, 2018

hrm, you tried this?

(With appropriate address ofc.)

https://github.com/monome/norns/blob/feature/new-crone/crone/osc-tests/softcut.scd

Glad the routing is basically working

@tehn
Copy link
Member

@tehn tehn commented Dec 7, 2018

yep. crone reports getting all of the commands, but no audio happening. will keep on it, make sure i'm not being dumb.

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 7, 2018

i'll be able to look on the norns tonight or tomorrow.

if you want to troubleshoot in the meantime, i guess i'd check that the softcut client is being created and connected correctly.

firstly, that there are no errors being thrown from client creation (https://github.com/monome/norns/blob/feature/new-crone/crone/src/Client.h) - these would show up amidst the early output that normally looks like:

setting up jack clients..
engine sample rate: 48000
engine sample rate: 48000
starting jack clients..
connecting ports... 
starting OSC interface...

("engine sample rate" is coming from each client init.)

and then see what jack_lsp prints once its running. this lists all the ports:

~$ jack_lsp
system:capture_1
system:capture_2
system:playback_1
system:playback_2
crone:input_0
crone:input_1
crone:input_2
crone:input_3
crone:input_4
crone:input_5
crone:output_0
crone:output_1
crone:output_2
crone:output_3
crone:output_4
crone:output_5
softcut:input_0
softcut:input_1
softcut:output_0
softcut:output_1

and with -c option also shows connections:

~$ jack_lsp -c
system:capture_1
   crone:input_0
system:capture_2
   crone:input_1
system:playback_1
   crone:output_0
system:playback_2
   crone:output_1
crone:input_0
   system:capture_1
crone:input_1
   system:capture_2
crone:input_2
   softcut:output_0
crone:input_3
   softcut:output_1
crone:input_4
crone:input_5
crone:output_0
   system:playback_1
crone:output_1
   system:playback_2
crone:output_2
   softcut:input_0
crone:output_3
   softcut:input_1
crone:output_4
crone:output_5
softcut:input_0
   crone:output_2
softcut:input_1
   crone:output_3
softcut:output_0
   crone:input_2
softcut:output_1
   crone:input_3
@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 7, 2018

ok, also added some prints to ensure enabled and level commands are actually being handled by the softcut client

@tehn
Copy link
Member

@tehn tehn commented Dec 8, 2018

thanks! will test on Sunday when I am back

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 10, 2018

@tehn i was able to get sound and softcut working as expected,
it took longer than i expected and not even quite sure why,
but one silly mistake i made over and over was to fail to realize that each of the scripts in crone/osc-tests redefines the target address (to "localhost", so, they fail). its dumb

anyways it seems to be basically doing its thing,
usage is ~14% for 2 voices.
will try bumping up voice count to 4,6

still haven't really tested phase, vu polls on the device, or made lua attachments

@tehn
Copy link
Member

@tehn tehn commented Dec 10, 2018

just back now. i wasn't redefining the target address but was single-lining the osc-test scripts... will check again and let you know what i see.

14% for two voices seems pretty good? i have no actual ambition to get beyond 4 voices.

oh, likewise. i didn't test the polls yet. will do that.

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 10, 2018

seems ok so far with 6 voices

with rate=1 for all voices, 1-2s loops, usage is ~44%

higher rates mean more upsampling and more usage. with rate=6 (for each of 6 voices) it goes up to ~66%, and with rate=8 to ~75%. that seems problematic, though haven't actually had noticeable dropouts or other problems yet.

the other parameter, that comes to mind, to crank for worst case, is really small loop times.

gotta put this down again for now, sorry :/

@tehn
Copy link
Member

@tehn tehn commented Dec 10, 2018

wow. awake into softcut with the 6-voice test. initial testing is super positive. i'll continue to get into the details.

this is amazing, thank you!

@tehn
Copy link
Member

@tehn tehn commented Dec 10, 2018

working on oracle to connect new crone to matron.

current sc/crone deals with levels in db.amp, new-crone is float. do we have a preference? we can always do db-conversion in lua (?)

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 10, 2018

we can always do db-conversion in lua (?)

thats what i figured

@tehn
Copy link
Member

@tehn tehn commented Dec 11, 2018

could you clarify voice and channel here?

// args: channel index, voice index, level
n.sendMsg("/set/level/in_cut", 0, 0, 1.0);

there are 6 voices, right? i thought they were all mono? or perhaps i'm mis-interpreting "channel"?

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 11, 2018

yes, softcut voices are mono (for now)

that command is to connect an ADC input channel to a softcut voice

@tehn
Copy link
Member

@tehn tehn commented Dec 11, 2018

ah, understood. in is the bus which could contain adc and ext correct?

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 11, 2018

that's right; at the moment softcut client only has a single stereo input

(sorry yes prev answer was misleading.)

if we want, ext and ADC paths could be separate

@tehn
Copy link
Member

@tehn tehn commented Dec 17, 2018

EDIT: FALSE ALARM.

my sc paths and files were all messed up switching between branches. must finalize the folder re-org


trying to figure out if i smashed by sc config or not. when loading PolySub (via earthsea.lua) i'm seeing:

ERROR: Server-getControlBusValue only supports local servers

i'm quite possibly messing something up, but wondering if this was triggered by the new approach to supernova loading. in that case, i guess there's a way to clean up engines that require a local server?

@catfact
Copy link
Collaborator Author

@catfact catfact commented Dec 18, 2018

wondering if this was triggered by the new approach to supernova loading. in that case, i guess there's a way to clean up engines that require a local server?

ah - yes, that is the case. getSynchronous method on busses will not work. anytime this method is used has to be refactored to use plain get, which is asynchronous with a callback. sorry...

* update oracle/matron start

* tape glue, dbamp, fixes

* scrub sc/crone first pass

* add vu start/stop

* more glue

* more glue

* cut buffer glue

* cut phase glue

* begin sorting

* glue

* combine into audio.lua

* testing and typo fixes

* more testing and fixes

* softcut glue

* lua cut glue

* tape menu integration, metros added

* shutdown fix

* aux->rev ins->comp

* separate clear region

* fix tests

* turn crone VU into blob

* fix vu scaling

* autostart vu, remove vu timer
@tehn tehn changed the base branch from master to dev Dec 27, 2018
@tehn tehn merged commit d97b883 into dev Dec 27, 2018
@simonvanderveldt simonvanderveldt deleted the feature/new-crone branch Feb 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants