retrowars/retrowars

Sound effects

Closed this issue ยท 59 comments

Sound effects would breathe some life into the game as it feels hollow without it. Since these are retro style games, even simple sounds would suffice as it'd give feedback to what is happening on screen e.g. a beep whenever you clear lines in Tetris.

For those interested, I'm starting to put some work into this as I get time. I agree that simple sound effects are important, but I also think that sound effects without (at least the option of) music has the potential to be a bit clunky. As such, I'll try to get both working together (of course with the option to disable either).

When searching for chiptune music with free licenses (e.g. https://freemusicarchive.org/genre/Chip_Music), I came across the wonderful sountrack from the Space Jacked game (https://freemusicarchive.org/music/sawsquarenoise/RottenMage_SpaceJacked).

So far I have picked out some favourites - I like the idea of the same song for each game - and I have the following playlist:

For sounds, I'm hoping that the wonderful Kenney assets have suitable sounds both for in game, and also for interface sounds.

The goal is to publish an initial v0.26.0 (see #73) with music, and then after that work on finding and adding sound effects. This is because music is somewhat easier (one song per game, but it is the same process to add a song to each game, whereas for sounds each game needs custom sounds for each different potential action, and is completely dependent on the gameplay - this could take some time to organise).

By way of documentation, here is a rough sketch of the sounds we'll need:

  • Games
    • Asteroids
      • Firing a bullet
      • Blasting an asteroid
      • Getting hit by an asteroid
      • Thrusting
    • Missile Command
      • Enemy missile launched
      • Friendly missile launched
      • Explosion
      • Explosion hitting an enemy missile
      • Enemy missile hitting city
    • Tetris
      • Block landing
      • Clearing a line
    • Snake
      • Eating an apple
    • Space Invaders
      • Enemy firing
      • Player firing
      • Player getting hit
      • Enemy getting hit
      • Barrier getting hit?
    • Tempest
      • Enemy spawned
      • Enemy firing?
      • Enemy flipping?
      • Enemy hit
      • Player hit
      • Warp at the end of the level?
    • Breakout
      • Bounce off paddle
      • Break brick
      • Bounce off wall?
  • Multiplayer
    • Game countdown ticker
    • New player joined/left
    • Incoming attack
    • Outgoing attack
  • Misc
    • End game sound
    • New high score sound for singleplayer?
    • Menu sounds (button clicks mainly, but perhaps also screen transitions)?

I'd be happy to help with the sound design. I personally feel like this is more important than music for a project like this, since it's easy enough for somebody to play whatever music they want, and tastes vary widely. Which brings me to my first question: would it make sense to allow for "sound themes" to give users the option for more authentic old-school 4-bit vs. 8-bit FM vs. whatever? If not, it would be an interesting project to try to create a fusion evocative of the different eras a player might harbor nostalgia for. Either way, I'd be willing to put some effort in. It's been a while since I've played around with sound and I've been missing it lately.

Thanks @ig9000 - I'm quite terrible at sound, so any offer of assistance, especially from anyone who has a passion for it, is very much welcome. I like your idea of "sound themes". Perhaps I can work on a basic proof of concept using stock sounds from kenney.kl, with the following attributes:

  • Includes all the sounds I've described in the comment above.
  • Has a clearly layed out folder structure (or configuration file) that lets people such as yourself and others create sound themes.
  • Release it to F-Droid (or at least a beta release for your to play with on GitHub) so that you can download it and see how the game sounds when you replace the stock sounds with your own.
  • When you are happy with your theme, we'll get it added to the game, probably make it the default because it will sound better than mine, and then let people choose + add themes from within the game.

That sounds amazing, and would really make the sound design more fun (for potentially more people), due to not trying to please everybody with a single theme. My personal tendencies are towards a minimalist, even subliminal approach. I wonder if music background could be themed as well. The original versions of some of these games had some very tension-inducing soundscapes (the accelerating ticking sound from Atari 2600 Space Invaders haunts me to this day!). I'd love to compose some spooky drones vaguely evoking the original Tetris music. ;-)

A few random things: Should stuff like the movement of the space invaders also trigger audio events, for providing background soundscapes which follow changing pace, as described earlier? Can things like handicap "upgrades" trigger some change in sound? I think that would really add to the feel. An elaborate approach would be to implement a simple tracker playback engine, which allows for all kinds of fun modulations and transitions, as well as lengthy compositions using small sets of audio samples. Short of that, just having some kind of "heartbeat" signal available for triggering static samples would allow some form of tension-building background... just a thought.

Loving all the ideas with regards to tension-inducing soundscapes. I'll return to your detailed comment after we get basic sounds working. Here is a first work in progress of just Asteroids with working sounds from various https://kenney.nl sounds. All hard coded for now, but will try to get a build which supports custom sound themes soon so you don't need to wait for me to finish all game sounds before getting involved:

2022-05-07.20-57-39.mp4

The sound quality on the recording is not as good as the game itself. I think the compression has even reduced the volume of the thruster until it is almost inaudible in the video, but it is able to be heard when playing.

Will obviously need the ability for people to customise the volume of music + sounds independently.

And here is a recording of the game playing a mostly default sounds from within the game itself, but the asteroids_thrust.ogg file is from a custom "theme" in an external directory that is writeable by the user. In Android the directory would be something like /external/sdcard/0/retrowars/sounds/my-custom-theme/OGG_FILES_GO_HERE, but in this screen recording on my Linux box it is in ~/retrowars/sounds/my-custom-theme/OGG_FILES_GO_HERE. If the sound file the game wishes to play exists in that directory, it will be chosen, otherwise it falls back to the default sound. It also iterates over all folders in ~/retrowars/sounds/* and in the future we'll let people choose one of these folders from the settings.

2022-05-07.22-05-30.mp4

Nice! That feels like 300% more fun already. Asteroids is the game I enjoy the most so far, so I've been thinking about that one. Using those sounds as a starting point, my thoughts would be:

  • thruster sound should probably have a fairly fast attack, since it's often used in very short bursts
  • shooting sound maybe a little bit subtler, because it's going to get drilled into your head
  • asteroid explosion sound maybe just tightened up a tiny bit, partly to contrast with...
  • the sound of the ship exploding: I would make it big with a heartbreakingly long reverberation tail, maybe even add a little more delay before respawning (or better yet, a long explosion animation) just to let it sink in. ;-)

Will obviously need the ability for people to customise the volume of music + sounds independently.

Yeah, or just to be able to balance sounds with external music players.

After thinking a little more about the tension-building background soundscape, it could be as simple as a repeating a/b event loop (synced to game action where appropriate), A resolution of 12 or even 96 ticks would allow for more interesting stuff, but might be overkill (and maybe a waste of resources). Anyway, glad to have an excuse to dig up some old noisemaking software!

EDIT: After some serious historical research I found that the original arcade Space Invaders actually used a repeating four-note pattern for the alien movement. I also couldn't remember if Tempest actually made a circumnavigation noise or not, turns out it was a pretty distinct "clink". Fun stuff.

Oh, and regarding a release for testing sounds, if it's possible to produce a jar file that will run under a vanilla JRE, that would probably be a better environment for playtesting ideas for me. I can set up a crappy-phone-speaker emulation for testing that.

Sure, I'll create a temporary release page with an attached .jar file. Check the instructions on that page. I'll continue to update the release notes there as we progress (e.g. when a UI is made available to select sound themes, or if any new sounds are added).

To help debug, the game spits out a little bit of debug info when running regarding the "sound themes" it found (or didn't find):

[RetrowarsGame] Showing game select screen
[RetrowarsGame] Showing game screen for asteroids
[SoundThemes] Looking for sound themes in /home/pete/retrowars/sounds.
[SoundThemes] Found theme custom-1 with the following sounds: [asteroids_thrust.ogg]
[SoundThemes] Found theme custom-2 with the following sounds: []

In this case, it is because I have the following folder structure:

/home/pete/retrowars/sounds/custom-1 with a asteroids_thrust.ogg file, and /home/pete/retrowars/sounds/custom-2 with no files in it.

As there is no UI to choose themes, it will just pick the first folder from ~/retrowars/sounds/ and choose overridden sounds from that folder.

Finally, the list of sounds to be overriden can be found here, in the ./android/assets/sounds/ folder of the sound-effects branch of this code. Hopefully they are all sensibly named, but let me know if there is any confusion and we can rename.

It's all working great, and the games are much more playable that way, tbh. This might be a good point for asking how closely we can clone the original sounds without worrying about takedown notices? Anyway, I'm hoping to play around with some background sounds for asteroids later today, after a little more research.

I'd rather not clone thanks. I've intentionally left any of the game names out of the UI (notice how this game doesnt include "Asteroids" in it, nor does the description? - The source, commit history, and this issue tracker is a different story). Instead, I've watched some videos of people playing and then built what I think I saw. No reverse engineering to figure out timing or anything like that. This also works because many of these games have many versions through history, and for practical reasons it is not always wise to be too inspired by the original version (e.g. the original Breakout is just a tad clunky compared to later reasons).

I wonder if it would be wise to actually give the games silly names to facilitate discussion while avoiding those other names? In any case, going beyond a clean room approach to the point of cartoonish almost-parody is probably more fun anyway (I'm imagining an asteroid ship explosion where the debris drifts further across the screen for a longer period of time, with some deflating sound effects). Then there are considerations related to adapting the games to the multiplayer aspect - rather than having the ominous throbbing sound accelerate as the screen is cleared of asteroids, then being reset with a new batch, it could simply speed up in response to increasing difficulty for the duration of the game.

A few other little things I noted while watching the original:

  • explosion sounds varied with asteroid size, which was nice
  • the flying saucers show up more often than I remember, and really spice things up
  • the sound for earning an extra ship is absurdly prominent, nice dopamine reward I guess
  • they really blatantly ripped off the soundtrack to Jaws

Anyway, that pretty much leaves the question wide open as to how sophisticated of a tension-building sonic pulse you feel like implementing.

Just noticed that asteroid_hit_ship.ogg is being used for both the ship and asteroid explosions (which explains why the asteroid explosions in your videos seemed kind of long).

Good catch. I've fixed the asteroids_hit_ship duplication so now asteroids_hit_asteroid is used appropriately. I've also allowed you to use either mp3, ogg, or wav files in your sound theme (e.g. asteroids_hit_ship.mp3 will get loaded if present). Finally, not sure if this is useful, but the release page documents how to use a metadata.json file in your theme to specify alternate sound names. My thinking was that as we add more sounds, you may wish to have a single fire.ogg which is used for both asteroids_fire and also a future tempest_fire and spaceinvaders_fire too without having to duplicate this file.

Now that I've done that, I will move onto adding sounds to another game or two. Any preference for what I do next?

Regarding your comments above, I'll also add (the option of) different sounds for different asteroids sounds. No flying saucer here sorry - can add it in the future but obviously a separate ticket. Also no earning extra ships - may need to think what this would mean for other games - e.g. in tetris you never get to "earn" anything - the game just gets harder and harder - so in a multiplayer environment, would it be fair to earn extra things? perhaps not.

I've also allowed you to use either mp3, ogg, or wav files in your sound theme

Great! OGG is a good finished format for utility sound files compared to MP3 (especially looped sounds like thrusters) but it's nice to be able to use WAV for working files.

not sure if this is useful, but the release page documents how to use a metadata.json file in your theme to specify alternate sound names

Definitely couldn't hurt. As more games are added, it will make more and more sense to reuse sounds.

Any preference for what I do next?

Well, Invaders will probably be good as a first experiment in environmental soundscapes, since there's an obvious thing (alien movement) to connect a repeating event sequence to. A flexible approach (but maybe not the easiest to implement) would be for sound loading to check for a numbered sequence of files with the indicated name, up to some sane limit (maybe 12?). These would then be looped through as the event repeatedly fired. This might pay off in not having to decide how to distribute multiple sound events in each game - just one "tick" event, and the theme designer decides how complex the sonic results are. This would lend itself to things like slithering snake sounds that kept pace with the speed of play. It's just a thought, if it doesn't seem feasible, I understand, in which case maybe just an alternating pair of alien movement events would still allow for an ominous indication of your time ticking away...

tetris you never get to "earn" anything - the game just gets harder and harder - so in a multiplayer environment, would it be fair to earn extra things?

Well, if I'm understanding the multiplayer concept correctly, you can "earn" increased difficulty for the opponent(s)? If that's the case, that would be something to connect a happy reward sound event to.

Great, I'll ponder the ticking sounds tonight or tomorrow night as I get time. I'll probably create a project board in GitHub to track each of the different elements of sound design, as a single thread here may get cumbersome.

Well, if I'm understanding the multiplayer concept correctly, you can "earn" increased difficulty for the opponent(s)? If that's the case, that would be something to connect a happy reward sound event to.

That is correct. Initially, I've thought this could be a global sound for all games (see above):

image

It may be worth investigating unique sounds per game for this, but I also really appreciate doing everything possible to add some tiny bit of uniformity across games, so that it is not just a distinct set of different games, but rather pats of a bigger whole. For instance, the way in which the screen shakes is identical across each game when attacked - the same for sounds would do the same.

Can make it able to be overriden per sound-theme though if you like.

Enforcing a consistent set of meta-sounds makes sense to me, I'll start playing around with some ideas for those, since it would probably be good to have at least a rough draft to reference while designing individual game sound. Any particular feel you have in mind there? Somewhat more organic and less "bleepy" than the games themselves? Or retro all the way down?

One more idea to ponder regarding multi-sound events: ability to have a group of sounds selected from at random each time it fires? Can help mitigate the monotony of sample playback sound engines during heavy repetition.

Happy to take your advice on the meta game sounds. Selecting sounds at random sounds great. I will definitely add this to the list of things to do, but it will probably come after adding basic sound files to other games. Best to start with some sounds, then improve by bulking up additional sounds to be chosen at random after.

Starting to break this down into tasks to keep track of here:

https://github.com/retrowars/retrowars/projects/4

Can you add cards @ig9000? If not, would you like me to add the relevant permissions so you can do so?

Can you add cards @ig9000? If not, would you like me to add the relevant permissions so you can do so?

Seems I can't. I'm probably more comfortable taking part in discussion, but I'm not opposed to the idea if it makes sense at some point.

https://github.com/retrowars/retrowars/releases/tag/wip-sounds updated with new build:

  • Sounds per-asteroid size (large, medium, small, tiny).
  • Option of multiple sound files per effect, chosen from randomly each time the effect is played.
  • Started Space Invaders (just the tick sound for now)

The build includes 5 sounds for asteroid_fire, not because I think it is a good idea, but rather as a little proof of concept, to show that it is working as expected.

The build includes 5 sounds for asteroid_fire, not because I think it is a good idea,

Just to clarify, do you think it's a bad idea? I don't want to overuse this feature if it seems like resource bloat. It will definitely be useful for things like snake slither. Obviously, the typical use for things like shooting would be very subtle (although I have to admit that the proof-of-concept gameplay made me laugh - noted for the "cartoon" theme).

I think the ordered multiple sound mode originally mentioned could also be useful alongside this, for more rhythmic stuff like the invaders. That said, it's amazing how much just adding that one repeating sound brings back the feel of that game... especially when it suddenly stops after that last hit! Food for thought.

Just to clarify, do you think it's a bad idea?

No, miscommunication. I think it is a bad idea for the shooting sound. I think it is a wonderful idea for sounds like explosions :)

Ok, so I put together a quick-and-dirty set of asteroids sounds as a starting point for feedback. These are all based on the first set of "kenney" sounds, but have had their envelopes and pitches modified to my taste. The 2 fire sounds simply differ in pitch by 5%, as an example of a barely perceptible difference that subtly changes the feel of repeated firing. Same for the two smaller asteroid variants, plus slightly different envelope shaping, again very subtle. Thruster sound has been slightly shortened with the loop optimized to start on a particularly punchy part of the waveform and also loop cleanly. Ship hit is bigger now. :-)

This is just a first draft to get feedback about what seems good, bad, or ugly... particularly, whether the different asteroid sizes feel ok in terms of volume, pitch, duration, etc.

asteroids-mod-kenney.zip

Love it. Asteroid hist are great, ship hit is even better. Think the two modulated versions of the fire work well too.

I can hear what you're saying about the thruster starting on a more-punchier-sound, but perhaps a little quiet? Not sure about you but I don't fly around too much when playing Asteroids, and it is barely audible. Having said that, the sound itself is good. Think we could increase the volume without ruining it too much?

Final question: If you'd like me to include these as the official sound pack (which I'd love to), how are they to be licensed? Same license as Kenney but then attribute both you and them?

I can hear what you're saying about the thruster starting on a more-punchier-sound, but perhaps a little quiet?

We can definitely make it more prominent. Right now, it probably depends on the playback system - there's a fair amount of low end in the sound, which gives it impact on good headphones or monitors, but is probably lost on small speakers. I haven't really started on phone-speaker-torture-testing yet, but that will tend to involve some EQ to try to give each sound its own sonic space even in that situation. I'll work on it.

I was planning to generate new waveforms for the different asteroid hits, and still might, but the pitch-adjusted ones don't actually sound as bad as I thought they would coming back a day later, so... we'll see. Still investigating some new software for that stuff. Anyway, don't hesitate to mention if something starts to sound annoying after longer exposure... that's the real test.

If you'd like me to include these as the official sound pack (which I'd love to), how are they to be licensed? Same license as Kenney but then attribute both you and them?

IIRC, the Kenney sounds are CC0, so they can just stay that way unless you'd prefer something else. I don't care about attribution, personally. It's all a derivative melange so far!

Release updated with all space invaders sounds and your asteroids sounds, as well as snake sounds. Space invaders shamelessly steals your audio from Asteroids right now because I wanted to smash out a version with some sounds for us to work on.

During a late-night session of testing sounds through tiny speakers I started to see the little asteroids swimming around the screen as bubbles... so just for fun I made the hit sounds more resonant, like a balloon popping or something. It may very well be a dumb idea, in which case they can be set aside for a future theme. On the plus side, they do a good job of punching through the music. At any rate, the thrust sound should be much more audible now under all playback systems, and I made some changes to the fire and ship hit which may or may not be improvements, feel free to cherry pick or suggest further changes.

asteroids-20220516.zip

Looking forward to playing with some of the newly added stuff!

Thanks @ig9000, I'll make sure to check them out and add them to the game over the next night or so.

Looking forward to playing with some of the newly added stuff!

Any thoughts on how/when to drop a release with sound effects? My thoughts are something like:

  • Would be nice to wait for all sounds... but this is a hobby project and I don't think there is an expectation of everything always being perfect.
  • It would be okay to release with only a few games having sound effects... if the player has the option to turn off sounds (separately from music) so as to not become jarring when some games have sounds and others don't.
  • I could also add a warning similar to that for the beta games when a player turns on sounds saying that it is a work in progress... but then people may never go and turn them on (maybe we just make it default to unmuted, and players hopefully understand that it is not finished.
  • Alternatively - we can wait until all sounds are accounted for.

Thoughts?

I really don't want to assume you will always be hanging around and always be available to discuss and then add perfect sounds for all current and future games - but while you're here I'm eternally grateful not just for your insight and contributions, but for showing such a keen interest.

FYI - release has been updated with these new sounds. Think they all sound great.

Thinking that the thruster should fade out when you let go, but that is an issue for the code (decrease volume until 0, then stop playing) - but that will take a little more code to get working.

It would be okay to release with only a few games having sound effects...

Advantage of this would be possibly getting some feedback about the direction things are going sound-wise, but whether that would happen is certainly uncertain.

Alternatively - we can wait until all sounds are accounted for.

If you're leaning towards this, I should have plenty of free time this week (knock on wood). I've actually been recovering from a little bike accident for the last few weeks, including a sprained wrist which is mostly healed, so probably willing to spend more time at keyboard/mouse now. Also have software workflow pretty much in place. Of course, even if sounds are in place, it doesn't mean things can't be changed in response to feedback.

for showing such a keen interest.

What could be better than the intersection of collaboration, playing with sounds, and wallowing in nostalgia? ;-)

Thinking that the thruster should fade out when you let go, but that is an issue for the code

Yeah, I'd been meaning to ask about that - having some enveloping ability in the sound engine itself could be useful for sounds that should be shorter as things speed up, as well. I would think there must be some good FOSS libraries for game audio stuff by now, might be worth a look before re-inventing the wheel. But otherwise, just a ramped cut-off would be useful (exponential decays generally sound more natural than linear ones, btw).

Oh, and before I forget, shouldn't invaders have a sound event for landfall/doom?

Release updated with (linear) decay for the thruster right now - not configurable at this point (a little easier than I thought while on the train).

If you're leaning towards this...

Not necessarily. If anything, leaning the other way (get a release cut sooner). Sorry to hear about your accident, glad to hear you are healing.

Oh, and before I forget, shouldn't invaders have a sound event for landfall/doom?

Yes, good call. In my head it was the same as getting hit by a bullet, but this is clearly not the case. It is much more catastrophic (no loss of individual life, but rather complete destruction).

Yeah, the finality of the "thud" on the Atari 2600 version made quite an impression on my childhood brain. Amazing that something so primitive could be so effective. I'll get started on that one next, my thoughts are to mostly let the marching sound dominate (really like the one you used), with firing subdued, especially the alien firing, which I think of more as bombing (and which seems to happen in a kind of pattern with the movement). If ship getting hit isn't going to result in an animation or any real pause in play, probably keep that minimal, in contrast to asteroids.

On the subject of sound engine upgrades, I'll also mention that with game music as in use here, it makes sense to create loop points within a song so that you don't have awkward fade out/intro things happen in the heat of play. If you think you might want to implement that, I'd be happy to work on finding appropriate loop points. And speaking of music, maybe that should abruptly stop when aliens land, too, leaving nothing but a reverberating, ominous doomy thing?

If you think you might want to implement that, I'd be happy to work on finding appropriate loop points.

Sounds like a great idea, thanks!

abruptly stop when aliens land, too, leaving nothing but a reverberating, ominous doomy thing

I think in the spirit of meta-sounds discussed before (e.g. multiplayer attacks happening), it might be nice to have a single "End Game" theme which plays when you die. Think Final Fantasy, with its distinctive "Victory Fanfare" which is embedded in my brain, and plays regardless of the specific battle.

An example of one which may work for our purposes, based on your comments of "ominous doomy thing" could be the start of this (CC licensed) song: https://ds10forum.bandcamp.com/track/old-clock-vanno (or others from the same album which can be equally eerie).

Missile command sounds added and release updated. Only outstanding games are now Tempest and Breakout (beta), then some meta sounds.

I think at this point may as well just wait until at least this first cut of each sound is out, and as you find time to work on sounds we will continually add them and release. I've tried to put semi-reasonable sounds from Kenney everywhere, but I haven't put a lot of thought into it so every contribution tweaking them or completely replacing them is very welcome.

Funny, I was just playing missile command as a wind-down before bedtime, and my thought was that it might be a good "chill room" game, maybe make the music and sounds more laid back than the other games, given the nature of the action? Just a thought. I've been alternately trying a few things with invaders and snakes, but don't have anything ready enough to be worth uploading yet. Give me another 24 hours. I like the idea of a consistent "game over" theme (is "victory" a thing here?) - it could always overlay any game-specific sonic doom.

EDIT: Just played a round of missile command with sound, those spacey echoes are just what I was imagining... I think we're on the same page here... it just needs a nice, sparse chiptune dub soundtrack to give the sounds the space they need.

EDIT 2: Maybe something from this? https://freemusicarchive.org/music/Mattisson/Leaves

Well, this got a little weird, but I went with a kind of sludgy, rusty pipes kind of feel with the invaders. It's all very tentative, and there no ship hit sound yet, but this is a snapshot of where things are at the moment. As always, if it doesn't work for you, don't hesitate to say so... it can just go into a theme pack for later.

invaders-20220518.zip

thought was that it might be a good "chill room" game, maybe make the music and sounds more laid back than the other games

That "Leaves" library sounds wonderful, and I completely agree with your assessment of the kind of music for that game. However that library has a Non Commercial clause, and this game (although GNU GPLv3+ licensed and free on F-Droid) is up on Google Play for $1 (as a donation effectively - made $17 in the life of the app so far ๐Ÿ˜‰ ). So would prefer something that doesn't have a non-commercial clause for that reason.

It's all very tentative, and there no ship hit sound yet, but this is a snapshot of where things are at the moment

Sounds good. I like it. I've incorporated it and updated the release (the hit sounds remain as before just to complete the sound set).

this game (although GNU GPLv3+ licensed and free on F-Droid) is up on Google Play for $1

I wasn't aware of that, but would argue that even so, the primary intent of the app is not commercial, which is ostensibly what matters. That's obviously your call to make, though. I think that clause is unfortunately included due to not understanding how problematic it can be for exactly the kinds of projects people actually do want to share their work with... but I'm sure you know all that, and it was mostly just an example of the type of vibe I had in mind.

Anyhow, since you agree with the jist of what I proposed, I'll work on some mellow sounds for the missile action and something suitably squishy for the invaders ship hit. ๐Ÿ‘พ

Sorry, been dealing with some other stuff, but getting back to business now, hopefully. This batch is just some refinements of a couple invaders sounds, plus a first draft of a ship hit.

invaders-20220526.zip

Sounding good. Release updated. After another play through, really enjoying the "splodgey-ness" of this sound pack.

really enjoying the "splodgey-ness" of this sound pack.

If you think that approach is getting a little too far away from the bleepy retro aesthetic, it's fine to say so... my rationalization is that the music already kind of moves it away from that anyway, and the sounds need to have enough character to compete with it (but also work ok on their own). It's fun trying to integrate some authentic primitive waveforms into a more complex blended sound... still working on the invader doom. Any recent thoughts on the "game over" meta-theme? My working assumption is that it will be low-key enough (at least initially) to allow some space for game-specific sounds like that one.

Speaking of music, here's an example of what I meant about looping: this "song" is actually just a 70-second segment looped three times, with a fade out at the end. By extracting just the middle segment, I was able to keep much higher sound quality (you can hear the hi-hats!) while still reducing the overall file size almost by half. The one catch here is that it now opens with a drum hit "on the one". There are ways around that (more important for songs with less simplistic structures) but this is just a quick and dirty example that works with the existing simple looping implementation.

wherever_aliens_loop.zip

So, regarding meta end gamemusic, I've added that recently. You should hear it if you download the latest version from our WIP release page. It plays this song:

https://github.com/retrowars/retrowars/blob/sound-effects/android/assets/music/awakenings_old_clock.ogg

And I've obviously been learning from you! as I've managed to find a nice looping segment about 15secs long (similar to your cut above).

I love your cut of the aliens song, and will incorporate that (and we can try to do the same for other songs too - happy to help out there). Far better than letting the song end on its own terms.

If you think that approach is getting a little too far away from the bleepy retro aesthetic, it's fine to say so...

All good. Main goal is just a "nice" sound set, whether it is true to the originals matters a little less.

The goal I have for my games and apps is the same goal I used to tell my final year Uni students: For them, people shouldn't look at their projects and think "a student made this". For theseopen source apps, I dont want people to think "that was just a free software enthusiast building a toy project with no attention to detail or focus on UX". There is no reason this shouldn't be as good if not better than many of the commercial games around. This is why I appreciate your attention to detail so much, as it really adds that extra level of polish.

my rationalization is that the music already kind of moves it away from that anyway, and the sounds need to have enough character to compete with it

Once we've got a release out with sounds, I'll go back and move the songs into the sound theme, so that we have more control, and sound engineers can choose songs to match their desired vibe.

Just played a very short game of "sponge invaders", the end song fades in very nicely (haven't tried with the game music on yet), presumeably in software since the file itself starts pretty abruptly... so, since you've got the fading figured out, we can probably get by with simple full-looping of song files for now. I'll work on extracting the other ones.

It might be good to standardize on a sample rate for all audio resources, preferably the native rate of the game engine to avoid on-the-fly resampling as much as possible. The sad reality is that the audio will probably go through at least one pass of that before hitting the DAC on any given system, and each one degrades the high frequencies further. At one time my understanding was that most mobile device DACs ran at 48k, dunno if that's still the case (seems likely, though). It's easy enough to run files through a high quality resampler to sync them all up as needed.

Release updated with basic sounds for tempest + breakout. That means we have a basic sound set (able to be customized at least) for all games.

Next on my todo list is to allow people to mute sounds, then I think we start cutting releases each time we update sounds. It is a nice little bonus for the project to release often (even if just after a few sounds get updated) - it doesn't cost anything to do so, and that little bit of extra time near the top of the whats new page on F-Droid drives a little bump in traffic to the project.

Any thoughts on how to mute sounds?

Options:

  • Single mute button on menu screens as now, and allow music and sound volume to be controlled independently in the options (so someone can effectively mute music but leave sounds playing or vice verca).
  • Two mute buttons, one for tunes, one for sounds (but then that probably still wants individual volume control, so I'm leaning towards the earlier option.
  • Anything else?

First option seems like it provides good flexibility + "panic button" utility. It could always be changed if you get a lot of feedback asking for individual buttons; my own UI preferences are probably out of step with the general population, so I'd better not even try to guess.

I was just looking at this, which, along with a few other things I skimmed last night, suggests that providing an audio track at native system rate at least allows for skipping some DSP stages in the Android sound server, which improves both quality and latency. With that in mind, I'm going to go ahead and make 48k my working project rate going forward, and convert existing sounds whenever I touch them, if that makes sense to you. As demonstrated, paring the music tracks down to single loop cycles will more than make up for it in terms of file size.

More explicitly, from this page:

If you're concerned about latency, don't resample
Resampling prevents the track from being placed in the FastMixer path, which means that significantly higher latency occurs due to the additional, larger buffer in the ordinary Mixer path. Furthermore, there is an implicit delay from the filter length of the resampler, though this is typically on the order of one millisecond or less, which is not as large as the additional buffering for the ordinary Mixer path (typically 20 milliseconds).

Here's the shiny new loop extractions from the spacejacked stuff in the music directory. Probably doesn't justify a new release, but I'll get back to actual new sounds shortly. Let me know if I overlooked any.

music_loops.zip

EDIT: here's a resampled version of the old clock segment, with a fancy crossfade so that it loops seamlessly, just in case anybody lets it play for that long...

awakenings_old_clock-xfade.zip

Will respond regarding music loops later and incorporate them (but yes, sound great, awesome effort as always). Just dropping in to demo the latest option changes I worked on during my train trip to work this morning:

image

Can't wait to try out the volume controls. I've thus far been pushing the normalization on the game sound files to compete with the music at its full volume, but it would be nice to back off on that a couple of dB. I've been playing some missile defense, and I really like the sounds you picked for that, probably just make small changes, mostly to the explosions, unless to have other suggestions. Also found that this track (or possibly others from that cc by source) kind of works for that game, if you aren't opposed to some cheesy synthwave in the mix. It does give way to the "game over" music really nicely...

Release updated with:

  • Sound + Music toggles and individual volume control.
  • Updated music tracks (versions you've cut to specific loop points, and improved end game music with cross-fade).

Will play test a little more, then start to cut releases as we continue to improve the sound effects!

I was struggling a little bit with the sounds for the snake tick; most tonal sounds clashed with the music too much, and became too annoying without it. This set uses classic noisy waveforms as a series of pulses which, when randomized, produce kind of a fun "chugging along" pulse, and to me they work ok with or without music. See what you think. (The "eat" sound is just a massaged version of the one you originally picked, and the hit soundf is a more heavily mutated version of the original.)

snake-20220610.zip

Also found that this track (or possibly others from that cc by source) kind of works for that game, if you aren't opposed to some cheesy synthwave in the mix.

Yeah, this is great thanks. I've had a try at cutting it to a nice loop point, but not sure if I've set other properties of the resulting file correctly as per your earlier discussions (3MB seems pretty large for what it is): https://github.com/retrowars/retrowars/blob/master/android/assets/music/last_breath.ogg.

Snake sounds sound great too, thanks.

I've incorporated both these changes into a 0.31.1 release. This will be tagged once F-Droid builds and releases 0.31.0 (translation related - no audio changes there).

Here's another take on looping that track, starting right in on the drum fill. Rationale being that the intro is just a more monotonous version of the same part later in the song (end of the loop here) without the interesting modulations, plus going right to the fill just seems to fit the game context better (cutting from the "lobby" music). Also preemptively resampled to 48k, and compressed to around 1.5MB. Again, see what you think.

synth_kid_-_last_breath-loop.zip

Yes, agree with everything you've said here. I've added this version instead for the upcoming 0.31.1.

I hope it goes without saying that please do propose whatever songs you thing suit for other games too (e.g. if you feel that Snake is hard to get right due to the background music - always happy to entertain other songs you stumble across).

As suggested, lets close this for now and continue filing other issues as they arise.