<commit_before>2017-02-20: mxtune-1.10.2-0.3.1.0-dev.19, mxtune-1.11-0.3.1.0-dev.19
Changes:
Turn off logging for the SoundSystem endOfStream events. On some systems this was causing the fml-client-latest logs to grow very large.
Troubleshoot and make some change to the ClientAudio classes thread use, and use of the synchronized specifier.
Poached ConfigureSound from Dynamic Surroundings and added configuration options for it. This allows using all of the available sound channels.
----

2017-02-19: mxtune-1.10.2-0.3.1.0-dev.18, mxtune-1.11-0.3.1.0-dev.18
Fixes:
Issue #15: [1.11.2-0.3.1.0-dev.16] Odd crash, now player can't log on to server
java.lang.NullPointerException: Unexpected error
 at net.aeronica.mods.mxtune.util.SheetMusicUtil.getSheetMusic(SheetMusicUtil.java:86)
 at net.aeronica.mods.mxtune.gui.GuiJamOverlay.onRenderExperienceBar(GuiJamOverlay.java:153)
 at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_1089_GuiJamOverlay_onRenderExperienceBar_Post.invoke(.dynamic)
Add an instanceof check for IInstrument to the SheetMusicUtil#getSheetMusic method to ensure it does not try to open a non-existent inventory.

Issue #1: [Minor Tweak] Music Paper should use dyeBlack oredict in its recipe.
Replaced the shapeless recipe with a shaped recipe and used dyeBlack.

Changes:
Clean up and add instanceof test for IMusic. Make SheetMusicUtil class and enum. Remove short-circuit logic in favor of clearer brace indentation.
Adjust recipes to use oredict names where possible.
Resolve clarinet recipe conflict with Quark vertical planks. Now uses 1 sugarcane and 2 plankWood. Changed the Flute recipe to use 2 sugarcane and 1 plankWood.
Minor changes to instrument right, left and shift-right click actions when equipped to the off-hand. Offhand playing is not supported at this time.

----
2017-02-18: mxtune-1.10.2-0.3.1.0-dev.17, mxtune-1.11-0.3.1.0-dev.17
Changes:
Rework the Play Music chain to improve reliability and eliminate clicks and pops on abrupt cutoff.
Stop and resume vanilla background music when mxTune is playing. Limited streaming channels require this to prevent the background music from interrupting an mxTune play session.
Move ModSounds initialization during block registration. This ensures the mxTune SoundCategory and pcm_proxy sound event is setup before the sound system starts up.
Ensure client request MIDI status packet is only called from the effective server side. Remove ClientAudio#init method that was attempting to exercise the audio chain at the moment a player logs onto the game.
Add gradle project files to ease building for anyone who want to contribute.

----

2017-02-11: mxtune-1.10.2-0.3.1.0-dev.16, mxtune-1.11-0.3.1.0-dev.16
Changes:
Attempt to fix intermittent issues with songs stopping prematurely.
Move soundCategory initialization for the mxTune volume control earlier in the pre-initialization.
Prevent removing sheet music from the piano when it is occupied.
Remove Tabula loader and related classes. Using models with large texture sheets is not a good idea.
----

2017-02-03: mxtune-1.10.2-0.3.1.0-dev.15, mxtune-1.11-0.3.1.0-dev.15
Changes:
Activate Music Paper on right click or shift right click.
Simplify stopping music when a player interacts with an inventory (Read: the way I did it before was really dumb)
Prevent accidental creation of title-less sheet music.
Identity CodecPCM mod source when logging.
Additional debug for sources in ClientAudio.
----

2017-01-25: mxtune-1.10.2-0.3.1.0-dev.14
Attempt to fix intermittent issues with songs not playing. Open a dummy stream to the supplied URL in CodecPCM and close it in cleanup.
----

2017-01-21: mxtune-1.10.2-0.3.1.0-dev.12
Issue#11 Major issue with EnderStorage mod
Caused by: java.lang.NullPointerException
 at net.aeronica.mods.mxtune.handler.SREventHandler.onEvent(SREventHandler.java:53) ~[SREventHandler.class:?] 
 at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_252_SREventHandler_onEvent_Close.invoke(.dynamic) ~[?:?]

