Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gsejas/streamlit-abc-notation
Streamlit project to showcase the abc notation with abc.js
https://github.com/gsejas/streamlit-abc-notation
abc music streamlit
Last synced: 15 days ago
JSON representation
Streamlit project to showcase the abc notation with abc.js
- Host: GitHub
- URL: https://github.com/gsejas/streamlit-abc-notation
- Owner: GSejas
- Created: 2024-12-27T14:32:03.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2025-01-02T04:24:32.000Z (25 days ago)
- Last Synced: 2025-01-02T05:23:14.638Z (25 days ago)
- Topics: abc, music, streamlit
- Language: Python
- Homepage: https://gsejas.github.io/streamlit-abc-notation/
- Size: 237 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Streamlit ABC Notation Project
![Build Status](https://github.com/gsejas/streamlit-abc-notation/actions/workflows/deploy.yml/badge.svg)
![License](https://img.shields.io/github/license/Gsejas/streamlit-abc-notation)This project is a Streamlit application that showcases a custom component for rendering ABC notation using abc.js. It provides a user-friendly interface for inputting ABC notation, rendering it as sheet music, and includes playback features.
## Project Structure
```
streamlit-abc-notation
├── src
│ ├── tabs
│ │ ├── demo_tab.py
│ │ ├── examples_tab.py
│ │ └── about_tab.py
│ └── streamlit_app.py
├── package.json
├── pyproject.toml
├── poetry.lock
└── README.md
```## Installation
To set up the project, follow these steps:
1. Clone the repository:
```
git clone
cd streamlit-abc-notation
```2. Install Poetry if you haven't already:
```
pip install poetry
```3. Install the Python dependencies using Poetry:
```
poetry install
```## Usage
To run the Streamlit application, execute the following command in the terminal:
```
poetry run streamlit run src/streamlit_app.py
```Once the application is running, you can:
- Input ABC notation in the provided text area.
- Click the "Render" button to visualize the sheet music.
- Use the playback controls to listen to the rendered music.## ABC Notation
ABC notation is a shorthand form of musical notation that uses ASCII characters. It is widely used for notating music in a simple and readable format. For more information on ABC notation, visit [abcnotation.com](http://abcnotation.com).
### Examples of ABC Notation
Here are some popular melodies and harmonies you can try:
**Twinkle Twinkle Little Star**
```abc
X: 1
T: Twinkle Twinkle Little Star
M: 4/4
K: C
C C G G | A A G2 | F F E E | D D C2 |
```**Ode to Joy (Beethoven)**
```abc
X: 1
T: Ode to Joy
M: 4/4
K: D
E E F G | G F E D | C C D E | E D D2 |
```**Happy Birthday**
```abc
X: 1
T: Happy Birthday
M: 3/4
K: C
G G A G | C B | G G A G | D C | G G G E | C B A | F F E C | D C |
```**Jingle Bells**
```abc
X: 1
T: Jingle Bells
M: 4/4
K: G
E E E | E E E | E G C D E | F F F F | F E E E | E D D E | D G2 |
```**Mary Had a Little Lamb**
```abc
X: 1
T: Mary Had a Little Lamb
M: 4/4
K: C
E D C D | E E E2 | D D D2 | E G G2 | E D C D | E E E E | D D E D | C3 |
```**Silent Night**
```abc
X: 1
T: Silent Night
M: 3/4
K: G
G A G E | G A G E | D2 G2 | G A G E | G A G E | D2 G2 |
```## Roadmap
### Current Progress
- **Basic Rendering and Playback**: Implemented a basic demo for rendering ABC notation and playing it back using abc.js.
- **Modular Code Structure**: Refactored the code into separate modules for better maintainability.### Future Plans
- **Enhanced ABC.js Integration**: Create new components to explore more features of the abc.js library and enhance the notation capabilities.
- **Community Testing and Feedback**: Deploy the project to Streamlit for community testing and feedback.## Deployment
The project is deployed on Streamlit and can be accessed at [https://abc-notation.streamlit.app/](https://abc-notation.streamlit.app/). The goal is to inspire and help grow the intersection between technology and music.
## Contributing
Contributions are welcome! If you have suggestions or improvements, please create a pull request or open an issue.
## License
This project is licensed under the MIT License. See the LICENSE file for more details.