lenwesaralonde / musician Goto Github PK
View Code? Open in Web Editor NEWAdd-on for World of Warcraft to perform music in game.
Home Page: https://musician.lenwe.io
License: GNU General Public License v3.0
Add-on for World of Warcraft to perform music in game.
Home Page: https://musician.lenwe.io
License: GNU General Public License v3.0
Musician.Registry.PlayerIsInRange()
returns true if the player is in range to hear the music. It does not take account of phasing so music coming from another phase or server shard can still be heard.
The C_PlayerInfo.IsConnected()
function seems to address this.
C_PlayerInfo.IsConnected(PlayerLocation:CreateFromGUID(guid))
Playing music before the preloading process is complete may cause freeze on computers running WoW from a HDD.
The average time for loading a sample can be used to determine how the sample is loaded :
The communication channel MusicianComm is never joined if the player has not already joined at least one channel (ie General)
Also, don't block requests sent in group channel or whisper if the communication channel is not ready yet.
Add a message when joined communication channel but alone ("There is no other music fan around yet..." )
Workaround : Join one channel (/join General
)
Add Musician version number in player tooltips when using MyRolePlay
Music streaming over CHANNEL is broken since Wow Classic 1.13.3.
Fix protocol to use YELL instead.
https://us.forums.blizzard.com/en/wow/t/classic-patch-1-13-3-lua-api-change/384543
MIDI key indexes do not comply with the MIDI standard in the MUS file format and communication protocol.
Middle C (261.626 Hz) should be C4 with key index 60 for all instruments, including percussions and drumkit.
Preloading samples in the OS file cache in background is slowed down to avoid FPS drop when starting to play after a cold start.
Loading all samples from a SSD takes ~13 seconds, which is less than the script timeout (~15s) so it can be safely done during the loading screen.
Improve preloader to attempt to load all samples within 15 seconds during cold startup. If all samples can't be loaded (HDD), continue with the background preloading.
When playing a song, the following "promo" emote is sent in the chat :
Player is playing a song. (Get "Musician" add-on or upgrade it from https://lenwe.info/musician to listen!)
This could be annoying for players who don't want to install addons, especially because of the URL and its overall length.
The addon can now be easily found on Google by typing "musician addon" so the URL part is no longer needed.
This can also get spammy in crowded places such as taverns etc.
Add commands syncplay
and syncstop
for the party/raid leader to command other who have loaded the same song.
Based on : https://gist.github.com/LenweSaralonde/0c31239bda596877c317b2ab3a9d96c4
Workaround:
/run Musician.TRP3.HookTooltip()
The standard " is playing music..." emote is not properly hidden if the current player has a client in a different language than the one playing music.
Hide standard emote, regardless of the client language.
Add an "About" popup accessible from the main menu showing various informations:
Rename Musician.Live.IsEnabled()
into Musician.Live.IsLiveEnabled()
Rename Musician.Live.Enable(enabled)
into Musician.Live.EnableLive(enabled)
Update libs
Occurs randomly with TRP3 + KuiNameplates on Retail
Minimap Button Frame add-on : https://wow.curseforge.com/projects/minimap-button-frame
Probably due to the MusicianButton.Reposition()
call at line 80
https://github.com/LenweSaralonde/Musician/blob/master/ui/MusicianButton.lua#L80
This line seems to have no real purpose, see if removing it fixes the problem.
Add a "Group sync" mode when in party or raid mode to send Note On / Note Off events in the group channel prior to playing them to allow live group play,
Nameplates are broken with ElvUI 11.49
Message: Interface\AddOns\Musician\modules\ElvUI\ElvUI.lua:35: hooksecurefunc(): Update_Name is not a function
Mute, solo and power chords checkboxes do not work in WoW Classic and trigger a LUA error.
Message: Interface\FrameXML\OptionsPanelTemplates.lua:201: Usage: GetCVar("cvar")
Time: Fri Aug 14 00:26:00 2020
Count: 3
Stack: Interface\FrameXML\OptionsPanelTemplates.lua:201: Usage: GetCVar("cvar")
[C]: in function `GetCVar'
Interface\FrameXML\OptionsPanelTemplates.lua:201: in function `BlizzardOptionsPanel_SetCVarSafe'
Interface\FrameXML\OptionsPanelTemplates.lua:153: in function `BlizzardOptionsPanel_CheckButton_SetNewValue'
Interface\FrameXML\OptionsPanelTemplates.lua:131: in function `BlizzardOptionsPanel_CheckButton_OnClick'
[string "*:OnClick"]:6: in function <[string "*:OnClick"]:1>
Locals: (*temporary) = nil
Override OnClick for checkboxes that inherit from OptionsSmallCheckButtonTemplate
VisualNoteOn events do not have a corresponding VisualNoteOff event when the track is muted.
Add notes that won't play in the track.notesOn table with a handle set to 0
Create a Cross RP module to enable music to be played cross faction and deal with coalesced realms.
Add instruments :
Rework instruments :
Misc:
I have this weird thing and I can't find the option or what I did different.
On my main I do not see the /me plays a song emote, I do on all my alts however!
What am I missing?
Some basic game actions get blocked by the addon showing the message : "Musician has been blocked from an action only available to the Blizzard UI."
Version: 1.5.0.2
Prerequisites : Having a game community created
Popup with "Musician has been blocked from an action only available to the Blizzard UI." shows up. Group settings are not saved.
Group settings are saved without error
Example MIDI : https://musescore.com/user/28419/scores/2190066
Create a new modules
folder to separate code that is specific to 3rd party add-ons such as Total RP3.
Hi! @LenweSaralonde
I'm interested in collaborating with this project by delivering a series of logotype options that fits this project for the best!
If interested let me know so we can get started!
Cheers!
Third party instruments implemented in separate plugins such as Instruments v1 and Piano are loaded after the preloading process is initialized.
Move sampler and preloader initialization process to OnEnable so it starts after all other add-ons have been loaded.
Do not send the "promo" emote less than every 10 minute when the option is checked to avoid other players who don't have the add-on to see it too often.
In band play mode, only the initiator of the play action should send the promo emote.
Allow importing music in ABC format
Investigate if it's possible to add 3D animations, text or icons to character nameplates. (check "Plater" and "RP Tags" add-ons)
Message: Interface\AddOns\Musician\modules\ElvUI\ElvUI.lua:17: hooksecurefunc(): StyleFilterNameChanged is not a function Time: Mon Sep 23 19:21:55 2019 Count: 1 Stack: Interface\AddOns\Musician\modules\ElvUI\ElvUI.lua:17: hooksecurefunc(): StyleFilterNameChanged is not a function (tail call): ? [C]: in function
hooksecurefunc'
Interface\AddOns\Musician\modules\ElvUI\ElvUI.lua:17: in function <Interface\AddOns\Musician\modules\ElvUI\ElvUI.lua:8>
[C]: ?
...dOns\AmmoReminder\Libs\AceAddon-3.0\AceAddon-3.0.lua:70: in function <...dOns\AmmoReminder\Libs\AceAddon-3.0\AceAddon-3.0.lua:65>
...dOns\AmmoReminder\Libs\AceAddon-3.0\AceAddon-3.0.lua:527: in function EnableAddon' ...dOns\AmmoReminder\Libs\AceAddon-3.0\AceAddon-3.0.lua:620: in function <...dOns\AmmoReminder\Libs\AceAddon-3.0\AceAddon-3.0.lua:605> [C]: in function
LoadAddOn'
Interface\FrameXML\UIParent.lua:353: in function UIParentLoadAddOn' Interface\FrameXML\UIParent.lua:424: in function
TimeManager_LoadUI'
Interface\FrameXML\UIParent.lua:693: in function <Interface\FrameXML\UIParent.lua:658>
Locals: `
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.