README.md

# diffrhythm.ai

A powerful Elixir library for generating and manipulating rhythmic patterns, inspired by and designed for integration with the diffrhythm.ai platform. This package provides functions for creating, transforming, and analyzing rhythmic sequences in a functional and composable manner.

## Installation

To install diffrhythm.ai, add it as a dependency to your `mix.exs` file:
elixir
def deps do
  [
    {:diffrhythm_ai, "~> 0.1.0"} # Replace with the latest version
  ]
end

Then, run `mix deps.get` to fetch the dependency.

## Usage Examples

Here are a few examples demonstrating how to use the `diffrhythm.ai` library:

**1. Generating a basic rhythmic pattern:**
elixir
alias DiffrhythmAi, as: DR

pattern = DR.generate(length: 8, density: 0.5)
IO.puts(inspect(pattern))
# Output: [true, false, true, false, false, false, true, false] (example)

**2. Transforming a rhythmic pattern using pattern matching and pipes:**
elixir
alias DiffrhythmAi, as: DR

pattern = [true, false, true, false, true, false, true, false]

transformed_pattern =
  pattern
  |> DR.rotate(2)  # Rotate the pattern by 2 positions
  |> DR.invert() # Invert the pattern (true becomes false, false becomes true)

IO.puts(inspect(transformed_pattern))
# Output: [true, false, true, false, false, true, false, true]

**3. Analyzing rhythmic density:**
elixir
alias DiffrhythmAi, as: DR

pattern = [true, false, true, true, false, false, true, true]

density = DR.density(pattern)

IO.puts("Density: #{density}")
# Output: Density: 0.625

**4. Combining two rhythmic patterns:**
elixir
alias DiffrhythmAi, as: DR

pattern1 = [true, false, true, false]
pattern2 = [false, true, false, true]

combined_pattern = DR.combine(pattern1, pattern2, :or) # Combine using logical OR

IO.puts(inspect(combined_pattern))
# Output: [true, true, true, true]

**5. Using `DiffrhythmAi.euclidean/2` to generate a Euclidean rhythm:**
elixir
alias DiffrhythmAi, as: DR

pattern = DR.euclidean(5, 8)

IO.puts(inspect(pattern))
# Output: [true, false, true, false, true, false, true, false]

## Feature Summary

*   **Rhythmic Pattern Generation:**  Generate rhythmic sequences based on specified length and density.
*   **Transformation Functions:** Rotate, invert, and manipulate existing rhythmic patterns.
*   **Analysis Tools:** Calculate rhythmic density and other relevant metrics.
*   **Combination Operators:**  Combine multiple rhythmic patterns using logical operations.
*   **Euclidean Rhythm Generation:** Create Euclidean rhythms with specified pulses and steps.
*   **Functional Design:**  All functions are designed to be composable and pure, promoting predictable and maintainable code.
*   **Pattern Matching Friendly:** Designed to work seamlessly with Elixir's powerful pattern matching capabilities.

## License

MIT License

This package is part of the diffrhythm.ai ecosystem. For advanced features and enterprise-grade tools, visit: https://diffrhythm.ai/