Skip to content

API documentation

LenweSaralonde edited this page Feb 9, 2020 · 25 revisions

Functions

Main

Musician.ImportSource

Import song from encoded string. Triggers SongImport* events

Musician.ImportSource(str)

Arguments

  • str (string)

Musician.MutePlayer

Mute or unmute a player

Musician.MutePlayer(playerName, isMuted)

Arguments

  • playerName (string)
  • isMuted (boolean)

Musician.PlayerIsMuted

Returns true if the player is muted

isMuted = Musician.PlayerIsMuted(playerName)

Arguments

  • playerName (string)

Returns

  • isMuted (boolean)

Communication

Musician.Comm.CanBroadcast()

Musician.Comm.CanPlay()

Musician.Comm.PlaySong()

Musician.Comm.StopSong()

Musician.Comm.TogglePlaySong()

Musician.Comm.GetCurrentSongCrc32()

Musician.Comm.SetBandPlayReady(isReady)

Musician.Comm.QueryBandReady()

Musician.Comm.IsBandPlayReady()

Musician.Comm.PlaySongBand()

Musician.Comm.StopSongBand()

Registry

Musician.Registry.PlayerIsInLoadingRange(player)

Musician.Registry.PlayerIsInRange(player)

Musician.Registry.GetPlayerGUID(player)

Musician.Registry.SendHello()

Musician.Registry.PlayerIsRegistered(player)

Musician.Registry.PlayerIsRegisteredWithVersion(player)

Live

Musician.Live.Enable(enabled)

Musician.Live.IsEnabled()

Musician.Live.IsPlayingLive()

Musician.Live.CanStream()

Musician.Live.NoteOn(key, layer, instrument, isChordNote)

Musician.Live.NoteOff(key, layer, instrument, isChordNote)

Musician.Live.AllNotesOff(onlyForLayer)

Musician.Live.InsertNote(noteOn, key, layer, instrument)

Musician.Live.IsBandSyncMode()

Musician.Live.SetBandSyncMode(enabled)

Musician.Live.ToggleBandSyncMode()

Musician.Live.IsPlayerSynced(player)

Musician.Live.BandNote(noteOn, key, layer, instrument)

Utility functions

Musician.Utils.Print

Display a message in the console

Musician.Utils.Print(msg)

Arguments

  • msg (string)

Musician.Utils.Debug

Print debug stuff in the console

Musician.Utils.Debug(module, ...)

Arguments

  • module (string)
  • ... (string)

Musician.Utils.PlaySoundFile

Safely play a sound file, even if the sound file does not exist.

willPlay, soundHandle = Musician.Utils.PlaySoundFile(soundFile, channel)

Arguments

  • soundFile (string)
  • channel (string)

Returns

  • willPlay (boolean)
  • soundHandle (int)

Musician.Utils.PrintError

Display an error message in the console

Musician.Utils.PrintError(msg)

Arguments

  • msg (string)

Musician.Utils.Error

Display an error message in a popup

Musician.Utils.Error(msg)

Arguments

  • msg (string)

Musician.Utils.Popup

Display a message in a popup

Musician.Utils.Popup(msg, callback, force)

Arguments

  • msg (string)
  • callback (function)
  • force (boolean)

Musician.Utils.Highlight

Highlight text

highlightedText = Musician.Utils.Highlight(text, color)

Arguments

  • text (string)
  • color (string|Color)

Returns

  • highlightedText (string)

Musician.Utils.GetColorCode

Get color code from RGB values

colorCode = Musician.Utils.GetColorCode(r, g, b)

Arguments

  • r (number) 0-1
  • g (number) 0-1
  • b (number) 0-1

Returns

  • colorCode (string)

Musician.Utils.FormatText

Format text, adding highlights etc.

formattedText = Musician.Utils.FormatText(text)

Arguments

  • text (string)

Returns

  • formattedText (string)

Musician.Utils.GetLink

Get hyperlink

link = Musician.Utils.GetLink(command, text, ...)

Arguments

  • command (string)
  • text (string)
  • ... (string)

Returns

  • link (string)

Musician.Utils.GetPlayerLink

Get player hyperlink

playerLink = Musician.Utils.GetPlayerLink(player)

Arguments

  • player (string)

Returns

  • playerLink (string)

Musician.Utils.FormatPlayerName

Get player name for display

formattedPlayerName = Musician.Utils.FormatPlayerName(player)

Arguments

  • player (string)

