Catalogue

Filters

Every browser has a Filters control: the keys it shows as dropdowns, in the order you list them. This page is where those keys live.

A key the catalogue does not have is skipped rather than drawn empty, so you can list generously without checking first.

A beats page with two filters on: Genre and Mood each carry a 1 badge, a Reset button sits at the right of the row, and a gold Active filters callout points to the removable Rap and Dark chips beside the sort buttons. The count reads 10 Beats and every row underneath is tagged Rap and Dark.
Two keys set, and the bar rearranges itself — a count on each dropdown that is doing something, a Reset, and a chip the visitor can take off again. The address now reads ?genre=rap&mood=dark, which is exactly what you would put in Initial Filters to open a page already here.

Tracks

KeyShows asAcceptsValues
qSearchoneFree text — title, producer and tags
genreGenremanyYour genres. A parent genre also matches its subgenres.
moodMoodmanyYour moods
artistType BeatsmanyYour type-beat artists
keyKeymanyMusical keys, written f-sharp-minor
collaboratorCollaboratormanyProducer usernames
tagsTagsmanyTag names, matched exactly
bpmBPMoneA range — see below
pricePriceoneA range over the exclusive price — see below
addedAddedonelast-7 or last-30
hookHookoneOn or off
downloadFree DownloadsoneOn or off
list_typeShowoneAll, liked, history
sortSortoneSee Sorting

The dropdowns for genre, mood, type beats, key, collaborator, BPM and price fill themselves from your catalogue. A genre nobody has used does not appear.

Kits and services

Both carry a shorter set: q, type, collaborator, tags, price, added, list_type and sort. Of those, type, collaborator and tags take many; the rest take one.

One value or several

A many key takes a comma-separated list and matches any of the values. Different keys narrow each other.

WrittenMeans
genre=trap,drillTrap or drill
genre=trap&mood=darkTrap and dark

Opening a page already filtered

The Initial Filters control takes a query string, with the leading ? optional. Use it for a page that should arrive narrowed: a Trap page, a Free Beats page, a page of everything under fifty.

You wantInitial Filters
Trap onlygenre=trap
Beats you can buy outrightprice_over=1
Exclusive rights under a thousandprice_under=1000
Trap, 140 BPM and upgenre=trap&bpm_over=140
Trap between 140 and 160genre=trap&bpm_over=140&bpm_under=160

Ranges

BPM and price take a pair rather than one value: bpm_over and bpm_under, price_over and price_under. Set one, the other, or both. Both bounds include the number you give.

Two details worth knowing: an upper BPM bound also drops tracks with no BPM set, and any price bound on tracks limits the result to items that are for sale.

Where a list draws from before any filter narrows it