MiniMusicSoftware

🎼 Mini computer music software

MiniMusicSoftware is an open-source mini computer music software package designed to facilitate the understanding of both software development best practices and data lifecycle in digital music processing.

🎯 Purpose

  • 🎼 Music Generation: Convert a JSON-formatted score into an audible musical piece.
  • πŸ“– Professional Development Practices: Encourage consulting documentation, using code analyzers, testing code, and writing documentation.
  • πŸ”„ Data Lifecycle Understanding: Explore how data is created, manipulated, copied, accessed, and destroyed in a program.

πŸ“ Features

🏷️ Feature πŸ” Description
🎢 Input Format JSON-based musical score
🎡 Output Format Generated music from JSON
🎹 MIDI Support Partial (final phase not fully completed)
πŸ” Code Analysis Emphasizes best coding practices
πŸ› οΈ Testing Promotes unit testing for reliability
πŸ“– Documentation Encourages well-documented code for maintainability

πŸ“ Project Structure

MiniMusicSoftware/
β”œβ”€β”€ Cargo.lock
β”œβ”€β”€ Cargo.toml
β”œβ”€β”€ README.md
β”œβ”€β”€ structure.txt
β”œβ”€β”€ assets/                    # Documentation images
β”‚   └── img/
β”‚       └── main.png
β”œβ”€β”€ file/                      # Musical data files
β”‚   β”œβ”€β”€ json/
β”‚   β”‚   β”œβ”€β”€ Child_In_Time.json
β”‚   β”‚   β”œβ”€β”€ instruments.json
β”‚   β”‚   └── Isnt_she_lovely.json
β”‚   β”œβ”€β”€ mid/
β”‚   β”‚   └── Isnt_she_lovely.mid
β”‚   └── wav/
β”‚       β”œβ”€β”€ audio.wav
β”‚       β”œβ”€β”€ Child_In_Time.wav
β”‚       β”œβ”€β”€ organ.wav
β”‚       β”œβ”€β”€ save_wav_test.wav
β”‚       β”œβ”€β”€ sound_track_test.wav
β”‚       └── test.wav
β”œβ”€β”€ src/                       # Core source code
β”‚   β”œβ”€β”€ instrument.rs
β”‚   β”œβ”€β”€ lib.rs
β”‚   β”œβ”€β”€ main.rs
β”‚   β”œβ”€β”€ note.rs
β”‚   └── sound_track.rs
β”œβ”€β”€ tests/                     # Integration tests
β”‚   └── integration.rs
└── target/                    # Build output (generated by Cargo)