diff --git a/code/datums/action.dm b/code/datums/action.dm
index d3ee25bbd76..27c38793562 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -335,6 +335,9 @@
/datum/action/item_action/YEEEAAAAAHHHHHHHHHHHHH
name = "YEAH!"
+/datum/action/item_action/laugh_track
+ name = "Laugh Track"
+
/datum/action/item_action/adjust
/datum/action/item_action/adjust/New(Target)
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 28110116ab4..dc149d1d75b 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -61,3 +61,40 @@
if(!H.can_hear())
continue
M.emote("flip")
+
+#define LAUGH_COOLDOWN 30 SECONDS
+#define LAUGH_COOLDOWN_CMAG 10 SECONDS
+
+/obj/item/clown_recorder
+ name = "clown recorder"
+ desc = "When you just can't get those laughs coming the natural way!"
+ icon = 'icons/obj/device.dmi'
+ icon_state = "clown_recorder"
+ item_state = "analyzer"
+ w_class = WEIGHT_CLASS_SMALL
+ slot_flags = SLOT_BELT
+ materials = list(MAT_METAL = 180, MAT_GLASS = 90)
+ force = 2
+ throwforce = 0
+ drop_sound = 'sound/items/handling/taperecorder_drop.ogg'
+ pickup_sound = 'sound/items/handling/taperecorder_pickup.ogg'
+ actions_types = list(/datum/action/item_action/laugh_track)
+ var/cooldown = 0
+
+/obj/item/clown_recorder/attack_self(mob/user)
+ if(cooldown > world.time)
+ to_chat(user, "The tape is still winding back.")
+ return
+ playsound(src, pick('sound/voice/sitcom_laugh.ogg', 'sound/voice/sitcom_laugh2.ogg'), 50, FALSE)
+ if(!HAS_TRAIT(src, TRAIT_CMAGGED))
+ cooldown = world.time + LAUGH_COOLDOWN
+ else
+ cooldown = world.time + LAUGH_COOLDOWN_CMAG
+
+/obj/item/clown_recorder/cmag_act(mob/user)
+ if(!HAS_TRAIT(src, TRAIT_CMAGGED))
+ to_chat(user, "Winding back speed has been improved by the bananium ooze!")
+ ADD_TRAIT(src, TRAIT_CMAGGED, CLOWN_EMAG)
+
+#undef LAUGH_COOLDOWN
+#undef LAUGH_COOLDOWN_CMAG
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm
index 9a40c3bc0ce..c4f81f18415 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm
@@ -10,6 +10,7 @@
new /obj/item/clothing/shoes/clown_shoes(src)
new /obj/item/radio/headset/headset_service(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
+ new /obj/item/clown_recorder(src)
new /obj/item/bikehorn(src)
new /obj/item/reagent_containers/spray/waterflower(src)
new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(src)
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 36026dade05..d6a323d4c06 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/sound/voice/sitcom_laugh.ogg b/sound/voice/sitcom_laugh.ogg
new file mode 100644
index 00000000000..4a0e035e0e5
Binary files /dev/null and b/sound/voice/sitcom_laugh.ogg differ
diff --git a/sound/voice/sitcom_laugh2.ogg b/sound/voice/sitcom_laugh2.ogg
new file mode 100644
index 00000000000..af35ec4d585
Binary files /dev/null and b/sound/voice/sitcom_laugh2.ogg differ