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

investigate sc-supernova #435

Closed
catfact opened this issue Jun 25, 2018 · 11 comments
Closed

investigate sc-supernova #435

catfact opened this issue Jun 25, 2018 · 11 comments
Assignees
Milestone

Comments

@catfact
Copy link
Collaborator

@catfact catfact commented Jun 25, 2018

its worth putting a little time into checking the current state of sc-supernova on ARM.

available information and issues online seem a little stale.

@catfact catfact self-assigned this Jun 25, 2018
@simonvanderveldt
Copy link
Member

@simonvanderveldt simonvanderveldt commented Jun 28, 2018

Finally managed to finish sc 3.9.1 compilation on norns, apparently some combination of CMake flags causes compilation to fail :|
Managed to compile it using the following:

$ cmake -L -DCMAKE_BUILD_TYPE="Release" -DBUILD_TESTING=OFF -DSUPERNOVA=ON -DNATIVE=ON -DSC_WII=OFF -DSC_IDE=OFF -DSC_QT=OFF -DSC_ED=OFF -DSC_EL=OFF -DSC_VIM=OFF ..
$ make

At least starting supernova works fine:

we@norns:~/supercollider/build/server/supernova $ ./supernova 
Supernova booting
samplerate mismatch between command line argument and jack
forcing samplerate of 48000Hz
Supernova ready

Next up: Try to get it to replace scsynth and run some scripts

@simonvanderveldt
Copy link
Member

@simonvanderveldt simonvanderveldt commented Jun 28, 2018

So I had to recompile with -DSC_QT=OFF otherwise sclang failed to start because of some missing Qt dependency.

Also had to do a make install otherwise sclang would complain about missing library items, haven't been able to find a way to run it in a "development" setup using the dependencies from within the project/directory.

Anyway, the basics seem to work:

we@norns:~/supercollider/build $ ./lang/sclang 
compiling class library...
	Found 594 primitives.
	Compiling directory '/usr/local/share/SuperCollider/SCClassLibrary'
	Compiling directory '/home/we/.local/share/SuperCollider/Extensions'
ERROR: Class extension for nonexistent class 'HistoryGui'
     In file:'deprecated/3.9/HistoryGui.sc'
	numentries = 665683 / 7120940 = 0.093
	3845 method selectors, 1852 classes
	method table size 4556556 bytes, big table size 28483760
	Number of Symbols 9118
	Byte Code Size 263984
	compiled 228 files in 0.51 seconds

Info: 4 methods are currently overwritten by extensions. To see which, execute:
MethodOverride.printAll

compile done
localhost : setting clientID to 0.
internal : setting clientID to 0.
Class tree inited in 0.04 seconds


*** Welcome to SuperCollider 3.9.3. *** For help type ctrl-c ctrl-h (Emacs) or :SChelp (vim) or ctrl-U (sced/gedit).
sc3> Server.supernova
-> Server
sc3> s.boot
-> localhost
sc3> booting server 'localhost' on address: 127.0.0.1:57110
Supernova booting
samplerate mismatch between command line argument and jack
forcing samplerate of 48000Hz
Supernova ready
Requested notification messages from server 'localhost'
localhost: no maxLogins info from server process.
localhost: keeping clientID (0) as confirmed by server process.
Shared memory server interface initialized

sc3> { SinOsc.ar * 0.1 }.play(s)
-> Synth('temp__0' : 1000)
sc3> 

The sine tone is audible after this.
I guess the next step is figuring out if it works with the norns extensions or maybe run something more complex, but I wouldn't know what. If anyone has any suggestions please let me know :)

[edit] Removed note about sound being mono, which was purely caused by my lack of SC knowledge :)

@audionerd
Copy link
Contributor

@audionerd audionerd commented Jun 29, 2018

The sine tone is audible after this, though only in mono (left side), not sure why.

{ SinOsc.ar * 0.1 }.play(s) is 1 channel
{ SinOsc.ar * 0.1 ! 2 }.play(s) or { SinOsc.ar.dup * 0.1 }.play(s) would be 2 channels

@tehn
Copy link
Member

@tehn tehn commented Jul 2, 2018

ok, i've built and installed it, from the 3.9.3 tarball (i should've just cloned github)

the sclang at 100% issue is back, and i've forgotten how this was fixed. searching git issues was not effective... and the build incantations for the build hosted by @artfwo i can't find anywhere... is that somewhere? and if not we should document it and also host these on the monome site.

switching via Server.supernova just seemed like it works, though i don't know what i'm doing.

@tehn tehn added this to the 1.0.1 milestone Jul 2, 2018
@artfwo
Copy link
Member

@artfwo artfwo commented Jul 2, 2018

the cpu hogging issue is apparently fixed:
supercollider/supercollider#2144

the cmake flags currently used to build packages on device are:

	-DCMAKE_BUILD_TYPE=Release \
	-DNATIVE=1 \
	-DSSE=0 \
	-DSSE2=0 \
	-DENABLE_TESTSUITE=0 \
	-DCMAKE_SKIP_RPATH=1 \
	-DLIBSCSYNTH=0 \
	-DSUPERNOVA=0 \
	-DSC_WII=0 \
	-DSC_IDE=0 \
	-DSC_QT=0 \
	-DSC_ED=0 \
	-DSC_EL=0 \
	-DSC_VIM=1
@tehn
Copy link
Member

@tehn tehn commented Jul 5, 2018

added file startup.scd to ~/.config/Supercollider/ with contents:

Server.supernova

working well, though some errors:

Exception when reading synthdef: Cannot load synth soft_cut_voice: Unit generator SoftCutHead not installed
Exception when reading synthdef: Cannot load synth faust_comp: Unit generator FaustCompressor not installed
Exception when reading synthdef: Cannot load synth faust_verb: Unit generator FaustZitaVerbLight not installed

not sure if locations differ for supernova.

also, my build still is throwing extremely high CPU for sclang so i obviously messed something up.

@audionerd
Copy link
Contributor

@audionerd audionerd commented Jul 5, 2018

Those UGens might require Supernova-compatible builds. There's a flag you can set when building.

@catfact
Copy link
Collaborator Author

@catfact catfact commented Jul 5, 2018

Yeah you need to change norns/SC/wscript

@catfact
Copy link
Collaborator Author

@catfact catfact commented Jul 7, 2018

ok sorry for my delay, busy times.

@tehn

my build still is throwing extremely high CPU for sclang so i obviously messed something up.

i'm not getting this anymore. the requisite patch was (finally) merged upstream in commit 3c3688cd2ba2419f9d4ac9a181972509e84665de on june 23.

re: supernova and ugens. still trying to figure out how to do this through waf. may fall back on cmake builds at least to see if things are working for now.

@artfwo
Copy link
Member

@artfwo artfwo commented Jul 7, 2018

@catfact i think this should be done for plugins to work.

  • add _supernova suffix to plugin binaries.
  • add SUPERNOVA define to CXXFLAGS
  • add NOVA_SIMD define as well
  • make sure header directories nova_simd and nova_tt are present in the includes path.
@catfact
Copy link
Collaborator Author

@catfact catfact commented Jul 7, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants