https://github.com/wiserim/orchestra
Orchestra is a web based application for simultaneous, collaborative music generation by multiple users.
https://github.com/wiserim/orchestra
audio rtcmulticonnection tonejs vue webaudio-api webmidi webmidijs webrtc
Last synced: 3 months ago
JSON representation
Orchestra is a web based application for simultaneous, collaborative music generation by multiple users.
- Host: GitHub
- URL: https://github.com/wiserim/orchestra
- Owner: wiserim
- License: mit
- Created: 2021-02-19T12:38:56.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-06-06T14:33:57.000Z (almost 3 years ago)
- Last Synced: 2025-01-08T16:27:09.182Z (4 months ago)
- Topics: audio, rtcmulticonnection, tonejs, vue, webaudio-api, webmidi, webmidijs, webrtc
- Language: Vue
- Homepage:
- Size: 8.54 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Orchestra
Orchestra is a web based application for simultaneous, collaborative music generation by multiple users.
Project was part of thesis: *System for generating, editing and transmitting multi-source audio streams using Web Audio API, Web RTC and Web MIDI*.### Abstract
> The object of this thesis is design and implementation of aplication that allows generation, edition and transmission of multi-sourced audio streams with the use of Web Audio API, WebRTC and Web MIDI technologies. Thesis consists of two parts. First one describe with details technical specification, architecture and components of individual technologies. The second part describes design, implementation and tests of demo web application. The application allows to generate, play, modify and record audio streams. Additionally, it enables transmission of generated audio stream to other users via WebRTC.**Key words**: Web Audio API, WebRTC, Web MIDI, sound synthesis, sound processing, peerto-peer communication
![]()
## Features:
* audio editing:
* note based interface,
* support for various audio sources (audio samples, synths, audio inputs, other users audio streams),
* various audio effects,
* audio recording and export to audio file (WAV, OGG, MP3),
* MIDI controls (if supported by browser),
* room management,
* group chat,
* self hosted STUN adn TURN servers.## Project setup
I. Install npm packages.
```
npm install
```
II. Configure TURN server in *app.js*
```javascript
turnServer: {
authMech: 'long-term',
credentials: {
//user: password
TurnServerExampleUsername: 'TurnServerExamplePassword'
},
listeningIps: [
'127.0.0.1' //TURN server ip (host ip)
]
}
```
III. Configure STUN and TURN servers data in *src/store.js*
```javascript
iceServers: [
//STUN server
{
urls: 'stun:stun-server-url.com'
},
//TURN server
{
urls: 'turn:turn-server-url.com',
credential: 'TurnServerExamplePassword',
username: 'TurnServerExampleUsername'
}
]
```### Compiles and hot-reloads for development
```
npm run serve
```### Compiles and minifies for production
```
npm run build
```