No description
Find a file
Marks Polakovs f9ee8493c5 Rework how mic works (fixes #76, fixes #63)
Previously, the mic gain node had both the calibration value as well as the volume control (either the calibration value or zero). This made it impossible to recalibrate the mic while on air, and also broke the calibration slider.

This commit moves it into two separate gain nodes, "calibration gain" and "mix gain", with the analyser node in the middle. It also means that the mic is now calibrated before compression.
2020-04-19 13:29:51 +02:00
config fix build 2020-04-16 12:53:17 +02:00
public Use bundled Font Awesome instead of CDN 2020-04-17 17:37:01 +02:00
scripts
src Rework how mic works (fixes #76, fixes #63) 2020-04-19 13:29:51 +02:00
.env Add basis of webstudio selector server UI. 2020-04-11 22:39:27 +01:00
.env.production Rename prod .env file because it wuz wrong 2020-04-12 10:33:49 +02:00
.gitignore Import stateserver into tree, MyPy-ify, CI-ify 2020-04-13 18:40:03 +02:00
Jenkinsfile please don't deploy pull requests, that would be bad 2020-04-13 18:45:02 +02:00
mypy.ini Add serverside type checking 2020-04-07 12:19:28 +02:00
package.json Use bundled Font Awesome instead of CDN 2020-04-17 17:37:01 +02:00
README.md update README 2020-04-11 12:27:44 +02:00
requirements.ci.txt Revert UTC changes. 2020-04-16 16:37:59 +02:00
requirements.txt Revert UTC changes. 2020-04-16 16:37:59 +02:00
serverconfig.ini.example Revert UTC changes. 2020-04-16 16:37:59 +02:00
shittyserver.py Log reasons for connection ends 2020-04-16 13:07:25 +02:00
stateserver.py Re-registers no longer double connections. 2020-04-17 17:51:38 +01:00
tsconfig.json
yarn.lock Use bundled Font Awesome instead of CDN 2020-04-17 17:37:01 +02:00

WebStudio

WebStudio is URY's big fun machine for doing radio shows from home, using Web Audio and WebRTC.

The clientside is written in TypeScript using React and Redux, the serverside is Python using AsyncIO and JACK.

Development

Requirements

Client:

  • Node.js and Yarn (Yarn 1, 2 isn't supported very well by webpack/typescript/anything really)

Server:

  • Python >=3.7

Installing

Clone the repo and run yarn.

You'll probably want to change the values in .env to reflect the MyRadio environment and/or where the server is running (e.g. if you're running the server locally, change REACT_APP_WS_URL to ws://localhost:8079/stream).

If you want to hack on the server, create a virtualenv and install Python packages:

$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt

Hacking

Start the client by running yarn start.

Start the server by running python3 server.py.

Don't forget to ensure that both TypeScript and MyPy pass, as your code will be rejected by CI otherwise - run tsc --noEmit and/or mypy server.py to check.

Releasing a new version

Every push to master is deployed automatically by Jenkins to https://ury.org.uk/webstudio-dev.

Deploying to https://ury.org.uk/webstudio is also automated but slightly more involved:

  1. Change the version field in package.json to ensure the "about" page is up to date
  2. Push up your version bump and create a pull request to the production branch - https://github.com/UniversityRadioYork/WebStudio/compare/production...master
  3. Once your changes are merged into production they'll get deployed automatically (although you will need to restart the server - ssh to Dolby and run sudo systemctl restart webstudioserver)