Returns

  • formattedPlayerName (string)

Musician.Utils.GetChatIcon

Return the code to insert an icon in a chat message or a text string

chatIcon = Musician.Utils.GetChatIcon(path, r, g, b)

Arguments

  • path (string)
  • r (number) 0-1 (optional)
  • g (number) 0-1 (optional)
  • b (number) 0-1 (optional)

Returns

  • chatIcon (string)

Musician.Utils.DisplayEmote

Display a faked emote

Musician.Utils.DisplayEmote(player, playerGUID, message)

Arguments

  • player (string)
  • playerGUID (string)
  • message (string)

Musician.Utils.RemoveChatMessage

Remove a chat message by its line ID

Musician.Utils.RemoveChatMessage(lineID)

Arguments

  • lineID (int)

Musician.Utils.NoteName

Return the note name corresponding its MIDI key

name = Musician.Utils.NoteName(key)

Arguments

  • key (int) MIDI key index

Returns

  • name (string) from Musician.NOTE_NAMES

Musician.Utils.NoteKey

Return the MIDI key of the note name

key = Musician.Utils.NoteKey(noteName)

Arguments

  • noteName (string) from Musician.NOTE_NAMES

Returns

  • key (int)

Musician.Utils.ReadBytes

Read some bytes from a string and remove them

data, str = Musician.Utils.ReadBytes(str, bytes)

Arguments

  • str (string)
  • bytes (int)

Returns

  • data (string) read bytes
  • str (string) new string

Musician.Utils.PackNumber

Pack an integer number into a string

data = Musician.Utils.PackNumber(num, bytes)

Arguments

  • num (int) integer to pack
  • bytes (int) number of bytes

Returns

  • data (string)

Musician.Utils.UnpackNumber

Unpack a string into an integer number

num = Musician.Utils.UnpackNumber(data)

Arguments

  • data (string)

Returns

  • num (int)

Musician.Utils.Base64Decode

Decode base 64 string

Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss alexthkloss@web.de

licensed under the terms of the LGPL2

http://lua-users.org/wiki/BaseSixtyFour

str = Musician.Utils.Base64Decode(data)

Arguments

  • data (string)

Returns

  • str (string)

Musician.Utils.PackTime

Pack a time or duration in seconds into a string

data = Musician.Utils.PackTime(seconds, bytes, fps)

Arguments

  • seconds (float)
  • bytes (int) Number of bytes
  • fps (float) Precision in frames par second

Returns

  • data (string)

Musician.Utils.UnpackTime

Unpack a string into a time or duration in seconds

seconds = Musician.Utils.UnpackTime(data, fps)

Arguments

  • data (string)
  • fps (float) Precision in frames par second

Returns

  • seconds (float)

Musician.Utils.PackPlayerGuid

Pack player GUID into a 6-byte string

data = Musician.Utils.PackPlayerGuid()

Returns

  • data (string)

Musician.Utils.UnpackPlayerGuid

Unpack player GUID from string

guid = Musician.Utils.UnpackPlayerGuid(data)

Arguments

  • data (string)

Returns

  • guid (string)

Musician.Utils.PackPlayerPosition

Pack player position into a 18-byte chunk string

data = Musician.Utils.PackPlayerPosition()

Returns

  • data (string)

Musician.Utils.UnpackPlayerPosition

Unpack player position from chunk string

posY, posX, posZ, instanceID, guid = Musician.Utils.UnpackPlayerPosition(str)

Arguments

  • str (string)

Returns

  • posY (number)
  • posX (number)
  • posZ (number)
  • instanceID (int)
  • guid (string)

Musician.Utils.FromHex

Convert hex string to string

str = Musician.Utils.FromHex(hex)

Arguments

  • hex (string)

Returns

  • str (string)

Musician.Utils.ToHex

Convert string to hex string

hex = Musician.Utils.ToHex(str)

Arguments

  • str (string)

Returns

  • hex (string)

Musician.Utils.GetInstrumentName

Return instrument name from its MIDI ID

instrumentName = Musician.Utils.GetInstrumentName(instrument, key)

Arguments

  • instrument (int)
  • key (int)

Returns

  • instrumentName (string) used as key in Musician.INSTRUMENTS

Musician.Utils.GetSoundFile

Get the path to a sound file for an instrument and a key.

Also returns the instrument data from Musician.INSTRUMENTS

and all other suitable sound file paths for randomization.

