summaryrefslogtreecommitdiff
path: root/Settings
diff options
context:
space:
mode:
Diffstat (limited to 'Settings')
-rw-r--r--Settings/Distribution.go28
-rw-r--r--Settings/Settings.go6
2 files changed, 34 insertions, 0 deletions
diff --git a/Settings/Distribution.go b/Settings/Distribution.go
new file mode 100644
index 0000000..fc8ae13
--- /dev/null
+++ b/Settings/Distribution.go
@@ -0,0 +1,28 @@
+package settings
+
+import "math/rand"
+
+type distributionOptions struct {
+ // The chance of a value to be defaulted by zero
+ RandomisationChance float64
+ // The song start point will be between [0; len(song) * MaxPointPercent]
+ MaxPointPercent float64
+ // All the values less than this param will be defaulted to zero
+
+ StartSnapPercent float64
+}
+
+func (base distributionOptions) GetDistributedInt(dur int) int {
+ if rand.Float64() < base.RandomisationChance {
+ return 0
+ }
+ var random = rand.Float64() * base.MaxPointPercent
+ if random >= 1 {
+ panic("Random is greater than 1")
+ }
+ var randomDur = int(random * float64(dur))
+ if randomDur <= int(base.StartSnapPercent * float64(dur)) {
+ return 0
+ }
+ return randomDur
+}
diff --git a/Settings/Settings.go b/Settings/Settings.go
index e859677..bd22056 100644
--- a/Settings/Settings.go
+++ b/Settings/Settings.go
@@ -10,10 +10,16 @@ const settingsLocation = "Settings.json"
type Settings struct {
SongsLocation string
+ Distribution distributionOptions
}
var defaultSettings = Settings {
SongsLocation: "./Songs",
+ Distribution: distributionOptions{
+ RandomisationChance: 0.5,
+ MaxPointPercent: 0.75,
+ StartSnapPercent: 0.1,
+ },
}
func (base Settings) String() string {