Qirky / Troop

Real-time Live Coding collaboration app
306 stars 37 forks source link

no sound when I evaluate code #19

Closed hyansuper closed 5 years ago

hyansuper commented 5 years ago

SuperCollider and FoxDot works fine, but I if evaluate any code in Troop, nothing happens, no sound or error message. For example, If I start the server, and in the client I choose language as FoxDot, then I type "p1 >> pluck()" and evaluate (ctrl + Enter), nothing happens except the following output: `======================================== Changing interpreted lanaguage to FoxDot

======================================== me : p1 >> pluck() ` there is no sound nor any error message in the tenimal window of the server or client by the way, I'm using Ubuntu18.04 and python3.6

Qirky commented 5 years ago

Are you able to run p1 >> pluck() before changing to FoxDot? By default Troop will start up with the FoxDot interpreter so you shouldn't have to change

hyansuper commented 5 years ago

Same result without changing to Foxdot. I don't need to open FoxDot when using Troop, right?

Qirky commented 5 years ago

You need to run FoxDot.start in SuperCollider as you would when running FoxDot normally - but you don't need to start FoxDot using python -m FoxDot. Do you have SuperCollider open and have you run FoxDot.start?

hyansuper commented 5 years ago

I have solved the issue by installing FoxDot with python2.7. previously I was using python3.6 and I install FoxDot with python3.6, then I run python3 run-server.py and python3 run-client.py , but somehow troop is actually using python2.7 as interpretor (just my guess), but I didn't install FoxDot with python2.7 Now I installed FoxDot with python2.7 and the problem is solved even if I run troop with python3.

One more detail to confirm my guess: I set SC3_PLUGINS=True in /usr/local/lib/python3.6/dist-packages/FoxDot/lib/Settings/conf.txt and run server and client with python3.6 but still unable to use the piano function. only after I set SC3_PLUGINS=True in /usr/local/lib/python2.7/dist-packages/FoxDot/lib/Settings/conf.txt, then I run server and client with python3.6 and the piano function is avaiable.

I don't find a option to explicitly set which version of python as the interpretor in the conf.txt file. I don't know if it's a bug or just my computers are messy (both my PC and laptop have the problem). anyway It is working now and I am happy with it :+1: Thanks for this great tool~

Qirky commented 5 years ago

Ahh, the issue is because Troop just runs python -m FoxDot --pipe and uses the version of Python that is associated with the Python command. Troop spawns a new process instead of importing FoxDot so the version of Python you start Troop with won't necessarily be the version of Python FoxDot starts with. Users with only one version installed may not be able to use python3 or python2 from the command line so I'm going to leave it as it is I'm afraid. I would suggest maybe switching your default version of Python to Python3 by adding something like alias python python3 to your .bashrc file

EDIT: I might be able to use sys.executable to use the correct version of Python - will let you know

EDIT 2: Should work now! Try starting Troop with Python 3 then running print(sys.version)

hyansuper commented 5 years ago

Great! now It works as I expect. Troop and FoxDot use the same version of python.