Compare commits
3 Commits
clem-fixes
...
feat/grafa
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d1b273335 | |||
| 2c68489c2f | |||
| b2ea764b96 |
@@ -8,6 +8,6 @@ insert_final_newline = true
|
|||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = tab
|
indent_size = tab
|
||||||
|
|
||||||
[{*.yaml,*.yml,*.nix}]
|
[{*.yaml,*.yml}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|||||||
17
.env.example
@@ -7,19 +7,4 @@ JWT_SECRET=wow
|
|||||||
POSTGRES_DB=chromacase
|
POSTGRES_DB=chromacase
|
||||||
API_URL=http://localhost:80/api
|
API_URL=http://localhost:80/api
|
||||||
SCORO_URL=ws://localhost:6543
|
SCORO_URL=ws://localhost:6543
|
||||||
MINIO_ROOT_PASSWORD=12345678
|
|
||||||
EXPO_PUBLIC_API_URL=http://localhost:80/api
|
|
||||||
EXPO_PUBLIC_SCORO_URL=ws://localhost:6543
|
|
||||||
GOOGLE_CLIENT_ID=toto
|
|
||||||
GOOGLE_SECRET=tata
|
|
||||||
GOOGLE_CALLBACK_URL=http://localhost:19006/logged/google
|
|
||||||
SMTP_TRANSPORT=smtps://toto:tata@relay
|
|
||||||
MAIL_AUTHOR='"Chromacase" <chromacase@octohub.app>'
|
|
||||||
IGNORE_MAILS=true
|
|
||||||
API_KEYS=SCOROTEST,ROBOTO,SCORO,POPULATE
|
|
||||||
API_KEY_SCORO_TEST=SCOROTEST
|
|
||||||
API_KEY_ROBOT=ROBOTO
|
|
||||||
API_KEY_SCORO=SCORO
|
|
||||||
API_KEY_POPULATE=POPULATE
|
|
||||||
MEILI_MASTER_KEY="ghvjkgisbgkbgskegblfqbgjkebbhgwkjfb"
|
|
||||||
# vi: ft=sh
|
|
||||||
|
|||||||
5
.envrc
@@ -1 +1,4 @@
|
|||||||
use nix
|
if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
|
||||||
|
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
|
||||||
|
fi
|
||||||
|
use flake
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
14e241db37c4080bc0bd87363cf7a57ef8379f46
|
|
||||||
145
.github/workflows/CI.yml
vendored
@@ -1,18 +1,144 @@
|
|||||||
name: Deploy
|
name: CI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- closed
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- '*'
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deployment:
|
|
||||||
|
## Build Back ##
|
||||||
|
|
||||||
|
Build_Back:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.event.pull_request.merged == true
|
timeout-minutes: 10
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./back
|
||||||
|
environment: Staging
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Build Docker
|
||||||
|
run: docker build -t testback .
|
||||||
|
|
||||||
|
## Build App ##
|
||||||
|
|
||||||
|
Build_Front:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./front
|
||||||
|
environment: Staging
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install -g yarn
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: 🏗 Setup Expo
|
||||||
|
uses: expo/expo-github-action@v7
|
||||||
|
with:
|
||||||
|
expo-version: latest
|
||||||
|
eas-version: 3.3.1
|
||||||
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build Android APK
|
||||||
|
run: |
|
||||||
|
eas build -p android --profile debug --local --non-interactive
|
||||||
|
mv *.apk chromacase.apk
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: chromacase.apk
|
||||||
|
path: front/
|
||||||
|
|
||||||
|
## Test Backend ##
|
||||||
|
|
||||||
|
Test_Back:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 15
|
||||||
|
needs: [ Build_Back ]
|
||||||
|
environment: Staging
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Copy env file to github secret env file
|
||||||
|
run: |
|
||||||
|
touch .env
|
||||||
|
echo "POSTGRES_USER=user" >> .env
|
||||||
|
echo "POSTGRES_PASSWORD=eip" >> .env
|
||||||
|
echo "POSTGRES_NAME=chromacase" >> .env
|
||||||
|
echo "POSTGRES_HOST=db" >> .env
|
||||||
|
echo "DATABASE_URL=postgresql://user:eip@db:5432/chromacase" >> .env
|
||||||
|
echo "JWT_SECRET=wow" >> .env
|
||||||
|
echo "POSTGRES_DB=chromacase" >> .env
|
||||||
|
echo "API_URL=http://localhost:80/api" >> .env
|
||||||
|
|
||||||
|
- name: Start the service
|
||||||
|
run: docker-compose up -d back db
|
||||||
|
|
||||||
|
- name: Perform healthchecks
|
||||||
|
run: |
|
||||||
|
docker-compose ps -a
|
||||||
|
wget --retry-connrefused http://localhost:3000 # /healthcheck
|
||||||
|
|
||||||
|
- name: Run scorometer tests
|
||||||
|
run: |
|
||||||
|
pip install -r scorometer/requirements.txt
|
||||||
|
cd scorometer/tests && ./runner.sh
|
||||||
|
|
||||||
|
- name: Run robot tests
|
||||||
|
run: |
|
||||||
|
pip install -r back/test/robot/requirements.txt
|
||||||
|
robot -d out back/test/robot/
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: results
|
||||||
|
path: out
|
||||||
|
|
||||||
|
- name: Write results to Pull Request and Summary
|
||||||
|
if: always() && github.event_name == 'pull_request'
|
||||||
|
uses: joonvena/robotframework-reporter-action@v2.1
|
||||||
|
with:
|
||||||
|
report_path: out/
|
||||||
|
gh_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
only_summary: false
|
||||||
|
|
||||||
|
- name: Write results to Summary
|
||||||
|
if: always() && github.event_name != 'pull_request'
|
||||||
|
uses: joonvena/robotframework-reporter-action@v2.1
|
||||||
|
with:
|
||||||
|
report_path: out/
|
||||||
|
gh_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
only_summary: true
|
||||||
|
|
||||||
|
- name: Remove .env && stop the service
|
||||||
|
run: docker-compose down && rm .env
|
||||||
|
|
||||||
|
## Test App ##
|
||||||
|
|
||||||
|
## Deployement ##
|
||||||
|
|
||||||
|
Deployement_Docker:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.ref == 'refs/heads/main'
|
||||||
|
needs: [ Test_Back ]
|
||||||
|
environment: Production
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@@ -57,7 +183,6 @@ jobs:
|
|||||||
build-args: |
|
build-args: |
|
||||||
API_URL=${{secrets.API_URL}}
|
API_URL=${{secrets.API_URL}}
|
||||||
SCORO_URL=${{secrets.SCORO_URL}}
|
SCORO_URL=${{secrets.SCORO_URL}}
|
||||||
|
|
||||||
- name: Docker meta scorometer
|
- name: Docker meta scorometer
|
||||||
id: meta_scorometer
|
id: meta_scorometer
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@v4
|
||||||
|
|||||||
101
.github/workflows/back.yml
vendored
@@ -1,101 +0,0 @@
|
|||||||
name: "Back"
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [ main ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# Required permissions
|
|
||||||
permissions:
|
|
||||||
pull-requests: read
|
|
||||||
# Set job outputs to values from filter step
|
|
||||||
outputs:
|
|
||||||
back: ${{ steps.filter.outputs.back }}
|
|
||||||
front: ${{ steps.filter.outputs.front }}
|
|
||||||
scorometer: ${{ steps.filter.outputs.scorometer }}
|
|
||||||
steps:
|
|
||||||
# For pull requests it's not necessary to checkout the code
|
|
||||||
- uses: dorny/paths-filter@v2
|
|
||||||
id: filter
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
back:
|
|
||||||
- 'back/**'
|
|
||||||
- '.github/workflows/back.yml'
|
|
||||||
front:
|
|
||||||
- 'front/**'
|
|
||||||
- '.github/workflows/front.yml'
|
|
||||||
scorometer:
|
|
||||||
- 'scorometer/**'
|
|
||||||
- '.github/workflows/scoro.yml'
|
|
||||||
back_build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 10
|
|
||||||
|
|
||||||
needs: changes
|
|
||||||
if: ${{ needs.changes.outputs.back == 'true' }}
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./back
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Build Docker
|
|
||||||
run: docker build -t testback .
|
|
||||||
|
|
||||||
|
|
||||||
back_test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 15
|
|
||||||
needs: [ back_build ]
|
|
||||||
if: ${{ needs.changes.outputs.back == 'true' }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Copy env file to github secret env file
|
|
||||||
run: cp .env.example .env
|
|
||||||
|
|
||||||
- name: Build and start the service
|
|
||||||
run: docker-compose up -d meilisearch back db
|
|
||||||
|
|
||||||
- name: Perform healthchecks
|
|
||||||
run: |
|
|
||||||
docker-compose ps -a
|
|
||||||
docker-compose logs
|
|
||||||
wget --retry-connrefused http://localhost:3000 || (docker-compose logs && exit 1)
|
|
||||||
|
|
||||||
- name: Run robot tests
|
|
||||||
run: |
|
|
||||||
export API_KEY_ROBOT=ROBOTO
|
|
||||||
pip install -r back/test/robot/requirements.txt
|
|
||||||
robot -d out back/test/robot/
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
if: always()
|
|
||||||
with:
|
|
||||||
name: results
|
|
||||||
path: out
|
|
||||||
|
|
||||||
- name: Write results to Pull Request and Summary
|
|
||||||
if: always() && github.event_name == 'pull_request'
|
|
||||||
uses: joonvena/robotframework-reporter-action@v2.1
|
|
||||||
with:
|
|
||||||
report_path: out/
|
|
||||||
gh_access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
only_summary: false
|
|
||||||
|
|
||||||
- name: Write results to Summary
|
|
||||||
if: always() && github.event_name != 'pull_request'
|
|
||||||
uses: joonvena/robotframework-reporter-action@v2.1
|
|
||||||
with:
|
|
||||||
report_path: out/
|
|
||||||
gh_access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
only_summary: true
|
|
||||||
|
|
||||||
- name: stop the service
|
|
||||||
run: docker-compose down
|
|
||||||
98
.github/workflows/front.yml
vendored
@@ -1,98 +0,0 @@
|
|||||||
name: "Front"
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [ main ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# Required permissions
|
|
||||||
permissions:
|
|
||||||
pull-requests: read
|
|
||||||
# Set job outputs to values from filter step
|
|
||||||
outputs:
|
|
||||||
back: ${{ steps.filter.outputs.back }}
|
|
||||||
front: ${{ steps.filter.outputs.front }}
|
|
||||||
scorometer: ${{ steps.filter.outputs.scorometer }}
|
|
||||||
steps:
|
|
||||||
# For pull requests it's not necessary to checkout the code
|
|
||||||
- uses: dorny/paths-filter@v2
|
|
||||||
id: filter
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
back:
|
|
||||||
- 'back/**'
|
|
||||||
- '.github/workflows/back.yml'
|
|
||||||
front:
|
|
||||||
- 'front/**'
|
|
||||||
- '.github/workflows/front.yml'
|
|
||||||
scorometer:
|
|
||||||
- 'scorometer/**'
|
|
||||||
- '.github/workflows/scoro.yml'
|
|
||||||
front_check:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./front
|
|
||||||
needs: changes
|
|
||||||
if: ${{ needs.changes.outputs.front == 'true' }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '16'
|
|
||||||
cache: 'yarn'
|
|
||||||
cache-dependency-path: front/yarn.lock
|
|
||||||
- run: yarn install --frozen-lockfile
|
|
||||||
- name: type check
|
|
||||||
run: yarn tsc
|
|
||||||
- name: prettier
|
|
||||||
run: yarn pretty:check .
|
|
||||||
- name: eslint
|
|
||||||
run: yarn lint
|
|
||||||
|
|
||||||
front_build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./front
|
|
||||||
if: ${{ needs.changes.outputs.front == 'true' }}
|
|
||||||
needs: [ front_check ]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '16'
|
|
||||||
cache: 'yarn'
|
|
||||||
cache-dependency-path: front/yarn.lock
|
|
||||||
- run: yarn install --frozen-lockfile
|
|
||||||
|
|
||||||
- name: 🏗 Setup Expo
|
|
||||||
uses: expo/expo-github-action@v8
|
|
||||||
with:
|
|
||||||
expo-version: latest
|
|
||||||
eas-version: latest
|
|
||||||
token: ${{ secrets.EXPO_TOKEN }}
|
|
||||||
|
|
||||||
- name: Build Web App
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: ./front
|
|
||||||
push: false
|
|
||||||
tags: ${{steps.meta_front.outputs.tags}}
|
|
||||||
build-args: |
|
|
||||||
API_URL=${{secrets.API_URL}}
|
|
||||||
SCORO_URL=${{secrets.SCORO_URL}}
|
|
||||||
|
|
||||||
- name: Build Android APK
|
|
||||||
run: |
|
|
||||||
eas build -p android --profile production --local --non-interactive
|
|
||||||
mv *.apk chromacase.apk
|
|
||||||
|
|
||||||
- name: Upload Artifact
|
|
||||||
if: github.ref == 'refs/heads/main'
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: chromacase.apk
|
|
||||||
path: front/
|
|
||||||
63
.github/workflows/scoro.yml
vendored
@@ -1,63 +0,0 @@
|
|||||||
name: "Scoro"
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [ main ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
changes:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# Required permissions
|
|
||||||
permissions:
|
|
||||||
pull-requests: read
|
|
||||||
# Set job outputs to values from filter step
|
|
||||||
outputs:
|
|
||||||
back: ${{ steps.filter.outputs.back }}
|
|
||||||
front: ${{ steps.filter.outputs.front }}
|
|
||||||
scorometer: ${{ steps.filter.outputs.scorometer }}
|
|
||||||
steps:
|
|
||||||
# For pull requests it's not necessary to checkout the code
|
|
||||||
- uses: dorny/paths-filter@v2
|
|
||||||
id: filter
|
|
||||||
with:
|
|
||||||
filters: |
|
|
||||||
back:
|
|
||||||
- 'back/**'
|
|
||||||
- '.github/workflows/back.yml'
|
|
||||||
front:
|
|
||||||
- 'front/**'
|
|
||||||
- '.github/workflows/front.yml'
|
|
||||||
scorometer:
|
|
||||||
- 'scorometer/**'
|
|
||||||
- '.github/workflows/scoro.yml'
|
|
||||||
scoro_test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: changes
|
|
||||||
if: ${{ needs.changes.outputs.scorometer == 'true' }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Copy env file to github secret env file
|
|
||||||
run: cp .env.example .env
|
|
||||||
|
|
||||||
- name: Build and start the service
|
|
||||||
run: docker-compose up -d meilisearch back db
|
|
||||||
|
|
||||||
- name: Perform healthchecks
|
|
||||||
run: |
|
|
||||||
docker-compose ps -a
|
|
||||||
docker-compose logs
|
|
||||||
wget --retry-connrefused http://localhost:3000 || (docker-compose logs && exit 1)
|
|
||||||
|
|
||||||
- name: Run scorometer tests
|
|
||||||
run: |
|
|
||||||
export API_KEY_SCORO_TEST=SCOROTEST
|
|
||||||
export API_KEY_SCORO=SCORO
|
|
||||||
pip install -r scorometer/requirements.txt
|
|
||||||
cd scorometer/tests && ./runner.sh
|
|
||||||
|
|
||||||
- name: stop the service
|
|
||||||
run: docker-compose down
|
|
||||||
5
.gitignore
vendored
@@ -13,7 +13,4 @@ log.html
|
|||||||
node_modules/
|
node_modules/
|
||||||
./front/coverage
|
./front/coverage
|
||||||
.venv
|
.venv
|
||||||
.data
|
grafana/.data
|
||||||
.DS_Store
|
|
||||||
_gen
|
|
||||||
venv
|
|
||||||
|
|||||||
39
README.md
@@ -1,39 +0,0 @@
|
|||||||
# 
|
|
||||||
|
|
||||||
La principale raison pour laquelle on arrête de jouer d'un instrument est la perte de motivation. C'est un apprentissage long et vraiment demandant. ChromaCase propose d'accompagner les joueurs de piano grâce à une application mobile avec une expérience personnalisée. Celle-ci, générée par une IA, cible les goûts et identifie les difficultés du joueur.
|
|
||||||
|
|
||||||
Ça vous interesse? Rendez-vous sur notre [site](http://eip.epitech.eu/2024/chromacase) pour prendre contact
|
|
||||||
|
|
||||||
## Comment lancer le projet
|
|
||||||
|
|
||||||
Pensez à remplir un `.env` (à la racine du projet), en se basant sur le `.env.example`.
|
|
||||||
|
|
||||||
### Development
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker-compose -f docker-compose.dev.yml up --build
|
|
||||||
```
|
|
||||||
|
|
||||||
### Production
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker-compose up --build
|
|
||||||
```
|
|
||||||
|
|
||||||
## Liens Utiles
|
|
||||||
|
|
||||||
- Site de Production: [Lien](http://chroma.octohub.app/)
|
|
||||||
- Site du Nightly: [Lien](http://nightly.chroma.octohub.app/)
|
|
||||||
- Site vitrine: [Lien](http://eip.epitech.eu/2024/chromacase)
|
|
||||||
- Documentation: [Github](https://github.com/Chroma-Case/DAteX)
|
|
||||||
|
|
||||||
## Membres du Projet
|
|
||||||
|
|
||||||
| Nom | Role | Contact |
|
|
||||||
|--------------------------|--------------------------------------|----------------------------------------------------|
|
|
||||||
| Zoé Roux | CEO, Responsable Back-end | [GitHub](https://github.com/zoriya) |
|
|
||||||
| Clément Le-Bihan | CTO, Responsable Front-end | [GitHub](https://github.com/Octopus773) |
|
|
||||||
| Arthur Jamet | Manager, Développeur Front-end | [GitHub](https://github.com/Arthi-chaud) |
|
|
||||||
| Louis Auzuret | Développeur Back-end, Responsable CI | [Github](https://github.com/GitBluub) |
|
|
||||||
| Aumaury Danis-Cousandier | Développeur Front-end | [Github](https://github.com/AmauryDanisCousandier) |
|
|
||||||
| Mathys Paul | Développeur Front-end, Designer | [GitHub](https://github.com/mathysPaul) |
|
|
||||||
|
Before Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 361 KiB |
|
Before Width: | Height: | Size: 558 KiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 4.2 MiB |
|
Before Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 376 KiB |
|
Before Width: | Height: | Size: 1012 KiB |
|
Before Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 392 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Iterate through subfolders
|
|
||||||
find . -type d | while read -r dir; do
|
|
||||||
# Check if .midi file exists in the subfolder
|
|
||||||
midi_file=$(find "$dir" -maxdepth 1 -type f -name '*.midi' | head -n 1)
|
|
||||||
|
|
||||||
if [ -n "$midi_file" ]; then
|
|
||||||
# Create output file name (melody.mp3) in the same subfolder
|
|
||||||
output_file="${dir}/melody.mp3"
|
|
||||||
|
|
||||||
# Run the given command
|
|
||||||
#timidity "$midi_file" -Ow -o - | ffmpeg -i - -acodec libmp3lame -ab 64k "$output_file"
|
|
||||||
fluidsynth -a alsa -T raw -F - "$midi_file" | ffmpeg -f s32le -i - "$output_file"
|
|
||||||
|
|
||||||
echo "Converted: $midi_file to $output_file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 12 MiB |
|
Before Width: | Height: | Size: 215 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 597 KiB |
|
Before Width: | Height: | Size: 762 KiB |
|
Before Width: | Height: | Size: 3.0 MiB |
|
Before Width: | Height: | Size: 376 KiB |
|
Before Width: | Height: | Size: 376 KiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=Beethoven Symphony 7 2nd Movement (Allegretto) Simple Piano arrangement
|
|
||||||
Artist=Ludwig Van Beethoven
|
|
||||||
Genre=Classical
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 2.3 MiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=El pequeño tamborilero (The little drummer boy)
|
|
||||||
Artist=Misc Christmas
|
|
||||||
Genre=Soundtrack
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 4.4 KiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=Erik Satie - Gnossienne No.1. {Professional production score.}
|
|
||||||
Artist=Erik Satie
|
|
||||||
Genre=Classical
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 558 KiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=French National Anthem "La Marseillaise"
|
|
||||||
Artist=Misc Tunes
|
|
||||||
Genre=Solo
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=German National Anthem " Das Lied der Deutschen"
|
|
||||||
Artist=Joseph Haydn
|
|
||||||
Genre=Classical
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 932 B |
|
Before Width: | Height: | Size: 376 KiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=Liebestraum (easy)
|
|
||||||
Artist=Franz Liszt
|
|
||||||
Genre=Classical
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 1.3 MiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=Mary, Did You Know?
|
|
||||||
Artist=Misc Christmas
|
|
||||||
Genre=Soundtrack
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 2.8 KiB |
@@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
[Metadata]
|
|
||||||
Name=Silent Night
|
|
||||||
Artist=Franz Xaver Gruber
|
|
||||||
Genre=Classical
|
|
||||||
Album=
|
|
||||||
|
|
||||||
[Difficulties]
|
|
||||||
TwoHands=0
|
|
||||||
Rhythm=0
|
|
||||||
NoteCombo=0
|
|
||||||
Arpeggio=0
|
|
||||||
Distance=0
|
|
||||||
LeftHand=0
|
|
||||||
RightHand=0
|
|
||||||
LeadHandChange=0
|
|
||||||
ChordComplexity=0
|
|
||||||
ChordTiming=0
|
|
||||||
Length=0
|
|
||||||
PedalPoint=0
|
|
||||||
Precision=0
|
|
||||||