Hi, Lukas! Thanks for the response! I checked out
https://github.com/Bone008/jif-playground and it's great! Your DATA_4_COUNT_PASSING example gave me the minimal code I needed to see so I could put my patterns into minimal JIF. The ones under discussion are "4-count fls":
=====
{
"limbs": [
{ "juggler": 0, "type": "right hand" },
{ "juggler": 0, "type": "left hand" },
{ "juggler": 1, "type": "right hand" },
{ "juggler": 1, "type": "left hand" }
],
"repetition": {
"period": 8
},
"throws": [
{ "time": 0, "duration": 3, "from": 0, "to": 3},
{ "time": 1, "duration": 4, "from": 1, "to": 0},
{ "time": 2, "duration": 2, "from": 0, "to": 1},
{ "time": 3, "duration": 3, "from": 1, "to": 1},
{ "time": 4, "duration": 3, "from": 1, "to": 2},
{ "time": 5, "duration": 4, "from": 0, "to": 1},
{ "time": 6, "duration": 2, "from": 1, "to": 0},
{ "time": 7, "duration": 3, "from": 0, "to": 0},
{ "time": 0, "duration": 3, "from": 2, "to": 1},
{ "time": 1, "duration": 4, "from": 3, "to": 2},
{ "time": 2, "duration": 2, "from": 2, "to": 3},
{ "time": 3, "duration": 3, "from": 3, "to": 3},
{ "time": 4, "duration": 3, "from": 3, "to": 0},
{ "time": 5, "duration": 4, "from": 2, "to": 3},
{ "time": 6, "duration": 2, "from": 3, "to": 2},
{ "time": 7, "duration": 3, "from": 2, "to": 2}
]
}
=====
And "4-count with diagonal passes":
=====
{
"limbs": [
{ "juggler": 0, "type": "right hand" },
{ "juggler": 0, "type": "left hand" },
{ "juggler": 1, "type": "right hand" },
{ "juggler": 1, "type": "left hand" }
],
"repetition": {
"period": 8
},
"throws": [
{ "time": 0, "duration": 3, "from": 1, "to": 3},
{ "time": 1, "duration": 3, "from": 1, "to": 0},
{ "time": 2, "duration": 4, "from": 0, "to": 1},
{ "time": 3, "duration": 2, "from": 1, "to": 0},
{ "time": 4, "duration": 3, "from": 0, "to": 2},
{ "time": 5, "duration": 3, "from": 0, "to": 1},
{ "time": 6, "duration": 4, "from": 1, "to": 0},
{ "time": 7, "duration": 2, "from": 0, "to": 1},
{ "time": 0, "duration": 3, "from": 3, "to": 1},
{ "time": 1, "duration": 3, "from": 3, "to": 2},
{ "time": 2, "duration": 4, "from": 2, "to": 3},
{ "time": 3, "duration": 2, "from": 3, "to": 2},
{ "time": 4, "duration": 3, "from": 2, "to": 0},
{ "time": 5, "duration": 3, "from": 2, "to": 3},
{ "time": 6, "duration": 4, "from": 3, "to": 2},
{ "time": 7, "duration": 2, "from": 2, "to": 3}
]
}
=====
This format makes it particularly easy to combine them into this pattern where one juggler is doing 4-count fls and the other is doing 4-count with diagonal passes (just swap out one juggler's throws in the other pattern):
=====
{
"limbs": [
{ "juggler": 0, "type": "right hand" },
{ "juggler": 0, "type": "left hand" },
{ "juggler": 1, "type": "right hand" },
{ "juggler": 1, "type": "left hand" }
],
"repetition": {
"period": 8
},
"throws": [
{ "time": 0, "duration": 3, "from": 0, "to": 3},
{ "time": 1, "duration": 4, "from": 1, "to": 0},
{ "time": 2, "duration": 2, "from": 0, "to": 1},
{ "time": 3, "duration": 3, "from": 1, "to": 1},
{ "time": 4, "duration": 3, "from": 1, "to": 2},
{ "time": 5, "duration": 4, "from": 0, "to": 1},
{ "time": 6, "duration": 2, "from": 1, "to": 0},
{ "time": 7, "duration": 3, "from": 0, "to": 0},
{ "time": 0, "duration": 3, "from": 3, "to": 1},
{ "time": 1, "duration": 3, "from": 3, "to": 2},
{ "time": 2, "duration": 4, "from": 2, "to": 3},
{ "time": 3, "duration": 2, "from": 3, "to": 2},
{ "time": 4, "duration": 3, "from": 2, "to": 0},
{ "time": 5, "duration": 3, "from": 2, "to": 3},
{ "time": 6, "duration": 4, "from": 3, "to": 2},
{ "time": 7, "duration": 2, "from": 2, "to": 3}
]
}
=====
Going back to your "social siteswap" notation it should be something like (if x throws were allowed):
4-count fls: [ '3B 4x 2x 3x', '3A 4x 2x 3x' ]
4-count with diagonal passes (start left): [ '3xB 3 4x 2x', '3xA 3 4x 2x' ]
Mixed 4-count fls and diagonal passes (juggler doing diagonal passes starts left): [ '3B 4x 2x 3x', '3xA 3 4x 2x' ]
This is what I like about JIF so much. It lets me do arbitrary x throws (not restricted to even numbers).
However, I still have an issue with timing and/or height. If we look at either [ '3B 4x 2x 3x', '3A 4x 2x 3x' ] or [ '3xB 3 4x 2x', '3xA 3 4x 2x' ]
ideally we want each throw to take about the same time (i.e, each throw is thrown on the beat of someone counting "one, two, three, four").
So the 2x throws need to be higher/slower to match a regular 3 throw and the 4x throws need to be shorter/faster to match a regular 3 throw.
That's what I was trying to do with an individual throw timeStretchFactor.