musicmaker
1.png

Videos

+

Screenshots

+

musicmaker

author linda303
date 2026 may
name musicmaker

@_@

a work in progress proof of concept :3
the idea is to make an in-engine PUBLIC COMPUTER ^_^
inspired by music trackers and halfquake's music puzzle <3

P.S. feel free 2 make your own programs! =)


INFO

1(!). place samples named from c1.wav to c8.wav into /musicmaker/sound/
2a. use commandmenu.txt for interface navigation with +commandmenu
2b. OR type trigger cam_front_far to enter/exit
3(opt). type exec piano.cfg for a virtual piano layout (UNBINDS KEYS!)

…you might need some prior goldsrc experience 4 this..!


FAQ

svengine, a fork of goldsrc, has many features that make this possible:

  • trigger_camera - mouse input events
  • trigger_cameratarget - multiple unique i/o
  • trigger_changevalue - better trigger_changetarget
  • trigger_copyvalue - arithmetic & logic operations
  • ambient_generic - play modes, more waveform shapes, more supported audio formats, clientside !activator, linear rolloff, etc.
  • wildcards (*) - global targetname matching
  • engine limits - 2MB entdata on compile, 8192 MAX_EDICTS on runtime
  • VHLT/ZHLT - 1024 bsp_maxnodesize, 512 bsp_subdivide, etc.

…and because, AFAIK, no one has done this before! :P


SOON

1. shorter, fine-tune timings for the envelopes (<100hz/ms)
2. rename, rearrange entities for less entdata (4-letter standard)
3. streaming, for ambient_generics to feed and mix built-in SFX
4. implement trigger_copyvalues with trigger_cameratarget's heal/hurt actions for more precise inputs, instead of AND/OR gates for toggling between different values @_@

…admittedly, i might be reaching the limit of my knowledge… :(


TODO

  • .wav loop cue points (I FORGOR IM SORRY)
  • commandmenu.txt (vgui)
  • example/practice program
  • piano (program, piano.cfg)
  • paint program (decals, sprites, func_wall_toggle)
  • drummachine (program, drum.cfg)
  • sequencer/groovebox (program, sequencer.cfg)
  • save states (trigger_save, trigger_load)
  • default_sentences.txt (mixing)
  • non-precached sound streaming (\*name.wav)
  • instrument (indicator (trigger_numericdisplay), switcher (???), DSP (env_sound), octave, volume (health, volstart), presets (preset), fade (fadein, fadeout), pitch (pitch, pitchstart), envelope/stepper (spinup, cspinup, spindown), LFO (lfotype, lforate, lfomodpitch, lfomodvol), loop/delay (???), transpose (-11/+11), etc.)
  • performance (texture memory, bsp/vis/csg, trigger_changevalues instead of trigger_relays to func_buttons' multisources and trigger_changetargets for locking them, trigger_conditions or trigger_entity_iterators with game_counters instead of multithreaded multi_managers or trigger_randoms, less wpolys/faces, less entdata, etc.)
  • notifications (game_text)
  • statusbar (taskbar)
  • tabmenu (background, border, camera, delete, exit)
  • camera (trigger_camera)
  • buttons (func_button, trigger_cameratarget)
  • sliders (scrollwheel)
  • popups (dropdown menu's)
  • visualiser (notes, wafeform)
  • metronome (4/4)
  • modularity (wildcards/regex for future-proofness, #0 or #1 triggerstates and use-types instead of the default 5.26 TOGGLE, simpler targetnames, etc.)
  • cursor (sprite)
  • font (brush, decal, texture)
  • clientside decorations (!activator)
  • second screen (b2b)
  • separate maps for standalone programs (entdata/MAX_EDICTS)

BUGS

  • KVs volstart with fadein and/or spinup/spindown will loop non-looping ambient_generics a certain amount of times (once, twice, etc.) if their values are lesser than "10" and greater than "90" and/or if the .wav file is shorter than the values for pitch modulation, in centiseconds, respectively. luckily, this can be EXPLOITED for the future sequencer, because one could execute arbitrary code to loop sounds, which *IS* neat, *IF* you know which "preset" changes such values. there is a neat table of dynamic effects on TWHL, which is very useful to figuring out how to actually CONTROL looping and sequencing in the future. this is also true for some other oscillation-related keyvalues :)
  • KVs lfomodpitch and lfomodvol will loop non-looping ambient_generics, because… AFAIK and as far as the audio system of the engine is concerned, the dynamic effects are "waiting" for themselves to finish, as if there is a "tail". so, unlike other modulation-related keyvalues, these ones are truly infinite - there is simply no attack or release and they are NOT dependant on the sound file's duration. this is how it was coded back in the 90s. i so wish to be wrong :(
  • KV playmode does not respect dynamic effects when looping ambient_generics. that is an engine limitation :( i will use trigger_copyvalues instead, just like for the future delay effect :)
  • some effects have a rather high "buffer size", which sounds very binary, square waveform-ish. to be fair, retail goldsrc only supported 8 bit depths. all the dynamic effects for the ambient_generics were designed *specifically* for the fan spooling/warming up noises, NOT piano notes! HOWEVER, ambient_generics in SVENGINE actually support ALL the shapes of waveforms, including but not limited to, SINE WAVES!! :D
  • piano.cfg's alternative virtual piano layout for black keys (QWERTY) doesnt support dynamic aliasing to "123456" and "234567" - octaves from C1 to C6 and C2 to C7 respectively, because im lazy :P
  • font is brushwork. whatever can i do? -_-
  • long game_texts are truncated in console. use developer cvar :)
  • my spare time is finite :(

btw

  • piano sounds are PUBLIC DOMAIN. enjoy! <3
  • no ai, no angelscript, no entmod, NO. >:(
  • .rmf & .jmf are included. DIY! ^_^

P.P.S. i KNOW that i often confuse svengine and *the* .fgd. cant help it. potato potato…


Tags

2026 fun jmf music rmf size:small utility

edit tags

Feedback

Rate this map

4.7 / 5 (3 votes)

Reviews

write a full review »

Comments & discussion

Add a New Comment

There are over 1629 maps for Sven Co-op! Here are a few:

20190108201650_1.jpg

3 / 5

2005 horde size:medium traps walkthrough

20170226154541_1.jpg

1.8 / 5

2017 boss community-edit horde needs-fixing size:small zombies

0-sc_vilagete_top.jpg

2 / 5

2004 horde rcbot size:medium war

0-azure_sheep.png

2.5 / 5

2001 2020 conversion music needs-picswalkthrough outdated series size:large survival

0-anotherunit-poster.png

3.9 / 5

2003 2016 black-mesa boms difficulty:medium official official-screlease rcbot size:large survival svencoop4 svencoop5 walkthrough

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License