filePath, instrumentData, soundFiles = Musician.Utils.GetSoundFile(instrument, key)

Arguments

  • instrument (int) MIDI instrument index
  • key (int) MIDI key

Returns

  • filePath (string) file path to be played
  • instrumentData (table) from Musician.INSTRUMENTS
  • soundFiles (table) all suitable file paths for this instrument and note

Musician.Utils.SongIsPlaying

Return true if a song is actually playing and is audible

isPlaying = Musician.Utils.SongIsPlaying()

Returns

  • isPlaying (boolean)

Musician.Utils.MuteGameMusic

Start or stop the actual game music if a song can actually be heard

Musician.Utils.MuteGameMusic(force)

Arguments

  • force (boolean)

Musician.Utils.GetNormalizedRealmName

Return the normalized realm name the player belongs to

Safer than the standard GetNormalizedRealmName() that may return nil sometimes

realmName = Musician.Utils.GetNormalizedRealmName()

Returns

  • realmName (string)

Musician.Utils.GetRealmLocale

Return the short locale code of the realm the player belongs to

locale = Musician.Utils.GetRealmLocale()

Returns

  • locale (string) 'en', 'fr' etc.

Musician.Utils.NormalizePlayerName

Return the normalized player name, including realm slug

normalizedPlayerName = Musician.Utils.NormalizePlayerName(playerName)

Arguments

  • playerName (string)

Returns

  • normalizedPlayerName (string)

Musician.Utils.SimplePlayerName

Return the simple player name, including the realm slug if needed

simpleName = Musician.Utils.SimplePlayerName(playerName)

Arguments

  • playerName (string)

Returns

  • simpleName (string)

Musician.Utils.PlayerRealm

Return the player realm slug

realmSlug = Musician.Utils.PlayerRealm(playerName)

Arguments

  • playerName (string)

Returns

  • realmSlug (string)

Musician.Utils.PlayerIsInGroup

Return true if the player is in my party or raid

isInMyGroup = Musician.Utils.PlayerIsInGroup(playerName)

Arguments

  • playerName (string)

Returns

  • isInMyGroup (boolean)

Musician.Utils.PlayerIsMyself

Return true if the provided player name is myself

isMyself = Musician.Utils.PlayerIsMyself(playerName)

Arguments

  • playerName (string)

Returns

  • isMyself (boolean)

Musician.Utils.PlayerIsOnSameRealm

Return true if the provided player name is on the same realm or connected realm as me

isOnSameRealm = Musician.Utils.PlayerIsOnSameRealm(playerName)

Arguments

  • playerName (string)

Returns

  • isOnSameRealm (boolean)

Musician.Utils.PlayerGuidIsVisible

Return true if the player whose GUID is provided is visible (loaded) by the game client

isVisible = Musician.Utils.PlayerGuidIsVisible(guid)

Arguments

  • guid (string)

Returns

  • isVisible (boolean)

Musician.Utils.GetPromoEmote

Return the "Player is playing music" emote with promo message

promoEmote = Musician.Utils.GetPromoEmote()

Returns

  • promoEmote (string)

Musician.Utils.HasPromoEmote

Return true if the message contains the promo emote, in any language

hasPromoEmote, isFullPromoEmote = Musician.Utils.HasPromoEmote(message)

Arguments

  • message (string)

Returns

  • hasPromoEmote (boolean)
  • isFullPromoEmote (boolean) true if the emote contains the part invinting other players to install Musician

Musician.Utils.ResetFullPromoEmoteCooldown

Mark the full promo emote as recently seen

Musician.Utils.ResetFullPromoEmoteCooldown()

Musician.Utils.OverrideNextFullPromoEmote

Override the next full promo emote

Musician.Utils.OverrideNextFullPromoEmote()

Musician.Utils.SendPromoEmote

Send the "Player is playing music" emote with promo message

Musician.Utils.SendPromoEmote()

Musician.Utils.GetVersionText

Return the current version as text for the end user

version = Musician.Utils.GetVersionText()

Returns

  • version (string)

Musician.Utils.VersionCompare

Compare two version numbers

difference = Musician.Utils.VersionCompare(versionA, versionB)

Arguments

  • versionA (string)
  • versionB (string)

Returns

  • difference (number) 0 if A = B, 1 if A > B, -1 if A < B

Musician.Utils.PaddingZeros

Add padding zeros

formattedNumber = Musician.Utils.PaddingZeros(number, zeros)