FIX:
Found a missing NULL check.<commit_msg>Corrections to release notes.<commit_after>2017-02-20: mxtune-1.10.2-0.3.1.0-dev.19, mxtune-1.11.2-0.3.1.0-dev.19
Changes:
Turn off logging for the SoundSystem endOfStream events. On some systems this was causing the fml-client-latest logs to grow very large.
Troubleshoot and make some change to the ClientAudio classes thread use, and use of the synchronized specifier.
Poached ConfigureSound from Dynamic Surroundings and added configuration options for it. This allows using all of the available sound channels.
----

2017-02-19: mxtune-1.10.2-0.3.1.0-dev.18, mxtune-1.11.2-0.3.1.0-dev.18
Fixes:
Issue #15: [1.11.2-0.3.1.0-dev.16] Odd crash, now player can't log on to server
java.lang.NullPointerException: Unexpected error
 at net.aeronica.mods.mxtune.util.SheetMusicUtil.getSheetMusic(SheetMusicUtil.java:86)
 at net.aeronica.mods.mxtune.gui.GuiJamOverlay.onRenderExperienceBar(GuiJamOverlay.java:153)
 at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_1089_GuiJamOverlay_onRenderExperienceBar_Post.invoke(.dynamic)
Add an instanceof check for IInstrument to the SheetMusicUtil#getSheetMusic method to ensure it does not try to open a non-existent inventory.

Issue #1: [Minor Tweak] Music Paper should use dyeBlack oredict in its recipe.
Replaced the shapeless recipe with a shaped recipe and used dyeBlack.

Changes:
Clean up and add instanceof test for IMusic. Make SheetMusicUtil class and enum. Remove short-circuit logic in favor of clearer brace indentation.
Adjust recipes to use oredict names where possible.
Resolve clarinet recipe conflict with Quark vertical planks. Now uses 1 sugarcane and 2 plankWood. Changed the Flute recipe to use 2 sugarcane and 1 plankWood.
Minor changes to instrument right, left and shift-right click actions when equipped to the off-hand. Offhand playing is not supported at this time.

----
2017-02-18: mxtune-1.10.2-0.3.1.0-dev.17, mxtune-1.11.2-0.3.1.0-dev.17
Changes:
Rework the Play Music chain to improve reliability and eliminate clicks and pops on abrupt cutoff.
Stop and resume vanilla background music when mxTune is playing. Limited streaming channels require this to prevent the background music from interrupting an mxTune play session.
Move ModSounds initialization during block registration. This ensures the mxTune SoundCategory and pcm_proxy sound event is setup before the sound system starts up.
Ensure client request MIDI status packet is only called from the effective server side. Remove ClientAudio#init method that was attempting to exercise the audio chain at the moment a player logs onto the game.
Add gradle project files to ease building for anyone who want to contribute.

----

2017-02-11: mxtune-1.10.2-0.3.1.0-dev.16, mxtune-1.11.2-0.3.1.0-dev.16
Changes:
Attempt to fix intermittent issues with songs stopping prematurely.
Move soundCategory initialization for the mxTune volume control earlier in the pre-initialization.
Prevent removing sheet music from the piano when it is occupied.
Remove Tabula loader and related classes. Using models with large texture sheets is not a good idea.
----

2017-02-03: mxtune-1.10.2-0.3.1.0-dev.15, mxtune-1.11.2-0.3.1.0-dev.15
Changes:
Activate Music Paper on right click or shift right click.
Simplify stopping music when a player interacts with an inventory (Read: the way I did it before was really dumb)
Prevent accidental creation of title-less sheet music.
Identity CodecPCM mod source when logging.
Additional debug for sources in ClientAudio.
----

2017-01-25: mxtune-1.10.2-0.3.1.0-dev.14
Attempt to fix intermittent issues with songs not playing. Open a dummy stream to the supplied URL in CodecPCM and close it in cleanup.
----

2017-01-21: mxtune-1.10.2-0.3.1.0-dev.12
Issue#11 Major issue with EnderStorage mod
Caused by: java.lang.NullPointerException
 at net.aeronica.mods.mxtune.handler.SREventHandler.onEvent(SREventHandler.java:53) ~[SREventHandler.class:?] 
 at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_252_SREventHandler_onEvent_Close.invoke(.dynamic) ~[?:?]

FIX:
Found a missing NULL check.
{'fraction_non_alphanumeric': 0.07485177865612648, 'fraction_numerical': 0.05101284584980237, 'mean_word_length': 4.44885598923284, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 26, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7441016', 'n_tokens_mistral': 2665, 'n_tokens_neox': 2447, 'n_words': 966}