https://github.com/ekzhang/composing.studio Skip to content Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} ekzhang / composing.studio Public * Notifications * Star 249 * Fork 6 Collaborative music composition for everyone. composing.studio MIT License 249 stars 6 forks Star Notifications * Code * Issues 3 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 0 tags Code Latest commit @ekzhang ekzhang Add product hunt badge to editor page (#21) ... 70fc6ed Sep 22, 2021 Add product hunt badge to editor page (#21) 70fc6ed Git stats * 29 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows Implement continuous deployment to DigitalOcean (#6) Sep 18, 2021 cstudio-server Fix "page not found" error on prod deployment Sep 19, 2021 cstudio-wasm Refactor frontend code layout and add landing page (#4) Sep 18, 2021 public Add google analytics tracking script to site (#20) Sep 22, 2021 src Add product hunt badge to editor page (#21) Sep 22, 2021 .dockerignore Create initial app structure based on Rustpad (#1) Sep 18, 2021 .editorconfig Create initial app structure based on Rustpad (#1) Sep 18, 2021 .env Create initial app structure based on Rustpad (#1) Sep 18, 2021 .gitignore Create initial app structure based on Rustpad (#1) Sep 18, 2021 .prettierignore Create initial app structure based on Rustpad (#1) Sep 18, 2021 .prettierrc added abc language (#2) Sep 18, 2021 Cargo.lock Create initial app structure based on Rustpad (#1) Sep 18, 2021 Cargo.toml Create initial app structure based on Rustpad (#1) Sep 18, 2021 Dockerfile Create initial app structure based on Rustpad (#1) Sep 18, 2021 LICENSE Clean README and rename og:image for public launch (#19) Sep 19, 2021 README.md Clean README and rename og:image for public launch (#19) Sep 19, 2021 config-overrides.js Create initial app structure based on Rustpad (#1) Sep 18, 2021 package-lock.json Create the landing page with features (#17) Sep 19, 2021 package.json Create the landing page with features (#17) Sep 19, 2021 tsconfig.json Create initial app structure based on Rustpad (#1) Sep 18, 2021 View code composing.studio Rationale Getting Started Contributing README.md composing.studio This is the code for composing.studio, a web application that aims to make music composition collaborative and accessible to everyone. [68747470733a2f2f692e696d6775722e636f6d2f364c3536614b412e706e67] composing.studio Rationale Right now it's possible to write music in a textual format called ABC, which works for transcribing simple songs + guitar chords, as well as some other pieces like chorales and folk music. It has some limitations, but not too many (someone has encoded a Beethoven symphony in ABC before!). Here's an example of an interactive editor built with ABC: https:// editor.drawthedots.com/. The editor is not super user-friendly, but it showcases the utility and interest in this space. We provide a friendly and intuitive web-based interface for editing ABC music notation, with syntax highlighting, live preview, audio playback, and real-time collaboration. Anyone can create a new collaborative session by entering our website, and they can share the link with fellow composers to work together and come up with new ideas. Getting Started This application is built using a backend operational transformation control server written in Rust, based on Rustpad, as well as a frontend written in TypeScript using React. The backend server has support for transient collaborative editing sessions, and the frontend offers a collaborative text editor with custom Monarch ABC syntax highlighting, cursors, and live presence tracking. These parts of the application are connected by WebSocket communication. On the frontend, we use the abcjs library to dynamically render sheet music from ABC notation and generate interactive playback controls through web audio synthesis. To run this application, you need to install Rust, wasm-pack, and Node.js. Then, build the WebAssembly portion of the app: wasm-pack build cstudio-wasm When that is complete, you can install dependencies for the frontend React application: npm install Next, compile and run the backend web server: cargo run While the backend is running, open another shell and run the following command to start the frontend portion. npm start This command will open a browser window to http://localhost:3000, with hot reloading on changes. Contributing This project is still in a very experimental phase. We're exploring different ways of allowing musicians to collaborate with each other in a global community. If you're interested in adding features or helping fix bugs, please reach out to us first by creating a GitHub issue! We have continuous integration for this repository, which checks things like code style (Prettier, Rustfmt) and successful build (Docker). The current state of the main branch is continuously deployed to the production web server at composing.studio. ^ All code is licensed under the MIT license. About Collaborative music composition for everyone. composing.studio Topics react music rust typescript music-composition collaborative-editing abc-notation Resources Readme License MIT License Contributors 3 * @ekzhang ekzhang Eric Zhang * @BrewedCoffee BrewedCoffee Jeff * @vincenthuang75025 vincenthuang75025 Vincent Huang Languages * TypeScript 61.5% * Rust 32.4% * HTML 2.4% * JavaScript 1.4% * CSS 1.1% * Dockerfile 1.1% * Shell 0.1% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.