Metadata-Version: 2.4
Name: abcweaver
Version: 0.2.1
Summary: 🎼 ABC ↔ MusicXML Transformation Engine with Redis Stream Processing
Home-page: https://github.com/gerico1007/abcweaver
Author: Gerico1007
Author-email: Gerico1007 <gerico@jgwill.com>
License: MIT
Project-URL: Homepage, https://github.com/gerico1007/abcweaver
Project-URL: Repository, https://github.com/gerico1007/abcweaver.git
Project-URL: Issues, https://github.com/gerico1007/abcweaver/issues
Keywords: music,abc,musicxml,redis,streams,notation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Multimedia :: Sound/Audio :: MIDI
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.0.0
Requires-Dist: lxml>=4.9.0
Requires-Dist: nyro>=0.1.3
Requires-Dist: pydantic>=2.0.0
Requires-Dist: rich>=13.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# 🎼 ABCWeaver - ABC ↔ MusicXML Transformation Engine

**ABCWeaver** is a powerful Python package for bidirectional transformation between ABC notation and MusicXML format, enhanced with Redis stream processing capabilities through the `nyro` package.

## ✨ Features

- **Bidirectional Conversion**: ABC ↔ MusicXML with full musical integrity
- **Redis Streams**: Enhanced processing through `nyro` package integration
- **CLI Interface**: Intuitive command-line tools for all operations
- **Customer Processing**: Stream-based customer-specific enhancements
- **Validation**: Comprehensive syntax checking for both formats
- **Batch Operations**: Process multiple files efficiently

## 🚀 Installation

```bash
pip install abcweaver
```

For development:
```bash
pip install abcweaver[dev]
```

## 📖 Quick Start

### Create MusicXML from ABC
```bash
abcweaver create "C D E F G A B c" --output melody.musicxml --title "Simple Scale"
```

### Insert ABC into existing MusicXML
```bash
abcweaver insert score.musicxml "G2 A2 B2 c2" --part "Melody" --instrument "Flute"
```

### Extract ABC from MusicXML
```bash
abcweaver extract score.musicxml --part "P1" --output melody.abc
```

### Stream Processing with Redis
```bash
# Send ABC to Redis stream
abcweaver stream-send "C D E F" --stream "song_evolution" 

# Consume and process
abcweaver stream-consume --stream "song_evolution" --target output.musicxml
```

## 🏗️ Architecture

ABCWeaver is built with modular architecture:

- **Core**: ABC parsing, MusicXML handling, format conversion
- **Streams**: Redis integration via `nyro` package
- **Commands**: CLI interface for all operations
- **Utils**: Helper functions and constants

## 🔧 Dependencies

- `click`: CLI framework
- `lxml`: XML processing
- `nyro`: Redis stream management
- `pydantic`: Data validation
- `rich`: Beautiful CLI output

## 🎼 Use Cases

- **Music Composition**: Convert ABC notation to professional MusicXML scores
- **Score Analysis**: Extract ABC patterns from existing MusicXML files
- **Stream Processing**: Real-time musical data transformation via Redis
- **Batch Conversion**: Process large collections of musical notation
- **Educational Tools**: Bridge between simple ABC and complex MusicXML formats

## 🤝 Contributing

We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.

## 📡 G.Music Assembly

Part of the G.Music Assembly ecosystem - transforming musical creativity through collaborative AI orchestration.

**♠️🌿🎸🧵 Assembly Mode Engaged**

## 📄 License

MIT License - see [LICENSE](LICENSE) file for details.
