Code
<?xml version="1.0"?>
<spellcast>
<!------- Configuration ------->
<config
AutoLoadXMLOnJobChange="true"
Debug="true"
HideErrors="false"
QuickCommands="true"
ShowGearSwaps="false"
ShowSpellInfo="false"
/>
<!----- Gear Sets ----->
<sets>
<group default="true" name="BRD|Bard">
<!----- Defensive Sets ----->
<set name="Idle">
<main>Felibre's Dague</main>
<sub>Genbu's Shield</sub>
<head>Wivre Hairpin</head>
<neck>Twilight Torque</neck>
<lear>Magnetic Earring</lear>
<rear>Colossus's Earring</rear>
<body>Marduk's Jubbah +1</body>
<hands>Serpentes Cuffs</hands>
<lring>Shadow Ring</lring>
<rring>Defending Ring</rring>
<back>Shadow Mantle</back>
<waist>Demonry Sash</waist>
<legs>Nares Trews</legs>
<feet>Serpentes Sabots</feet>
</set>
<set name="Town" BaseSet="Idle">
<feet lock="t">Aoidos' Cothurnes +2</feet>
</set>
<!----- Magic Sets ----->
<!--- Bard Songs --->
<set name="Buff" BaseSet="Skill">
<head>Aoidos' Calot +2</head>
<neck>Aoidos' Matinee</neck>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<lring>Nereid Ring</lring>
<rring>Nereid Ring</rring>
<back>Astute Cape</back>
<waist>Aoidos' Belt</waist>
<legs>Marduk's Shalwar +1</legs>
<feet>Aoidos' Cothurnes +2</feet>
</set>
<set name="Bard_Cast" BaseSet="Fast_Cast">
<main>Felibre's Dague</main>
<sub>Genbu's Shield</sub>
<head>Aoidos' Calot +2</head>
<lear>Aoidos' Earring</lear>
<hands>Marduk's Dastanas +1</hands>
<rring>Nereid Ring</rring>
<waist>Aoidos' Belt</waist>
<feet>Bokwus Boots</feet>
</set>
<set name="Skill" BaseSet="Bard_Cast">
<head>Marduk's Tiara +1</head>
<neck>Aoidos' Matinee</neck>
<rear>Musical Earring</rear>
<body>Aoidos' Hongreline +2</body>
<hands>Aoidos' Manchettes +2</hands>
<lring>Nereid Ring</lring>
<rring>Nereid Ring</rring>
<back>Astute Cape</back>
<waist>Demonry Sash</waist>
<legs>Marduk's Shalwar +1</legs>
<feet>Bokwus Boots</feet>
</set>
<!--- White Magic --->
<set name="Cure" BaseSet="Cure_Cast">
<main>Chatoyant Staff</main>
<sub>Wizzan Grip</sub>
<head>Marduk's Tiara +1</head>
<body>Heka's Kalasiris</body>
<hands>Hieros Mittens</hands>
<lring>Sirona's Ring</lring>
<rring>Vilma's Ring</rring>
<back>Medala Cape</back>
<waist>Korin Obi</waist>
<legs>Nares Trews</legs>
</set>
<set name="Cure_Cast" BaseSet="Fast_Cast">
<body>Heka's Kalasiris</body>
<back>Medala Cape</back>
</set>
<set name="Fast_Cast" BaseSet="Idle">
<head>Nares Cap</head>
<neck>Orunmila's Torque</neck>
<lear>Magnetic Earring</lear>
<rear>Loquacious Earring</rear>
<body>Marduk's Jubbah +1</body>
<hands>Marduk's Dastanas +1</hands>
<lring>Prolix Ring</lring>
<back>Swith Cape</back>
<waist>Siegel Sash</waist>
<legs>Orvail Pants</legs>
</set>
<!----- Offensive Sets ----->
<set name="Melee">
<head>Zelus Tiara</head>
<neck>Portus Collar</neck>
<lear>Bladeborn Earring</lear>
<rear>Steelflash Earring</rear>
<body>Hedera Cotehardie</body>
<hands>Hieros Mittens</hands>
<lring>Ambuscade Ring</lring>
<rring>Rajas Ring</rring>
<back>Letalis Mantle</back>
<waist>Phasmida Belt</waist>
<legs>Byakko's Haidate</legs>
<feet>Aoidos' Cothurnes +2</feet>
</set>
<!----- Weapon Skill Sets ----->
<!--- Dagger Weapon Skills --->
<set name="Evisceration">
<head>Hecatomb Cap</head>
<neck>Shadow Gorget</neck>
<lear>Moonshade Earring</lear>
<rear>Brutal Earring</rear>
<body>Kirin's Osode</body>
<hands>Hecatomb Mittens +1</hands>
<lring>Ambuscade Ring</lring>
<rring>Rajas Ring</rring>
<back>Rancorous Mantle</back>
<waist>Shadow Belt</waist>
<legs>Byakko's Haidate</legs>
<feet>Hecatomb Leggings +1</feet>
</set>
<set name="Mordant_Rime">
<head>Maat's Cap</head>
<neck>Thunder Gorget</neck>
<lear>Moonshade Earring</lear>
<rear>Brutal Earring</rear>
<body>Kirin's Osode</body>
<hands>Marduk's Dastanas +1</hands>
<lring>Ambuscade Ring</lring>
<rring>Rajas Ring</rring>
<back>Letalis Mantle</back>
<waist>Thunder Belt</waist>
<legs>Byakko's Haidate</legs>
<feet>Hecatomb Leggings +1</feet>
</set>
</group>
</sets>
<!----- Variables ----->
<variables clear="False">
<var name="SongCount">1</var>
</variables>
<!----- Rules ----->
<rules>
<!----- Rules to Stop Parsing ----->
<if status="Dead">
<cancelspell/>
<return/>
</if>
<elseif type="*Magic|BardSong|Ninjutsu">
<if BuffActive="Silence|Mute|Omerta">
<cancelspell/>
<return/>
</if>
</elseif>
<elseif type="JobAbility|WeaponSkill">
<if BuffActive="Amnesia|Impairment">
<cancelspell/>
<return/>
</if>
<elseif type="WeaponSkill">
<if advanced='%SpellTargetDistance>7'>
<addtochat color="122">[%Target] out of range, [%spell] canceled.</addtochat>
<cancelspell/>
<return/>
</if>
<if status="Engaged" TPLT="100">
<cancelspell/>
<return/>
</if>
</elseif>
</elseif>
<!----- Idle Rules ----->
<if status="Idle">
<action type="Equip" when="Idle|Aftercast" set="Idle"/>
</if>
<!----- Town Rules ----->
<if Area="*Adoulin|*Bastok*|Chateau*|Heavens*|*Jeuno|Kazham|Metalworks|Mhaura|Norg|Rabao|Ru'Lude*|*San d'Oria|Selbina|Tavnazia*|*Whitegate|*Windurst*|*Zahbi" NotArea="Dynamis*">
<equip when="Idle|Aftercast" set="Town"/>
</if>
<!----- Engaged Rules ----->
<if status="Engaged">
<equip when="Engaged|Precast|Midcast|Aftercast">
<main lock="t"/>
<sub lock="t"/>
</equip>
<action type="Equip" when="Engaged|Aftercast" set="Melee"/>
</if>
<!----- Magic Rules ----->
<!--- Bard Song Rules | Macro Syntax: /console /sc var set SongCount # --->
<if mode="AND" type="BardSong" NotSpell="*Lullaby*|*Finale*|*Hymnus*|*Threnody*|*Nocturne*|*Elegy*|*Requiem*|*Mazurka*">
<!-- First Song -->
<if advanced = '"$SongCount" = "1"'>
<precastdelay delay=".2"/>
<equip when="Precast">
<range lock="t">Gjallarhorn</range>
</equip>
<command when="Precast">sc var set SongCount 2</command>
<addtochat color="207">~ ~ Current [SongCount] is [$SongCount] *Gjallarhorn* ~ ~</addtochat>
</if>
<!-- Second Song -->
<elseif advanced = '"$SongCount" = "2"'>
<precastdelay delay=".2"/>
<equip when="Precast">
<range lock="t">Gjallarhorn</range>
</equip>
<command when="Precast">sc var set SongCount 3</command>
<addtochat color="207">~ ~ Current [SongCount] is [$SongCount] *Gjallarhorn* ~ ~</addtochat>
</elseif>
<!-- Third Song -->
<elseif advanced = '"$SongCount" = "3"'>
<precastdelay delay=".2"/>
<equip when="Precast">
<range lock="t">Daurdabla</range>
</equip>
<command when="Precast">sc var set SongCount 4</command>
<addtochat color="208">~ ~ Current [SongCount] is [$SongCount] *Daurdabla* ~ ~</addtochat>
</elseif>
<!-- Fourth Song -->
<elseif advanced = '"$SongCount" = "4"'>
<precastdelay delay=".2"/>
<equip when="Precast">
<range lock="t">Daurdabla</range>
</equip>
<command when="Precast">sc var set SongCount 1</command>
<addtochat color="208">~ ~ Current [SongCount] is [$SongCount] *Daurdabla* ~ ~</addtochat>
</elseif>
</if>
<if type="BardSong" BuffActive="Nightingale" NotSpell="*Lullaby*|*Finale*|*Threnody*|*Nocturne*|*Elegy*|*Requiem*|*Mazurka*">
<castdelay delay=".2"/>
<equip when="Precast" set="Buff"/>
</if>
<elseif type="BardSong" BuffActive="Nightingale" Spell="*Lullaby*|*Finale*|*Threnody*|*Nocturne*|*Elegy*|*Requiem*">
<castdelay delay=".2"/>
<equip when="Precast" set="Skill"/>
</elseif>
<elseif type="BardSong" NotSpell="*Lullaby*|*Finale*|*Threnody*|*Nocturne*|*Elegy*|*Requiem*|*Mazurka|*Ballad*|*Madrigal*|*March*|*Minuet*|*Scherzo*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast"/>
<equip when="Midcast" set="Buff"/>
</elseif>
<elseif type="BardSong" Spell="*Ballad*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast"/>
<equip when="Midcast" set="Buff">
<legs>Aoidos' Rhingrave +2</legs>
</equip>
</elseif>
<elseif type="BardSong" Spell="*Madrigal*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast"/>
<equip when="Midcast" set="Buff">
<head>Aoidos' Calot +2</head>
</equip>
</elseif>
<elseif type="BardSong" Spell="*March*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast"/>
<equip when="Midcast" set="Buff">
<hands>Aoidos' Manchettes +2</hands>
</equip>
</elseif>
<elseif type="BardSong" Spell="*Minuet*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast"/>
<equip when="Midcast" set="Buff">
<body>Aoidos' Hongreline +2</body>
</equip>
</elseif>
<elseif type="BardSong" Spell="*Scherzo*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast"/>
<equip when="Midcast" set="Buff">
<feet>Aoidos' Cothurnes +2</feet>
</equip>
</elseif>
<elseif type="BardSong" Spell="Horde Lullaby*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast">
<range>Daurdabla</range>
</equip>
<equip when="Midcast" set="Skill">
<main>Chatoyant Staff</main>
<sub>Elder's Grip</sub>
</equip>
</elseif>
<elseif type="BardSong" Spell="*Finale*|Foe Lullaby*|*Threnody*|*Nocturne*|*Elegy*|*Requiem*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast">
<range>Gjallarhorn</range>
</equip>
<equip when="Midcast" set="Skill">
<main>Chatoyant Staff</main>
<sub>Elder's Grip</sub>
</equip>
</elseif>
<elseif type="BardSong" Spell="*Hymnus*|*Mazurka*">
<castdelay delay=".2"/>
<equip when="Precast" set="Bard_Cast">
<range>Daurdabla</range>
</equip>
</elseif>
<!--- Other Magic Rules --->
<if skill="BlueMagic|DarkMagic|DivineMagic|ElementalMagic|EnhancingMagic|HealingMagic|Ninjutsu|SummoningMagic" NotSpell="Cure*|Cura*">
<equip when="Precast" set="Fast_Cast"/>
</if>
<if spell="Cure*|Cura*">
<action type="Equip" when="Precast" set="Cure_Cast"/>
<action type="Equip" when="Midcast" set="Cure"/>
</if>
<if spell="Regen*">
<action type="Equip" when="Precast" set="Fast_Cast"/>
<equip when="Midcast">
<head>Marduk's Tiara +1</head>
</equip>
</if>
<!----- Weapon Skill Rules ----->
<if type="WeaponSkill">
<!--- Dagger Weapon Skills --->
<if spell="Evisceration">
<action type="Equip" when="Precast" set="Evisceration"/>
<if TPGT="299" NotBuffActive="Sekkanoki">
<equip when="Precast">
<lear lock="t">Bladeborn Earring</lear>
<rear lock="t">Steelflash Earring</rear>
</equip>
</if>
</if>
<if spell="Mordant Rime">
<action type="Equip" when="Precast" set="Mordant_Rime"/>
<if TPGT="299" NotBuffActive="Sekkanoki">
<equip when="Precast">
<lear lock="t">Bladeborn Earring</lear>
<rear lock="t">Steelflash Earring</rear>
</equip>
</if>
</if>
</if>
</rules>
</spellcast>
This spellcast changes your instrument for you, with some songs being exclusive to certain instruments.
You will need 4 macro's in addition to whatever else you have:
/console /sc var set SongCount 1
/console /sc var set SongCount 2
/console /sc var set SongCount 3
/console /sc var set SongCount 4
These reset your song count to the number specified in the macro so you can correct any mistakes (i.e. getting interrupted, only singing 2 songs then wanting to sing 4 new songs, etc.).