Arguments

  • number (int)
  • zeros (int)

Returns

  • formattedNumber (string)

Musician.Utils.FormatTime

Format time to mm:ss.ss format

formattedTime = Musician.Utils.FormatTime(time, simple)

Arguments

  • time (number)
  • simple (boolean)

Returns

  • formattedTime (string)

Musician.Utils.ParseTime

Parse time in seconds from mm:ss.ss format

seconds = Musician.Utils.ParseTime(timestamp)

Arguments

  • timestamp (string)

Returns

  • seconds (number)

Musician.Utils.GetInstrumentData

Return instrument data for given MIDI key number

instrumentData = Musician.Utils.GetInstrumentData(instrumentName, key)

Arguments

  • instrumentName (string)
  • key (int) MIDI key number

Returns

  • instrumentData (table) from Musician.INSTRUMENTS

Musician.Utils.GetSampleId

Return sample ID for note and instrument data

sampleId = Musician.Utils.GetSampleId(instrumentData, key)

Arguments

  • instrumentData (table) as returned by Musician.Utils.GetSoundFile()
  • key (int) MIDI key number

Returns

  • sampleId (string)

Musician.Utils.PlayNote

Start playing a note

Returns true if sound will actually be played, sound handle and instrument data

willPlay, soundHandle, instrumentData = Musician.Utils.PlayNote(instrument, key)

Arguments

  • instrument (int) MIDI instrument
  • key (int)

Returns

  • willPlay (boolean)
  • soundHandle (int)
  • instrumentData (table) from Musician.INSTRUMENTS

Musician.Utils.PreloadNote

Preload note

hasSample, preloadTime = Musician.Utils.PreloadNote(instrument, key)

Arguments

  • instrument (int)
  • key (int)

Returns

  • hasSample (boolean)
  • preloadTime (number) in seconds

Musician.Utils.DeepCopy

Deep copy a table

http://lua-users.org/wiki/CopyTable

copy = Musician.Utils.DeepCopy(orig)

Arguments

  • orig (table)

Returns

  • copy (table)

Musician.Utils.DeepMerge

Deep merge two tables

merged = Musician.Utils.DeepMerge(merged, orig)

Arguments

  • merged (table)
  • orig (table)

Returns

  • merged (table)

Musician.Utils.FlipTable

Flip a table

flipped = Musician.Utils.FlipTable(orig)

Arguments

  • orig (table)

Returns

  • flipped (table)

Musician.Utils.GetOs

Return operating system name

os = Musician.Utils.GetOs()

Returns

  • os (string)

Musician.Utils.EasyMenu

Blizzard's EasyMenu using MSA_DropDownMenu

Musician.Utils.EasyMenu()

Musician.Utils.EasyMenu_Initialize

Blizzard's EasyMenu_Initialize using MSA_DropDownMenu

Musician.Utils.EasyMenu_Initialize()

Musician.Utils.SetFontStringTextFixedSize

Set text to a FontString element ensuring the visual text size is respected

Musician.Utils.SetFontStringTextFixedSize(fontString, text)

Arguments

  • fontString (FontString)
  • text (string)

Classes

Musician.Song

Musician.VolumeMeter

Events

Musician.Events.Frame

Musician.Events.RegistryReady

Musician.Events.CommChannelUpdate

Musician.Events.CommSendAction

Musician.Events.CommSendActionComplete

Musician.Events.SongPlay

Musician.Events.SongStop

Musician.Events.SongChunk

Musician.Events.StreamStart

Musician.Events.StreamStop

Musician.Events.SongCursor

Musician.Events.SongInstrumentChange

Musician.Events.NoteOn

Musician.Events.NoteOff

Musician.Events.VisualNoteOn

Musician.Events.VisualNoteOff

Musician.Events.LiveNoteOn

Musician.Events.LiveNoteOff

Musician.Events.NoteDropped

Musician.Events.PreloadingProgress

Musician.Events.PreloadingComplete

Musician.Events.SongImportStart

Musician.Events.SongImportProgress

Musician.Events.SongImportComplete

Musician.Events.SongImportSucessful

Musician.Events.SongImportFailed

Musician.Events.SourceSongLoaded

Musician.Events.PromoEmote

Musician.Events.Bandwidth

Musician.Events.BandPlay

Musician.Events.BandStop

Musician.Events.BandPlayReady

Musician.Events.BandReadyPlayersUpdated

Musician.Events.LiveBandSync

Clone this wiki locally