# MinaCoding2025_Free

# Bluesprogattini

For **MinaCoding2025** *Prompt 30: Free*, **Bluesprogattini** coded in ***OpenScad & SonicPi*** is an exploration of new species in the realm.

## Poem

```javascript
Bluesprogattini, are more than just creatures
With their geometrical features
Thinking of their futures
Their Cultures
As their movements have been translated
As new thoughts have been Created
```

## Video

%[https://youtu.be/7ZrKAPyN4oQ] 

## Code

### OpenScad

```javascript
union(){

//top    
translate([0,35,95]) color("orange",1.0) sphere(22);
translate([-35,35,95]) color([0.15, 0.25, 0.47]) sphere(42);
translate([0,55,95]) color("orange",1.0) sphere(22);
translate([0,15,95]) color("orange",1.0) sphere(22);
translate([0,35,55]) color([0.15, 0.25, 0.47]) sphere(22);
translate([-35,35,55]) color([0.15, 0.25, 0.47]) sphere(22);
    
//teal section
translate([0,55,75]) color("teal",1.0) sphere(22);   
translate([0,35,75]) color("white",1.0) sphere(22);
translate([0,15,75]) color("teal",1.0) sphere(22);
  
 //eyes
 translate([20,45,75]) color("black",1.0) sphere(10);   
 translate([20,25,75]) color("black",1.0) sphere(10); 

translate([27,25,75]) color("gold",1.0) sphere(5);
translate([27,45,75]) color("gold",1.0) sphere(5);      
    
//cylinder
translate([5,25,-35]) color([0.25,0.75,0.93]) cylinder(h = 125, r = 9);
translate([5,35,-35]) color([0.25,0.75,0.93]) cylinder(h = 125, r = 9);
translate([5,45,-35]) color([0.25,0.75,0.93]) cylinder(h = 125, r = 9);

//cylinder

translate([-25,105,75]) rotate([90,0,0]) color("white",1.0) cylinder(h = 145, r = 14);

}
```

### SonicPi

```ruby
live_loop :bassflow do
  with_fx [:reverb,:echo].tick, mix: [0.6,0.4,0.2,0.1].tick do
    use_random_seed Time.now.to_i / 2
    use_bpm 120
    if one_in(2)
      sample [:elec_blip,:elec_blup].tick , rate: [0.5,1,-0.87,0.25].tick, amp: dice(3)+ 1
      sleep 0.5
    else
      use_bpm [120,60,30].choose
      sample :drum_bass_soft, amp: 2.5
      sleep [0.25,0.5,1].tick
    end
  end
end


live_loop :heavydrum do
  with_fx :ixi_techno, mix: [0.75,0.5,0.625].choose do
    use_random_seed Time.now.to_i / 4
    if one_in(2)
      use_bpm [120,60,30,15].choose
      sample :drum_cymbal_closed
      sleep 0.5
    else
      use_bpm [120,60,30,15].choose
      sample :drum_heavy_kick
      sleep 0.25
    end
  end
end


live_loop :heavydrum do
  with_fx :ixi_techno, mix: ((use_random_seed Time.now.to_i / 10) % 10 + 1)/11 , phase: dice(3) do
    use_random_seed Time.now.to_i / 3
    if one_in(2)
      use_bpm [240,120,60].choose
      sample :drum_cymbal_closed
      sleep [0.5,0.75,1].tick
    else
      use_bpm [240,120,60].choose
      sample :drum_heavy_kick
      sleep [0.25,0.5].choose
    end
  end
end

live_loop :drumming do
  use_bpm [240,120,60].choose
  use_random_seed Time.now.to_i / 2
  sample :drum_cymbal_pedal
  sample :drum_splash_hard
  sleep [4,8,2].choose
end


live_loop :moredrums do
  use_bpm [240,120,60].choose
  with_fx [:flanger,:ping_pong].tick, mix: ((use_random_seed Time.now.to_i * 2) % 10 + 1)/11  do
    with_fx :echo, mix: rrand(0.1,0.7), amp: dice(4) do
      sample [:tabla_ghe2,:tabla_ghe3,:tabla_ghe4].tick, beat_stretch: [0.5,1,0.75].tick
      sleep [1,2].choose
    end
  end
end

```
