M9b: folk, filer, reklam, sorl och vagnval
All checks were successful
release / build-release (push) Successful in 1m33s
All checks were successful
release / build-release (push) Successful in 1m33s
Folk på stationen (NPC:er som vandrar, kliver av tåg och går mot utgången, blockerar spelaren men inte varandra), vänster-/högerfiler som bromsar på fel sida, bredare gångar, reklamaffischer (clutter), japanskt sorl i loop (noise), vagnval med kvinnovagn (stort avdrag med man i sällskapet, tidsstyrd), kömarkeringar på perrongen, trängsel per vagn (bonus för tom vagn, svettig-debuff och svårare resa i full vagn, släpp förbi passagerare) och att folk kliver av innan man får gå på. Ny bana 005 Ueno. Skärmdumpsverktyget kan filtrera på bana/skript. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -83,12 +83,39 @@ func writeWAV(path string, pcm []int16) error {
|
||||
return binary.Write(f, binary.LittleEndian, pcm)
|
||||
}
|
||||
|
||||
// chatter syntetiserar sex sekunder loopbart stationssorl: lågpassat brus
|
||||
// med stavelseliknande amplitudmodulation från en deterministisk LCG.
|
||||
func chatter(seconds float64) []int16 {
|
||||
n := int(seconds * rate)
|
||||
out := make([]int16, n)
|
||||
var lcg uint32 = 12345
|
||||
next := func() float64 { lcg = lcg*1664525 + 1013904223; return float64(lcg>>8)/float64(1<<24)*2 - 1 }
|
||||
lp := 0.0
|
||||
env, envTarget, envT := 0.3, 0.3, 0.0
|
||||
for i := 0; i < n; i++ {
|
||||
t := float64(i) / rate
|
||||
// ny "stavelse" var 120–250 ms
|
||||
if t >= envT {
|
||||
envTarget = 0.1 + 0.6*math.Abs(next())
|
||||
envT = t + 0.12 + 0.13*math.Abs(next())
|
||||
}
|
||||
env += (envTarget - env) * 0.002
|
||||
lp += (next() - lp) * 0.08 // lågpass ≈ 600 Hz
|
||||
v := lp * env * 0.6
|
||||
// mjuk in-/utfasning för sömlös loop
|
||||
fade := math.Min(1, math.Min(t, seconds-t)/0.2)
|
||||
out[i] = int16(v * fade * 32767)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func main() {
|
||||
out := filepath.Join(repoRoot(), "resources", "sound")
|
||||
must(os.MkdirAll(out, 0o755))
|
||||
must(writeWAV(filepath.Join(out, "melody-approach.wav"), render(approachMelody, 0.01, 0.06, 0.3)))
|
||||
must(writeWAV(filepath.Join(out, "door-chime.wav"), render(doorChime, 0.005, 0.04, 0.1)))
|
||||
fmt.Println("skrev", filepath.Join(out, "melody-approach.wav"), "och door-chime.wav")
|
||||
must(writeWAV(filepath.Join(out, "chatter.wav"), chatter(6)))
|
||||
fmt.Println("skrev", filepath.Join(out, "melody-approach.wav"), ", door-chime.wav och chatter.wav")
|
||||
}
|
||||
|
||||
func repoRoot() string {
|
||||
|
||||
Reference in New Issue
Block a user