Friday, 25 November 2022

Changing notes position based on new bpm

I have a .mboy json file that are build with bpm 128 which is the audio original bpm.

have a look below at the file.

 export default {
"editor": "mboy-editor-2.1.1",
"format_version": "2.0",
"audio": {
    "artist": "test",
    "title": "NO COPYRIGHT SHORT MUSIC (SOLO RECORD)",
    "album": "",
    "subgenre": "",
    "date": "",
    "download_link": "https://www.youtube.com/watch?v=Atv-zwhSyFE",
    "comments": "",
    "genre": "Other"
},
"author": "<zx<zx",
"date": "2022-11-17",
"tempo": 128,
"start_pos": 0,
"tracks": [{
    "instrument": "bass",
    "name": "",
    "color": "ff009fff",
    "bars": [{
        "index": 0,
        "quarters_count": 4,
        "notes": [{
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 800,
            "len": 100,
            "markers": []
        }, {
            "pos": 1100,
            "len": 100,
            "markers": []
        }, {
            "pos": 1200,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 1,
        "quarters_count": 4,
        "notes": [{
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 1000,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 2,
        "quarters_count": 4,
        "notes": [{
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 3,
        "quarters_count": 4,
        "notes": [{
            "pos": 1000,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 4,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 1200,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 5,
        "quarters_count": 4,
        "notes": [{
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 6,
        "quarters_count": 4,
        "notes": [{
            "pos": 300,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 1200,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 7,
        "quarters_count": 4,
        "notes": [{
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 8,
        "quarters_count": 4,
        "notes": [{
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 700,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 9,
        "quarters_count": 4,
        "notes": [{
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 700,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }, {
            "pos": 1500,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 10,
        "quarters_count": 4,
        "notes": [{
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 700,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 11,
        "quarters_count": 4,
        "notes": [{
            "pos": 900,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 12,
        "quarters_count": 4,
        "notes": [{
            "pos": 0,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 13,
        "quarters_count": 4,
        "notes": [{
            "pos": 0,
            "len": 100,
            "markers": []
        }, {
            "pos": 1200,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 14,
        "quarters_count": 4,
        "notes": [{
            "pos": 800,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 15,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 1000,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 16,
        "quarters_count": 4,
        "notes": []
    }, {
        "index": 17,
        "quarters_count": 4,
        "notes": [{
            "pos": 500,
            "len": 100,
            "markers": ["ToLeft"]
        }
        ]
    }, {
        "index": 18,
        "quarters_count": 4,
        "notes": []
    }, {
        "index": 19,
        "quarters_count": 4,
        "notes": []
    }, {
        "index": 20,
        "quarters_count": 4,
        "notes": []
    }
    ]
}, {
    "instrument": "drums",
    "name": "",
    "color": "ff009fff",
    "bars": [{
        "index": 0,
        "quarters_count": 4,
        "notes": [{
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 800,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 1,
        "quarters_count": 4,
        "notes": [{
            "pos": 800,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 2,
        "quarters_count": 4,
        "notes": [{
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 3,
        "quarters_count": 4,
        "notes": [{
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 1000,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 4,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 600,
            "len": 100,
            "markers": []
        }, {
            "pos": 1000,
            "len": 100,
            "markers": []
        }, {
            "pos": 1500,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 5,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 1100,
            "len": 100,
            "markers": []
        }, {
            "pos": 1200,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 6,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 700,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }, {
            "pos": 1400,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 7,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 600,
            "len": 100,
            "markers": []
        }, {
            "pos": 800,
            "len": 100,
            "markers": []
        }, {
            "pos": 1000,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 8,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 600,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }, {
            "pos": 1100,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 9,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 1100,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 10,
        "quarters_count": 4,
        "notes": [{
            "pos": 0,
            "len": 100,
            "markers": []
        }, {
            "pos": 100,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 900,
            "len": 100,
            "markers": []
        }, {
            "pos": 1000,
            "len": 100,
            "markers": []
        }, {
            "pos": 1300,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 11,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 500,
            "len": 100,
            "markers": []
        }, {
            "pos": 800,
            "len": 100,
            "markers": []
        }, {
            "pos": 1200,
            "len": 100,
            "markers": []
        }
        ]
    }, {
        "index": 12,
        "quarters_count": 4,
        "notes": [{
            "pos": 200,
            "len": 100,
            "markers": []
        }, {
            "pos": 400,
            "len": 100,
            "markers": []
        }, {
            "pos": 1100,
            "len": 100,
            "markers": []
        }
        ]
    }
    ]
}
],
"markers": [{
    "id": "extended",
    "code": "*",
    "color": "ffffff00"
}, {
    "id": "ToLeft",
    "code": "<",
    "color": "ffffff00"
}, {
    "id": "ToRight",
    "code": ">",
    "color": "ffffff00"
}
]
}

my game play just fine with the current file, but what I want is to make it slower and that mean I have to change the bpm from 128 to 240.

I have the current pos and len for the bpm 128.

I want to know if I can change the position of the notes based on the new bpm.

I do not want to change the audio file only the notes above so it can follow the new speed and still use the same audio file.



from Changing notes position based on new bpm

Android Device that supports concurrent capture from two rear facing cameras

I wanted to know if anyone has had success concurrently capturing images or videos on an Android device from 2 rear cameras, using this API: https://source.android.com/docs/core/camera/concurrent-streaming . The phone I had available to test (S21) supported the API, but the only pairs of cameras supported were front+rear facing combos. In kotlin, the code to get the supported pairs is:

val cameraManager = applicationContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val concurrentCameras = cameraManager.concurrentCameraIds

Hoping someone has a newer Samsung, Xiaomi, or Huawei phone to test if the API is supported? Thanks a lot!



from Android Device that supports concurrent capture from two rear facing cameras

Can setup.py / pip require a certain version of another package IF that package is already installed?

I have two python packages (locust-swarm and locust-plugins). Neither has a strict requirement to the other, but they can work together, and my users install them separately.

Sometimes there is a breaking change in one or the other, and I want to make sure nobody installs incompatible versions (by updating package A but not package B, for example). Is there a way to specify a minimum version of this "pseudo-dependency" and fail the install if it is not satisfied? A check that is only done if the other package is already installed.

I do not want to add one package as a dependency of the other and force users of package A to install package B, just to be able to handle this case.

Probably this question has been asked before, but I couldnt find an answer.



from Can setup.py / pip require a certain version of another package IF that package is already installed?