diff --git a/include/extern.h b/include/extern.h index baae09151..e6505b313 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1813,6 +1813,7 @@ extern boolean munslime(struct monst *, boolean); extern void awaken_soldiers(struct monst *); extern int do_play_instrument(struct obj *); +enum instruments obj_to_instr(struct obj *); /* ### nhlsel.c ### */ @@ -2605,6 +2606,10 @@ extern void play_usersound_via_idx(int, int); extern void assign_soundlib(int); extern void activate_chosen_soundlib(void); extern void get_soundlib_name(char *dest, int maxlen); +#ifdef SND_SOUNDEFFECTS_AUTOMAP +extern char *get_sound_effect_filename(int32_t seidint, + char *buf, size_t bufsz, int32_t); +#endif /* ### sp_lev.c ### */ diff --git a/include/sndprocs.h b/include/sndprocs.h index ef319269b..682690dab 100644 --- a/include/sndprocs.h +++ b/include/sndprocs.h @@ -126,12 +126,13 @@ extern struct sound_procs soundprocs; /* subset for NetHack */ enum instruments { - ins_choir_aahs = 53, ins_trumpet = 57, ins_trombone = 58, - ins_french_horn = 61, ins_english_horn = 70, ins_piccolo = 73, + ins_cello = 43, ins_orchestral_harp = 47, ins_choir_aahs = 53, + ins_trumpet = 57, ins_trombone = 58, ins_french_horn = 61, + ins_baritone_sax = 68, ins_english_horn = 70, ins_piccolo = 73, ins_flute = 74, ins_pan_flute = 76, ins_blown_bottle = 77, ins_whistle = 79, ins_tinkle_bell = 113, ins_woodblock = 116, ins_taiko_drum = 117, ins_melodic_tom = 118, ins_seashore = 123, - ins_fencepost + ins_no_instrument }; #if 0 @@ -174,11 +175,12 @@ enum instruments_broad { ins_guitar_fret_noise = 121, ins_breath_noise = 122, ins_seashore = 123, ins_bird_tweet = 124, ins_telephone_ring = 125, ins_helicopter = 126, ins_applause = 127, ins_gunshot = 128, - ins_fencepost + ins_no_instrument }; #endif enum sound_effect_entries { + se_zero_invalid = 0, se_faint_splashing = 1, se_crackling_of_hellfire = 2, se_heart_beat = 3, @@ -358,6 +360,7 @@ enum sound_effect_entries { se_elephant_trumpet = 177, se_snake_rattle = 178, se_hallu_growl = 179, + number_of_se_entries }; #if defined(SND_LIB_QTSOUND) || defined(SND_LIB_PORTAUDIO) \ @@ -366,6 +369,15 @@ enum sound_effect_entries { || defined(SND_LIB_SOUND_ESCCODES) || defined(SND_LIB_VISSOUND) \ || defined(SND_LIB_WINDSOUND) +#define SND_LIB_INTEGRATED /* shortcut for conditional code in other files */ + +#define Play_usersound(filename, vol, idx) \ + do { \ + if (!Deaf && soundprocs.sound_play_usersound \ + && ((soundprocs.sndcap & SNDCAP_USERSOUNDS) != 0)) \ + (*soundprocs.sound_play_usersound)((filename), (vol), (idx)); \ + } while(0) + #define Soundeffect(seid, vol) \ do { \ if (!Deaf && soundprocs.sound_soundeffect \ @@ -373,8 +385,19 @@ enum sound_effect_entries { (*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \ } while(0) +#define Hero_playnotes(instrument, str, vol) \ + do { \ + if (!Deaf && soundprocs.sound_hero_playnotes \ + && ((soundprocs.sndcap & SNDCAP_HEROMUSIC) != 0)) \ + (*soundprocs.sound_hero_playnotes)((instrument), (str), (vol)); \ + } while(0) #else +#ifdef SND_LIB_INTEGRATED +#undef SND_LIB_INTEGRATED +#endif +#define Play_usersound(filename, vol, idx) #define Soundeffect(seid, vol) +#define Hero_playnotes(instrument, str, vol) #endif #endif /* SNDPROCS_H */ diff --git a/include/windconf.h b/include/windconf.h index 6eb5b2687..5addbfe71 100644 --- a/include/windconf.h +++ b/include/windconf.h @@ -93,6 +93,10 @@ extern void interject_assistance(int, int, genericptr_t, genericptr_t); extern void interject(int); +#if defined(SND_LIB_WINDSOUND) +#define SND_SOUNDEFFECTS_AUTOMAP +#endif + /* *=============================================== * Compiler-specific adjustments diff --git a/sound/wav/README b/sound/wav/README new file mode 100644 index 000000000..00a0321ae --- /dev/null +++ b/sound/wav/README @@ -0,0 +1,63 @@ +January 22, 2023 - sounds + +Important: For the included se_* wav files, please refer to the file +'sound/wav attributions.txt' for the details about the +source, author, and licensing. + +There were old aiif versions of some sound samples distributed +in uuencoded form in earlier versions of NetHack: bell.uu, bugle.uu, +erthdrum.uu, firehorn.uu, frsthorn.uu, lethdrum.uu, mgcflute.uu, +mgcharp.uu, toolhorn.uu, wdnflute.uu and wdnharp.uu. + +Those had been removed in commit 217671e00f626e53d314757b4687950466efb360 +in May 2019, at the same time built-in speaker support was removed. + +Some of those original files have been converted into wav files starting +with NetHack 3.7. The pitch variation versions offer a chance for very +simple tune playback on platforms that offer a basic play-sound function +call, which many do. There is no need to manipulate the underlying sounds +with those, although sound library interfaces may certainly produce +music in more elabote and pleasing ways. Contributions are welcome. + +While they make the distribution larger, they offer a more immersive +experience while playing locally on many platforms or with many +sound libraries. Also, file/distribution size is not the same +concern in 2023 that it might have been in 1995 or 2003. + +This is the note that accompanied those original sound files. + +------------------------------------------------------------ +README for the AIFF files: + +These files are sound files for the instruments in NetHack. +There are 11 sounds, one for each distinct instrument. +The sounds are in 8-bit 22kHz AIFF format, which should be +readable by a broad range of platforms. Since the sounds +came from Rolands S-750 sample library (most of them) there +should be no copyright on them when we treat them like we +do here (as instruments) - indeed, the sample library I +got from Roland didn't even bear a (c) symbol. + +Some of the sounds are very adequate (Drum of Earthquake, +Wooden Flute, Magic Harp) while some are less true to the +original name (how does a Frost Horn sound?) Actually, I +don't know what a Bugle is (Bugle horn?) so I took a trumpet +sound for that. Correct me if I'm wrong. + +What does this have to do with the main code? Well, nothing +so far. There are some places that are #ifdef MAC and calls +mac_speaker; that function takes an object and a tune (in +capital letters A-G) and plays the tune with the given +instrument. When playing a specific tune, that tune is of +course used. For "improvise," I use middle "C." + +Ideally, we should do something equal with sound that we +have with displays, so we can use one common set of calls +in the main code, and have ports do whatever seems appropriate +for the available hardware. + +Any comment on the sounds or their use is welcome: + + Jon W{tte + Mac Team + nethack-bugs@nethack.org diff --git a/sound/wav/attributions.txt b/sound/wav/attributions.txt new file mode 100644 index 000000000..16b8d0019 --- /dev/null +++ b/sound/wav/attributions.txt @@ -0,0 +1,152 @@ +/* NetHack 3.7 attributions.txt $NHDT-Date: 1652831519 2022/05/17 23:51:59 $ + +Attributions and credits and modifications for sounds used are listed below. + +File: se_squeak_C.wav +Source: https://freesound.org/people/seth-m/sounds/269722/ +Original: download/269722__seth-m__wood-creaks.wav +By: https://freesound.org/people/seth-m/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m02.194s to 00h00m02.765s as selection. +- Saved selection to file named se_squeak_C.wav +- .571 seconds + + +File: se_squeak_D_flat.wav +Source: https://freesound.org/people/AlienXXX/sounds/151346/ +Original: download/151346__alienxxx__creaking-floor-upstairs.wav +By: https://freesound.org/people/AlienXXX/ +License: https://creativecommons.org/licenses/by/4.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m37.641s to 00h00m39.320s as selection. +- Used Audacity, Effect to change selection pitch to C#/Dflat 3. +- Saved selection to file named se_squeak_D_flat.wav +- 1.679 seconds + + +File: se_squeak_D.wav +Source: https://freesound.org/people/Talitha5/sounds/321883/ +Original: download/321883__talitha5__floorboard-creaking.mp3 +By: https://freesound.org/people/Talitha5/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m24.447s to 00h00m225.790s as selection. +- Saved selection to file named se_squeak_D.wav +- 2.067 seconds + + +File:se_squeak_E_flat.wav +Source: https://freesound.org/people/tosha73/sounds/570864/ +Original: download/570864__tosha73__creaking-boards.wav +By: https://freesound.org/people/tosha73/ +License: https://creativecommons.org/licenses/by/4.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m30.192s to 00h00m30.819s as selection. +- Saved selection to file named se_squeak_E_flat.wav +- .627 seconds + + +File: se_squeak_E.wav +Source: https://freesound.org/people/Benboncan/sounds/101381/ +Original: download/101381__benboncan__creaking-floorboard.wav +By: https://freesound.org/people/Benboncan/ +License: https://creativecommons.org/licenses/by/4.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m12.892s to 00h00m14.709s as selection. +- Saved selection to file named se_squeak_E.wav +- 1.817 seconds + + +File: se_squeak_F.wav +Source: https://freesound.org/people/Talitha5/sounds/321883/ +Original: download/321883__talitha5__floorboard-creaking.mp3 +By: https://freesound.org/people/Talitha5/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m56.926s to 00h00m58.402s as selection. +- Saved selection to file named se_squeak_F.wav +- 1.476 seconds. + + +File: se_squeak_F_sharp.wav +Source: https://freesound.org/people/seth-m/sounds/269722/ +Original: download/269722__seth-m__wood-creaks.wav +By: https://freesound.org/people/seth-m/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m04.361s to 00h00m04.795s as selection. +- Saved selection to file named se_squeak_F_sharp.wav +- .434 seconds + + +File: se_squeak_G.wav +Source: https://freesound.org/people/Garuda1982/sounds/420856/ +Original: download/420856__garuda1982__floorboards-squeak-field-recording-with-zoom-h2n.wav +By: https://freesound.org/people/Garuda1982/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m14.369s to 00h00m15.629s as selection. +- Saved selection to file named se_squeak_G.wav +- 1.26 seconds + + +File: se_squeak_G_sharp.wav +Source: https://freesound.org/people/seth-m/sounds/269722/ +Original: download/269722__seth-m__wood-creaks.wav +By: https://freesound.org/people/seth-m/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m03.331s to 00h00m03.966s as selection. +- Used Audacity, Effect to change selection pitch to G#/A flat 7 +- Saved selection to file named se_squeak_G_sharp.wav +- .635 seconds + + +File: se_squeak_A.wav +Source: https://freesound.org/people/Greg_Surr/sounds/590161/ +Original: download/590161__greg-surr__creaking-in-room-11.wav +By: https://freesound.org/people/Greg_Surr/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m00.209s to 00h00m01.385s as selection. +- Saved selection to file named se_squeak_A.wav +- 1.176s + + +File: se_squeak_B_flat.wav +Source: https://freesound.org/people/shelbyshark/sounds/487105/ +Original: download/487105__shelbyshark__floorcreak.wav +By: https://freesound.org/people/shelbyshark/ +License: http://creativecommons.org/publicdomain/zero/1.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m02.350s to 00h00m04.576s as selection. +- Used Audacity, Effect to change selection pitch to A#/Bflat. +- Saved selection to file named se_squeak_B_flat.wav +- 2.226 seconds + + +File:se_squeak_B.wav +Source: https://freesound.org/people/tosha73/sounds/570864/ +Original: download/570864__tosha73__creaking-boards.wav +By: https://freesound.org/people/tosha73/ +License: https://creativecommons.org/licenses/by/4.0/ +Download Date: January 21, 2023 +Description of modifications made to the original: +- 00h00m00.000s to 00h00m00.572s as selection. +- Saved selection to file named se_squeak_B.wav +- .572 seconds + + + diff --git a/sound/wav/se_squeak_A.wav b/sound/wav/se_squeak_A.wav new file mode 100644 index 000000000..2befa5093 Binary files /dev/null and b/sound/wav/se_squeak_A.wav differ diff --git a/sound/wav/se_squeak_B.wav b/sound/wav/se_squeak_B.wav new file mode 100644 index 000000000..986242415 Binary files /dev/null and b/sound/wav/se_squeak_B.wav differ diff --git a/sound/wav/se_squeak_B_flat.wav b/sound/wav/se_squeak_B_flat.wav new file mode 100644 index 000000000..5fd3c875b Binary files /dev/null and b/sound/wav/se_squeak_B_flat.wav differ diff --git a/sound/wav/se_squeak_C.wav b/sound/wav/se_squeak_C.wav new file mode 100644 index 000000000..71a66b236 Binary files /dev/null and b/sound/wav/se_squeak_C.wav differ diff --git a/sound/wav/se_squeak_D.wav b/sound/wav/se_squeak_D.wav new file mode 100644 index 000000000..7f2f090b6 Binary files /dev/null and b/sound/wav/se_squeak_D.wav differ diff --git a/sound/wav/se_squeak_D_flat.wav b/sound/wav/se_squeak_D_flat.wav new file mode 100644 index 000000000..2b58531c9 Binary files /dev/null and b/sound/wav/se_squeak_D_flat.wav differ diff --git a/sound/wav/se_squeak_E.wav b/sound/wav/se_squeak_E.wav new file mode 100644 index 000000000..58898d1f2 Binary files /dev/null and b/sound/wav/se_squeak_E.wav differ diff --git a/sound/wav/se_squeak_E_flat.wav b/sound/wav/se_squeak_E_flat.wav new file mode 100644 index 000000000..449bf6691 Binary files /dev/null and b/sound/wav/se_squeak_E_flat.wav differ diff --git a/sound/wav/se_squeak_F.wav b/sound/wav/se_squeak_F.wav new file mode 100644 index 000000000..2ff92fe7e Binary files /dev/null and b/sound/wav/se_squeak_F.wav differ diff --git a/sound/wav/se_squeak_F_sharp.wav b/sound/wav/se_squeak_F_sharp.wav new file mode 100644 index 000000000..50dcf7f17 Binary files /dev/null and b/sound/wav/se_squeak_F_sharp.wav differ diff --git a/sound/wav/se_squeak_G.wav b/sound/wav/se_squeak_G.wav new file mode 100644 index 000000000..cd822873c Binary files /dev/null and b/sound/wav/se_squeak_G.wav differ diff --git a/sound/wav/se_squeak_G_sharp.wav b/sound/wav/se_squeak_G_sharp.wav new file mode 100644 index 000000000..18c9fc27b Binary files /dev/null and b/sound/wav/se_squeak_G_sharp.wav differ diff --git a/sound/wav/sound_Bell.wav b/sound/wav/sound_Bell.wav new file mode 100644 index 000000000..2a499c5c9 Binary files /dev/null and b/sound/wav/sound_Bell.wav differ diff --git a/sound/wav/sound_Bugle_A.wav b/sound/wav/sound_Bugle_A.wav new file mode 100644 index 000000000..bf8467fcd Binary files /dev/null and b/sound/wav/sound_Bugle_A.wav differ diff --git a/sound/wav/sound_Bugle_B.wav b/sound/wav/sound_Bugle_B.wav new file mode 100644 index 000000000..dc483f12e Binary files /dev/null and b/sound/wav/sound_Bugle_B.wav differ diff --git a/sound/wav/sound_Bugle_C.wav b/sound/wav/sound_Bugle_C.wav new file mode 100644 index 000000000..9dfecdf50 Binary files /dev/null and b/sound/wav/sound_Bugle_C.wav differ diff --git a/sound/wav/sound_Bugle_D.wav b/sound/wav/sound_Bugle_D.wav new file mode 100644 index 000000000..128000b65 Binary files /dev/null and b/sound/wav/sound_Bugle_D.wav differ diff --git a/sound/wav/sound_Bugle_E.wav b/sound/wav/sound_Bugle_E.wav new file mode 100644 index 000000000..cd207816b Binary files /dev/null and b/sound/wav/sound_Bugle_E.wav differ diff --git a/sound/wav/sound_Bugle_F.wav b/sound/wav/sound_Bugle_F.wav new file mode 100644 index 000000000..e39a1369b Binary files /dev/null and b/sound/wav/sound_Bugle_F.wav differ diff --git a/sound/wav/sound_Bugle_G.wav b/sound/wav/sound_Bugle_G.wav new file mode 100644 index 000000000..e5044ebf2 Binary files /dev/null and b/sound/wav/sound_Bugle_G.wav differ diff --git a/sound/wav/sound_Drum_Of_Earthquake.wav b/sound/wav/sound_Drum_Of_Earthquake.wav new file mode 100644 index 000000000..12e0fac38 Binary files /dev/null and b/sound/wav/sound_Drum_Of_Earthquake.wav differ diff --git a/sound/wav/sound_Fire_Horn.wav b/sound/wav/sound_Fire_Horn.wav new file mode 100644 index 000000000..758550659 Binary files /dev/null and b/sound/wav/sound_Fire_Horn.wav differ diff --git a/sound/wav/sound_Frost_Horn.wav b/sound/wav/sound_Frost_Horn.wav new file mode 100644 index 000000000..fc3bdbf12 Binary files /dev/null and b/sound/wav/sound_Frost_Horn.wav differ diff --git a/sound/wav/sound_Leather_Drum.wav b/sound/wav/sound_Leather_Drum.wav new file mode 100644 index 000000000..2b11f4a9c Binary files /dev/null and b/sound/wav/sound_Leather_Drum.wav differ diff --git a/sound/wav/sound_Magic_Harp_A.wav b/sound/wav/sound_Magic_Harp_A.wav new file mode 100644 index 000000000..2246e818e Binary files /dev/null and b/sound/wav/sound_Magic_Harp_A.wav differ diff --git a/sound/wav/sound_Magic_Harp_B.wav b/sound/wav/sound_Magic_Harp_B.wav new file mode 100644 index 000000000..a96799229 Binary files /dev/null and b/sound/wav/sound_Magic_Harp_B.wav differ diff --git a/sound/wav/sound_Magic_Harp_C.wav b/sound/wav/sound_Magic_Harp_C.wav new file mode 100644 index 000000000..d2d1798f8 Binary files /dev/null and b/sound/wav/sound_Magic_Harp_C.wav differ diff --git a/sound/wav/sound_Magic_Harp_D.wav b/sound/wav/sound_Magic_Harp_D.wav new file mode 100644 index 000000000..38981a4bd Binary files /dev/null and b/sound/wav/sound_Magic_Harp_D.wav differ diff --git a/sound/wav/sound_Magic_Harp_E.wav b/sound/wav/sound_Magic_Harp_E.wav new file mode 100644 index 000000000..77902db52 Binary files /dev/null and b/sound/wav/sound_Magic_Harp_E.wav differ diff --git a/sound/wav/sound_Magic_Harp_F.wav b/sound/wav/sound_Magic_Harp_F.wav new file mode 100644 index 000000000..98b4c4790 Binary files /dev/null and b/sound/wav/sound_Magic_Harp_F.wav differ diff --git a/sound/wav/sound_Magic_Harp_G.wav b/sound/wav/sound_Magic_Harp_G.wav new file mode 100644 index 000000000..6e3f5c650 Binary files /dev/null and b/sound/wav/sound_Magic_Harp_G.wav differ diff --git a/sound/wav/sound_Tooled_Horn_A.wav b/sound/wav/sound_Tooled_Horn_A.wav new file mode 100644 index 000000000..da38e8e00 Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_A.wav differ diff --git a/sound/wav/sound_Tooled_Horn_B.wav b/sound/wav/sound_Tooled_Horn_B.wav new file mode 100644 index 000000000..4e7c9e199 Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_B.wav differ diff --git a/sound/wav/sound_Tooled_Horn_C.wav b/sound/wav/sound_Tooled_Horn_C.wav new file mode 100644 index 000000000..e3f59e24c Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_C.wav differ diff --git a/sound/wav/sound_Tooled_Horn_D.wav b/sound/wav/sound_Tooled_Horn_D.wav new file mode 100644 index 000000000..b6776c737 Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_D.wav differ diff --git a/sound/wav/sound_Tooled_Horn_E.wav b/sound/wav/sound_Tooled_Horn_E.wav new file mode 100644 index 000000000..f2571d45e Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_E.wav differ diff --git a/sound/wav/sound_Tooled_Horn_F.wav b/sound/wav/sound_Tooled_Horn_F.wav new file mode 100644 index 000000000..b59b5012a Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_F.wav differ diff --git a/sound/wav/sound_Tooled_Horn_G.wav b/sound/wav/sound_Tooled_Horn_G.wav new file mode 100644 index 000000000..847d27fd2 Binary files /dev/null and b/sound/wav/sound_Tooled_Horn_G.wav differ diff --git a/sound/wav/sound_Wooden_Flute_A.wav b/sound/wav/sound_Wooden_Flute_A.wav new file mode 100644 index 000000000..95e671cc7 Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_A.wav differ diff --git a/sound/wav/sound_Wooden_Flute_B.wav b/sound/wav/sound_Wooden_Flute_B.wav new file mode 100644 index 000000000..4a692a939 Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_B.wav differ diff --git a/sound/wav/sound_Wooden_Flute_C.wav b/sound/wav/sound_Wooden_Flute_C.wav new file mode 100644 index 000000000..fec7c54c1 Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_C.wav differ diff --git a/sound/wav/sound_Wooden_Flute_D.wav b/sound/wav/sound_Wooden_Flute_D.wav new file mode 100644 index 000000000..c00d34000 Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_D.wav differ diff --git a/sound/wav/sound_Wooden_Flute_E.wav b/sound/wav/sound_Wooden_Flute_E.wav new file mode 100644 index 000000000..53173b8e3 Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_E.wav differ diff --git a/sound/wav/sound_Wooden_Flute_F.wav b/sound/wav/sound_Wooden_Flute_F.wav new file mode 100644 index 000000000..8768cbaab Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_F.wav differ diff --git a/sound/wav/sound_Wooden_Flute_G.wav b/sound/wav/sound_Wooden_Flute_G.wav new file mode 100644 index 000000000..e96ef6db3 Binary files /dev/null and b/sound/wav/sound_Wooden_Flute_G.wav differ diff --git a/sound/wav/sound_Wooden_Harp_A.wav b/sound/wav/sound_Wooden_Harp_A.wav new file mode 100644 index 000000000..c167d63a3 Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_A.wav differ diff --git a/sound/wav/sound_Wooden_Harp_B.wav b/sound/wav/sound_Wooden_Harp_B.wav new file mode 100644 index 000000000..2f2a511fa Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_B.wav differ diff --git a/sound/wav/sound_Wooden_Harp_C.wav b/sound/wav/sound_Wooden_Harp_C.wav new file mode 100644 index 000000000..939ab9e4b Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_C.wav differ diff --git a/sound/wav/sound_Wooden_Harp_D.wav b/sound/wav/sound_Wooden_Harp_D.wav new file mode 100644 index 000000000..a98c0b89a Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_D.wav differ diff --git a/sound/wav/sound_Wooden_Harp_E.wav b/sound/wav/sound_Wooden_Harp_E.wav new file mode 100644 index 000000000..4be28b40e Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_E.wav differ diff --git a/sound/wav/sound_Wooden_Harp_F.wav b/sound/wav/sound_Wooden_Harp_F.wav new file mode 100644 index 000000000..ee668aa9d Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_F.wav differ diff --git a/sound/wav/sound_Wooden_Harp_G.wav b/sound/wav/sound_Wooden_Harp_G.wav new file mode 100644 index 000000000..ed2e47d37 Binary files /dev/null and b/sound/wav/sound_Wooden_Harp_G.wav differ diff --git a/sound/windsound/windsound.c b/sound/windsound/windsound.c index f91508877..9771b0a83 100644 --- a/sound/windsound/windsound.c +++ b/sound/windsound/windsound.c @@ -25,7 +25,7 @@ static void windsound_play_usersound(char *, int32_t, int32_t); struct sound_procs windsound_procs = { SOUNDID(windsound), - SNDCAP_USERSOUNDS, + SNDCAP_USERSOUNDS | SNDCAP_SOUNDEFFECTS | SNDCAP_HEROMUSIC, windsound_init_nhsound, windsound_exit_nhsound, windsound_achievement, @@ -53,11 +53,103 @@ windsound_achievement(schar ach1, schar ach2, int32_t repeat) void windsound_soundeffect(char *desc, int32_t seid, int32_t volume) { +#ifdef SND_SOUNDEFFECTS_AUTOMAP + int reslt = 0; + char buf[PATHLEN]; + const char *filename; + DWORD fdwsound; + + if (seid >= se_squeak_C || seid <= se_squeak_B) { + filename = get_sound_effect_filename(seid, buf, sizeof buf, 1); + fdwsound = SND_ASYNC | SND_RESOURCE; + } else { + filename = get_sound_effect_filename(seid, buf, sizeof buf, 0); + fdwsound = SND_ASYNC | SND_NODEFAULT; + } + + if (filename) { + reslt = PlaySound(filename, NULL, fdwsound); +// (void) sndPlaySound(filename, fdwsound); + } +#endif } +#define WAVEMUSIC_SOUNDS + void windsound_hero_playnotes(int32_t instrument, char *str, int32_t volume) { +#ifdef WAVEMUSIC_SOUNDS + int reslt = 0; + boolean has_note_variations = FALSE; + char resourcename[120], *end_of_res = 0, *c = 0; + + if (!str) + return; + resourcename[0] = '\0'; + switch(instrument) { + case ins_flute: /* WOODEN_FLUTE */ + Strcpy(resourcename, "sound_Wooden_Flute"); + has_note_variations = TRUE; + break; + case ins_pan_flute: /* MAGIC_FLUTE */ + /* wav files for sound_Magic_Flute not added yet */ + Strcpy(resourcename, "sound_Wooden_Flute"); + has_note_variations = TRUE; + break; + case ins_english_horn: /* TOOLED_HORN */ + Strcpy(resourcename, "sound_Tooled_Horn"); + has_note_variations = TRUE; + break; + case ins_french_horn: /* FROST_HORN */ + Strcpy(resourcename, "sound_Frost_Horn"); + break; + case ins_baritone_sax: /* FIRE_HORN */ + Strcpy(resourcename, "sound_Fire_Horn"); + break; + case ins_trumpet: /* BUGLE */ + Strcpy(resourcename, "sound_Bugle"); + has_note_variations = TRUE; + break; + case ins_orchestral_harp: /* WOODEN_HARP */ + Strcpy(resourcename, "sound_Wooden_Harp"); + has_note_variations = TRUE; + break; + case ins_cello: /* MAGIC_HARP */ + Strcpy(resourcename, "sound_Magic_Harp"); + has_note_variations = TRUE; + case ins_tinkle_bell: + Strcpy(resourcename, "sound_Bell"); + break; + case ins_taiko_drum: /* DRUM_OF_EARTHQUAKE */ + Strcpy(resourcename, "sound_Drum_Of_Earthquake"); + break; + case ins_melodic_tom: /* LEATHER_DRUM */ + Strcpy(resourcename, "sound_Leather_Drum"); + break; + } + if (has_note_variations) { + int i, idx = 0, notecount = strlen(str); + static const char *const note_suffixes[] + = { "_A", "_B", "_C", "_D", "_E", "_F", "_G" }; + + end_of_res = eos(resourcename); + c = str; + for (i = 0; i < notecount; ++i) { + if (*c >= 'A' && *c <= 'G') { + idx = (*c) - 'A'; + Strcpy(end_of_res, note_suffixes[idx]); + if (i == (notecount - 1)) + break; /* drop out of for-loop and play it async below */ + reslt = PlaySound(resourcename, NULL, + SND_SYNC | SND_RESOURCE); + } + c++; + } + } + /* the final, or only, one is played ASYNC */ + reslt = PlaySound(resourcename, NULL, SND_ASYNC | SND_RESOURCE); +#endif } void @@ -68,4 +160,3 @@ windsound_play_usersound(char *filename, int32_t volume UNUSED, int32_t idx UNUS } #endif /* SND_LIB_WINDSOUND */ - diff --git a/src/music.c b/src/music.c index dad4d96fd..d8a48549c 100644 --- a/src/music.c +++ b/src/music.c @@ -506,7 +506,7 @@ do_improvisation(struct obj* instr) itmp.otyp -= 1; mundane = TRUE; } - + Hero_playnotes(obj_to_instr(&itmp), "C", 50); #define PLAY_NORMAL 0x00 #define PLAY_STUNNED 0x01 @@ -738,6 +738,7 @@ do_play_instrument(struct obj* instr) You(!Deaf ? "extract a strange sound from %s!" : "can feel %s emitting vibrations.", the(xname(instr))); + Hero_playnotes(obj_to_instr(instr), buf, 50); /* Check if there was the Stronghold drawbridge near @@ -832,4 +833,47 @@ do_play_instrument(struct obj* instr) return ECMD_OK; } +enum instruments +obj_to_instr(struct obj *obj) { + enum instruments ret_instr = ins_no_instrument; + +#if defined(SND_LIB_INTEGRATED) + switch(obj->otyp) { + case WOODEN_FLUTE: + ret_instr = ins_flute; + break; + case MAGIC_FLUTE: + ret_instr = ins_pan_flute; + break; + case TOOLED_HORN: + ret_instr = ins_english_horn; + break; + case FROST_HORN: + ret_instr = ins_french_horn; + break; + case FIRE_HORN: + ret_instr = ins_baritone_sax; + break; + case BUGLE: + ret_instr = ins_trumpet; + break; + case WOODEN_HARP: + ret_instr = ins_orchestral_harp; + break; + case MAGIC_HARP: + ret_instr = ins_cello; + case BELL: + case BELL_OF_OPENING: + ret_instr = ins_tinkle_bell; + break; + case DRUM_OF_EARTHQUAKE: + ret_instr = ins_taiko_drum; + break; + case LEATHER_DRUM: + ret_instr = ins_melodic_tom; + break; + } +#endif + return ret_instr; +} /*music.c*/ diff --git a/src/sounds.c b/src/sounds.c index b302db2e1..6d06063d2 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1517,9 +1517,9 @@ play_sound_for_message(const char* msg) if (soundprocs.sound_play_usersound) { snd = sound_matches_message(msg); - if (snd) - (*soundprocs.sound_play_usersound)( - snd->filename, snd->volume, snd->idx); + if (snd) { + Play_usersound(snd->filename, snd->volume, snd->idx); + } } } @@ -1530,9 +1530,9 @@ maybe_play_sound(const char* msg) if (soundprocs.sound_play_usersound) { snd = sound_matches_message(msg); - if (snd) - (*soundprocs.sound_play_usersound)( - snd->filename, snd->volume, snd->idx); + if (snd) { + Play_usersound(snd->filename, snd->volume, snd->idx); + } } } @@ -1784,4 +1784,260 @@ nosound_play_usersound(char *filename, int volume, int idx) } #endif +#ifdef SND_SOUNDEFFECTS_AUTOMAP +struct soundeffect_automapping { + enum sound_effect_entries seid; + const char *base_filename; +}; + +static const struct soundeffect_automapping se_mappings_init[number_of_se_entries] = { + { se_zero_invalid, "" }, + { se_faint_splashing, "faint_splashing" }, + { se_crackling_of_hellfire, "crackling_of_hellfire" }, + { se_heart_beat, "heart_beat" }, + { se_typing_noise, "typing_noise" }, + { se_hollow_sound, "hollow_sound" }, + { se_rustling_paper, "rustling_paper" }, + { se_crushing_sound, "crushing_sound" }, + { se_splash, "splash" }, + { se_chains_rattling_gears_turning, "chains_rattling_gears_turning" }, + { se_smashing_and_crushing, "smashing_and_crushing" }, + { se_gears_turning_chains_rattling, "gears_turning_chains_rattling" }, + { se_loud_splash, "loud_splash" }, + { se_lound_crash, "lound_crash" }, + { se_crashing_rock, "crashing_rock" }, + { se_sizzling, "sizzling" }, + { se_crashing_boulder, "crashing_boulder" }, + { se_boulder_drop, "boulder_drop" }, + { se_item_tumble_downwards, "item_tumble_downwards" }, + { se_drain_noises, "drain_noises" }, + { se_ring_in_drain, "ring_in_drain" }, + { se_groans_and_moans, "groans_and_moans" }, + { se_scratching, "scratching" }, + { se_glass_shattering, "glass_shattering" }, + { se_egg_cracking, "egg_cracking" }, + { se_gushing_sound, "gushing_sound" }, + { se_glass_crashing, "glass_crashing" }, + { se_egg_splatting, "egg_splatting" }, + { se_sinister_laughter, "sinister_laughter" }, + { se_blast, "blast" }, + { se_stone_breaking, "stone_breaking" }, + { se_stone_crumbling, "stone_crumbling" }, + { se_snakes_hissing, "snakes_hissing" }, + { se_loud_pop, "loud_pop" }, + { se_clanking_pipe, "clanking_pipe" }, + { se_sewer_song, "sewer_song" }, + { se_monster_behind_boulder, "monster_behind_boulder" }, + { se_wailing_of_the_banshee, "wailing_of_the_banshee" }, + { se_swoosh, "swoosh" }, + { se_explosion, "explosion" }, + { se_crashing_sound, "crashing_sound" }, + { se_someone_summoning, "someone_summoning" }, + { se_rushing_wind_noise, "rushing_wind_noise" }, + { se_splat_from_engulf, "splat_from_engulf" }, + { se_faint_sloshing, "faint_sloshing" }, + { se_crunching_sound, "crunching_sound" }, + { se_slurping_sound, "slurping_sound" }, + { se_masticating_sound, "masticating_sound" }, + { se_distant_thunder, "distant_thunder" }, + { se_applause, "applause" }, + { se_shrill_whistle, "shrill_whistle" }, + { se_someone_yells, "someone_yells" }, + { se_door_unlock_and_open, "door_unlock_and_open" }, + { se_door_open, "door_open" }, + { se_door_crash_open, "door_crash_open" }, + { se_dry_throat_rattle, "dry_throat_rattle" }, + { se_cough, "cough" }, + { se_angry_snakes, "angry_snakes" }, + { se_zap_then_explosion, "zap_then_explosion" }, + { se_zap, "zap" }, + { se_horn_being_played, "horn_being_played" }, + { se_mon_chugging_potion, "mon_chugging_potion" }, + { se_bugle_playing_reveille, "bugle_playing_reveille" }, + { se_crash_through_floor, "crash_through_floor" }, + { se_thump, "thump" }, + { se_scream, "scream" }, + { se_tumbler_click, "tumbler_click" }, + { se_gear_turn, "gear_turn" }, + { se_divine_music, "divine_music" }, + { se_thunderclap, "thunderclap" }, + { se_sad_wailing, "sad_wailing" }, + { se_maniacal_laughter, "maniacal_laughter" }, + { se_rumbling_of_earth, "rumbling_of_earth" }, + { se_clanging_sound, "clanging_sound" }, + { se_mutter_imprecations, "mutter_imprecations" }, + { se_mutter_incantation, "mutter_incantation" }, + { se_angry_voice, "angry_voice" }, + { se_sceptor_pounding, "sceptor_pounding" }, + { se_courtly_conversation, "courtly_conversation" }, + { se_low_buzzing, "low_buzzing" }, + { se_angry_drone, "angry_drone" }, + { se_bees, "bees" }, + { se_someone_searching, "someone_searching" }, + { se_guards_footsteps, "guards_footsteps" }, + { se_faint_chime, "faint_chime" }, + { se_loud_click, "loud_click" }, + { se_soft_click, "soft_click" }, + { se_squeak, "squeak" }, + { se_squeak_C, "squeak_C" }, + { se_squeak_D_flat, "squeak_D_flat" }, + { se_squeak_D, "squeak_D" }, + { se_squeak_E_flat, "squeak_E_flat" }, + { se_squeak_E, "squeak_E" }, + { se_squeak_F, "squeak_F" }, + { se_squeak_F_sharp, "squeak_F_sharp" }, + { se_squeak_G, "squeak_G" }, + { se_squeak_G_sharp, "squeak_G_sharp" }, + { se_squeak_A, "squeak_A" }, + { se_squeak_B_flat, "squeak_B_flat" }, + { se_squeak_B, "squeak_B" }, + { se_someone_bowling, "someone_bowling" }, + { se_rumbling, "rumbling" }, + { se_loud_crash, "loud_crash" }, + { se_deafening_roar_atmospheric, "deafening_roar_atmospheric" }, + { se_low_hum, "low_hum" }, + { se_laughter, "laughter" }, + { se_cockatrice_hiss, "cockatrice_hiss" }, + { se_chant, "chant" }, + { se_cracking_sound, "cracking_sound" }, + { se_ripping_sound, "ripping_sound" }, + { se_thud, "thud" }, + { se_clank, "clank" }, + { se_crumbling_sound, "crumbling_sound" }, + { se_soft_crackling, "soft_crackling" }, + { se_crackling, "crackling" }, + { se_sharp_crack, "sharp_crack" }, + { se_wall_of_force, "wall_of_force" }, + { se_alarm, "alarm" }, + { se_kick_door_it_shatters, "kick_door_it_shatters" }, + { se_kick_door_it_crashes_open, "kick_door_it_crashes_open" }, + { se_bubble_rising, "bubble_rising" }, + { se_bolt_of_lightning, "bolt_of_lightning" }, + { se_board_squeak, "board_squeak" }, + { se_board_squeaks_loudly, "board_squeaks_loudly" }, + { se_boing, "boing" }, + { se_crashed_ceiling, "crashed_ceiling" }, + { se_clash, "clash" }, + { se_crash_door, "crash_door" }, + { se_crash, "crash" }, + { se_crash_throne_destroyed, "crash_throne_destroyed" }, + { se_crash_something_broke, "crash_something_broke" }, + { se_kadoom_boulder_falls_in, "kadoom_boulder_falls_in" }, + { se_klunk_pipe, "klunk_pipe" }, + { se_kerplunk_boulder_gone, "kerplunk_boulder_gone" }, + { se_klunk, "klunk" }, + { se_klick, "klick" }, + { se_kaboom_door_explodes, "kaboom_door_explodes" }, + { se_kaboom_boom_boom, "kaboom_boom_boom" }, + { se_kaablamm_of_mine, "kaablamm_of_mine" }, + { se_kaboom, "kaboom" }, + { se_splat_egg, "splat_egg" }, + { se_destroy_web, "destroy_web" }, + { se_iron_ball_dragging_you, "iron_ball_dragging_you" }, + { se_iron_ball_hits_you, "iron_ball_hits_you" }, + { se_lid_slams_open_falls_shut, "lid_slams_open_falls_shut" }, + { se_chain_shatters, "chain_shatters" }, + { se_furious_bubbling, "furious_bubbling" }, + { se_air_crackles, "air_crackles" }, + { se_potion_crash_and_break, "potion_crash_and_break" }, + { se_hiss, "hiss" }, + { se_growl, "growl" }, + { se_canine_bark, "canine_bark" }, + { se_canine_growl, "canine_growl" }, + { se_canine_whine, "canine_whine" }, + { se_canine_yip, "canine_yip" }, + { se_canine_howl, "canine_howl" }, + { se_feline_yowl, "feline_yowl" }, + { se_feline_meow, "feline_meow" }, + { se_feline_purr, "feline_purr" }, + { se_feline_yip, "feline_yip" }, + { se_feline_mew, "feline_mew" }, + { se_roar, "roar" }, + { se_snarl, "snarl" }, + { se_buzz, "buzz" }, + { se_squeek, "squeek" }, + { se_squawk, "squawk" }, + { se_squeal, "squeal" }, + { se_screech, "screech" }, + { se_equine_neigh, "equine_neigh" }, + { se_equine_whinny, "equine_whinny" }, + { se_equine_whicker, "equine_whicker" }, + { se_bovine_moo, "bovine_moo" }, + { se_bovine_bellow, "bovine_bellow" }, + { se_wail, "wail" }, + { se_groan, "groan" }, + { se_grunt, "grunt" }, + { se_gurgle, "gurgle" }, + { se_elephant_trumpet, "elephant_trumpet" }, + { se_snake_rattle, "snake_rattle" }, + { se_hallu_growl, "hallu_growl" }, +}; + +static const char *semap_basenames[SIZE(se_mappings_init)]; +static boolean basenames_initialized = FALSE; + +static void +initialize_semap_basenames(void) +{ + int i; + + /* to avoid things getting out of sequence; seid an index to the name */ + for (i = 1; i < SIZE(se_mappings_init); ++i) { + if (se_mappings_init[i].seid > 0 + && se_mappings_init[i].seid < SIZE(semap_basenames)) + semap_basenames[se_mappings_init[i].seid] + = se_mappings_init[i].base_filename; + } +} + +char * +get_sound_effect_filename(int32_t seidint, char *buf, + size_t bufsz, + int32_t baseflag) /* non-zero means return without + directory or extension suffix */ +{ + static const char prefix[] = "se_", suffix[] = ".wav"; + size_t consumes = 0, baselen = 0; +/* enum sound_effect_entries seid = (enum sound_effect_entries) seidint; */ + char *ourdir = sounddir; /* sounddir would get set in files.c */ + + if (!buf || (!ourdir && baseflag == 0)) + return (char *) 0; + + if (!basenames_initialized) { + initialize_semap_basenames(); + basenames_initialized = TRUE; + } + + if (semap_basenames[seidint]) + baselen = strlen(semap_basenames[seidint]); + + consumes = (sizeof prefix - 1) + baselen; + if (baseflag == 0) + consumes += (sizeof suffix - 1) + strlen(ourdir); + consumes += 1 + 1; /* '\0' and '/' */ + if (baselen <= 0 || consumes > bufsz) + return (char *) 0; + +#if 0 + if (!baseflag) { + Strcpy(buf, ourdir); + Strcat(buf, "/"); + } + Strcat(buf, prefix); + Strcat(buf, semap_basenames[seidint]); + if (!baseflag) { + Strcat(buf, suffix); + } +#else + if (!baseflag) + Snprintf(buf, bufsz , "%s/%s%s%s", ourdir, prefix, + semap_basenames[seidint], suffix); + else + Snprintf(buf, bufsz , "%s%s", prefix, semap_basenames[seidint]); +#endif + return buf; +} +#endif /* SND_SOUNDEFFECTS_AUTOMAP */ + /*sounds.c*/ diff --git a/sys/windows/console.rc b/sys/windows/console.rc index 110e94553..2b56e3b50 100644 --- a/sys/windows/console.rc +++ b/sys/windows/console.rc @@ -31,9 +31,9 @@ BEGIN VALUE "FileDescription", "NetHack for Windows - TTY Interface\0" VALUE "FileVersion", "3.7.0\0" VALUE "InternalName", "NetHack\0" - VALUE "LegalCopyright", "Copyright (C) 1985 - 2020. By Stichting Mathematisch Centrum and M. Stephenson. See license for details.\0" + VALUE "LegalCopyright", "Copyright (C) 1985 - 2023. By Stichting Mathematisch Centrum and M. Stephenson. See license for details.\0" VALUE "OriginalFilename", "NetHack.exe\0" - VALUE "PrivateBuild", "050102\0" + VALUE "PrivateBuild", "050107\0" VALUE "ProductName", "NetHack\0" VALUE "ProductVersion", "3.7.0\0" END @@ -43,7 +43,58 @@ BEGIN VALUE "Translation", 0x409, 1200 END END +se_squeak_A WAVE "..\sound\wav\se_squeak_A.wav" +se_squeak_B WAVE "..\sound\wav\se_squeak_B.wav" +se_squeak_B_flat WAVE "..\sound\wav\se_squeak_B_flat.wav" +se_squeak_C WAVE "..\sound\wav\se_squeak_C.wav" +se_squeak_D WAVE "..\sound\wav\se_squeak_D.wav" +se_squeak_D_flat WAVE "..\sound\wav\se_squeak_D_flat.wav" +se_squeak_E WAVE "..\sound\wav\se_squeak_E.wav" +se_squeak_E_flat WAVE "..\sound\wav\se_squeak_E_flat.wav" +se_squeak_F WAVE "..\sound\wav\se_squeak_F.wav" +se_squeak_F_sharp WAVE "..\sound\wav\se_squeak_F_sharp.wav" +se_squeak_G WAVE "..\sound\wav\se_squeak_G.wav" +se_squeak_G_share WAVE "..\sound\wav\se_squeak_G_sharp.wav" +sound_Bell WAVE "..\sound\wav\sound_Bell.wav" +sound_Bugle_A WAVE "..\sound\wav\sound_Bugle_A.wav" +sound_Bugle_B WAVE "..\sound\wav\sound_Bugle_B.wav" +sound_Bugle_C WAVE "..\sound\wav\sound_Bugle_C.wav" +sound_Bugle_D WAVE "..\sound\wav\sound_Bugle_D.wav" +sound_Bugle_E WAVE "..\sound\wav\sound_Bugle_E.wav" +sound_Bugle_F WAVE "..\sound\wav\sound_Bugle_F.wav" +sound_Bugle_G WAVE "..\sound\wav\sound_Bugle_G.wav" +sound_Drum_Of_Earthquake WAVE "..\sound\wav\sound_Drum_Of_Earthquake.wav" +sound_Fire_Horn WAVE "..\sound\wav\sound_Fire_Horn.wav" +sound_Frost_Horn WAVE "..\sound\wav\sound_Frost_Horn.wav" +sound_Leather_Drum WAVE "..\sound\wav\sound_Leather_Drum.wav" +sound_Magic_Harp_A WAVE "..\sound\wav\sound_Magic_Harp_A.wav" +sound_Magic_Harp_B WAVE "..\sound\wav\sound_Magic_Harp_B.wav" +sound_Magic_Harp_C WAVE "..\sound\wav\sound_Magic_Harp_C.wav" +sound_Magic_Harp_D WAVE "..\sound\wav\sound_Magic_Harp_D.wav" +sound_Magic_Harp_E WAVE "..\sound\wav\sound_Magic_Harp_E.wav" +sound_Magic_Harp_F WAVE "..\sound\wav\sound_Magic_Harp_F.wav" +sound_Magic_Harp_G WAVE "..\sound\wav\sound_Magic_Harp_G.wav" +sound_Tooled_Horn_A WAVE "..\sound\wav\sound_Tooled_Horn_A.wav" +sound_Tooled_Horn_B WAVE "..\sound\wav\sound_Tooled_Horn_B.wav" +sound_Tooled_Horn_C WAVE "..\sound\wav\sound_Tooled_Horn_C.wav" +sound_Tooled_Horn_D WAVE "..\sound\wav\sound_Tooled_Horn_D.wav" +sound_Tooled_Horn_E WAVE "..\sound\wav\sound_Tooled_Horn_E.wav" +sound_Tooled_Horn_F WAVE "..\sound\wav\sound_Tooled_Horn_F.wav" +sound_Tooled_Horn_G WAVE "..\sound\wav\sound_Tooled_Horn_G.wav" +sound_Wooden_Flute_A WAVE "..\sound\wav\sound_Wooden_Flute_A.wav" +sound_Wooden_Flute_B WAVE "..\sound\wav\sound_Wooden_Flute_B.wav" +sound_Wooden_Flute_C WAVE "..\sound\wav\sound_Wooden_Flute_C.wav" +sound_Wooden_Flute_D WAVE "..\sound\wav\sound_Wooden_Flute_D.wav" +sound_Wooden_Flute_E WAVE "..\sound\wav\sound_Wooden_Flute_E.wav" +sound_Wooden_Flute_F WAVE "..\sound\wav\sound_Wooden_Flute_F.wav" +sound_Wooden_Flute_G WAVE "..\sound\wav\sound_Wooden_Flute_G.wav" +sound_Wooden_Harp_A WAVE "..\sound\wav\sound_Wooden_Harp_A.wav" +sound_Wooden_Harp_B WAVE "..\sound\wav\sound_Wooden_Harp_B.wav" +sound_Wooden_Harp_C WAVE "..\sound\wav\sound_Wooden_Harp_C.wav" +sound_Wooden_Harp_D WAVE "..\sound\wav\sound_Wooden_Harp_D.wav" +sound_Wooden_Harp_E WAVE "..\sound\wav\sound_Wooden_Harp_E.wav" +sound_Wooden_Harp_F WAVE "..\sound\wav\sound_Wooden_Harp_F.wav" +sound_Wooden_Harp_G WAVE "..\sound\wav\sound_Wooden_Harp_G.wav" -/*console.rc*/ - +/*console.rc*/" diff --git a/win/win32/NetHackW.rc b/win/win32/NetHackW.rc index 740400608..eb293d561 100644 --- a/win/win32/NetHackW.rc +++ b/win/win32/NetHackW.rc @@ -391,6 +391,60 @@ BEGIN IDS_APP_TITLE_SHORT "NetHack for Windows" END +se_squeak_A WAVE "..\sound\wav\se_squeak_A.wav" +se_squeak_B WAVE "..\sound\wav\se_squeak_B.wav" +se_squeak_B_flat WAVE "..\sound\wav\se_squeak_B_flat.wav" +se_squeak_C WAVE "..\sound\wav\se_squeak_C.wav" +se_squeak_D WAVE "..\sound\wav\se_squeak_D.wav" +se_squeak_D_flat WAVE "..\sound\wav\se_squeak_D_flat.wav" +se_squeak_E WAVE "..\sound\wav\se_squeak_E.wav" +se_squeak_E_flat WAVE "..\sound\wav\se_squeak_E_flat.wav" +se_squeak_F WAVE "..\sound\wav\se_squeak_F.wav" +se_squeak_F_sharp WAVE "..\sound\wav\se_squeak_F_sharp.wav" +se_squeak_G WAVE "..\sound\wav\se_squeak_G.wav" +se_squeak_G_share WAVE "..\sound\wav\se_squeak_G_sharp.wav" + +sound_Bell WAVE "..\sound\wav\sound_Bell.wav" +sound_Bugle_A WAVE "..\sound\wav\sound_Bugle_A.wav" +sound_Bugle_B WAVE "..\sound\wav\sound_Bugle_B.wav" +sound_Bugle_C WAVE "..\sound\wav\sound_Bugle_C.wav" +sound_Bugle_D WAVE "..\sound\wav\sound_Bugle_D.wav" +sound_Bugle_E WAVE "..\sound\wav\sound_Bugle_E.wav" +sound_Bugle_F WAVE "..\sound\wav\sound_Bugle_F.wav" +sound_Bugle_G WAVE "..\sound\wav\sound_Bugle_G.wav" +sound_Drum_Of_Earthquake WAVE "..\sound\wav\sound_Drum_Of_Earthquake.wav" +sound_Fire_Horn WAVE "..\sound\wav\sound_Fire_Horn.wav" +sound_Frost_Horn WAVE "..\sound\wav\sound_Frost_Horn.wav" +sound_Leather_Drum WAVE "..\sound\wav\sound_Leather_Drum.wav" +sound_Magic_Harp_A WAVE "..\sound\wav\sound_Magic_Harp_A.wav" +sound_Magic_Harp_B WAVE "..\sound\wav\sound_Magic_Harp_B.wav" +sound_Magic_Harp_C WAVE "..\sound\wav\sound_Magic_Harp_C.wav" +sound_Magic_Harp_D WAVE "..\sound\wav\sound_Magic_Harp_D.wav" +sound_Magic_Harp_E WAVE "..\sound\wav\sound_Magic_Harp_E.wav" +sound_Magic_Harp_F WAVE "..\sound\wav\sound_Magic_Harp_F.wav" +sound_Magic_Harp_G WAVE "..\sound\wav\sound_Magic_Harp_G.wav" +sound_Tooled_Horn_A WAVE "..\sound\wav\sound_Tooled_Horn_A.wav" +sound_Tooled_Horn_B WAVE "..\sound\wav\sound_Tooled_Horn_B.wav" +sound_Tooled_Horn_C WAVE "..\sound\wav\sound_Tooled_Horn_C.wav" +sound_Tooled_Horn_D WAVE "..\sound\wav\sound_Tooled_Horn_D.wav" +sound_Tooled_Horn_E WAVE "..\sound\wav\sound_Tooled_Horn_E.wav" +sound_Tooled_Horn_F WAVE "..\sound\wav\sound_Tooled_Horn_F.wav" +sound_Tooled_Horn_G WAVE "..\sound\wav\sound_Tooled_Horn_G.wav" +sound_Wooden_Flute_A WAVE "..\sound\wav\sound_Wooden_Flute_A.wav" +sound_Wooden_Flute_B WAVE "..\sound\wav\sound_Wooden_Flute_B.wav" +sound_Wooden_Flute_C WAVE "..\sound\wav\sound_Wooden_Flute_C.wav" +sound_Wooden_Flute_D WAVE "..\sound\wav\sound_Wooden_Flute_D.wav" +sound_Wooden_Flute_E WAVE "..\sound\wav\sound_Wooden_Flute_E.wav" +sound_Wooden_Flute_F WAVE "..\sound\wav\sound_Wooden_Flute_F.wav" +sound_Wooden_Flute_G WAVE "..\sound\wav\sound_Wooden_Flute_G.wav" +sound_Wooden_Harp_A WAVE "..\sound\wav\sound_Wooden_Harp_A.wav" +sound_Wooden_Harp_B WAVE "..\sound\wav\sound_Wooden_Harp_B.wav" +sound_Wooden_Harp_C WAVE "..\sound\wav\sound_Wooden_Harp_C.wav" +sound_Wooden_Harp_D WAVE "..\sound\wav\sound_Wooden_Harp_D.wav" +sound_Wooden_Harp_E WAVE "..\sound\wav\sound_Wooden_Harp_E.wav" +sound_Wooden_Harp_F WAVE "..\sound\wav\sound_Wooden_Harp_F.wav" +sound_Wooden_Harp_G WAVE "..\sound\wav\sound_Wooden_Harp_G.wav" + #endif // English (United States) resources /////////////////////////////////////////////////////////////////////////////