CleanFrame
A personal home screen for Samsung The Frame. A starting point to fork and adapt.
Where the pizza party dont stop!
Translation pending
LifestyleGitHub @rchathamOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A work in progress...
Install Jekyll by typing the following into the command line.
$ gem install jekyll bundler
Then once you have cloned the repository and navigated to it you can preview at http://localhost:4000 by typing the following into the command line.
$ jekyll serve
The homepage’s Pizza Mixer tab expands into the mixer itself. Tap or pull it up; the same tab stays attached as its header. Tap it again, drag down, or press Escape to collapse back to the bottom tab without resetting the mix. The collapsed tab keeps a play/stop button beside its chevron, so the music can be started or stopped without opening the mixer. Pull up further for more room. On phones, scrolling the mixer also grows it to nearly full screen. Every sound is synthesized in the browser with Web Audio.
Transport: play/stop, tempo (70–180) with tap tempo, master volume and meter, and 13 groove presets in three groups:
A preset sets the pattern, tempo, swing and chord progression; key, scale and the mix stay as you set them. Add a groove by adding an entry to GROOVES in files/mixer-engine.js.
Steps: a 16-step grid for kick, clap, hat, open hat, conga, bass and chords. Tap a pad to cycle it: on, then accent, then off. On the bass row the second state is an octave up, and on the chords row it holds the chord. Key, scale, chord progression, swing, 🎲 Surprise me and Clear are here too.
Mixer: a strip per channel with mute, solo, level, tone, pan, echo send, space send and a live meter.
FX: a DJ filter (low-pass to high-pass) with resonance, drive, a tempo-synced echo, reverb ("space"), and seven performance pads: roll, echo throw, bass kill, riser, pizza horn, laser and Pizza Drop. Pizza Drop shares the homepage button’s bar-aligned build-up and bass drop; with sound stopped it produces a visual burst. Keys 1–7 play the pads and Space plays or stops. The panel ends with "Record a performance": see "Recording a performance" below.
Lights: the light show, plus "Pizzas dance to the music", which turns the wallpaper into a spectrum analyser.
Sets: share a mix as a link (#mix=…), find your recordings (and post them to the mix board), save up to four mixes in the browser, or reset to the house mix.
files/mixer-engine.js is the sound engine. It's plain data and Web Audio with no DOM, so it can be tested in Node. files/stage.js connects it to the deck.
Hit ● Rec in the mixer's top row, next to Play. It's there on every tab, and shows the running time while it records. Play the pads, sweep the filter, drop the pizza, and hit it again to stop. The recording appears as a row in "Record a performance" at the end of the FX tab (which has its own Record button) and in the Sets tab, with these buttons:
#perf=… link. Whoever opens it hears the performance replayed by their own browser.dontstopthepizzaparty.com/mixes/?m=… link that plays it for anyone. It's only shown once the mix board has a backend: see "The mix board" below.Recordings are kept until the page is closed, up to six at a time. Download or copy a link for the ones worth keeping.
How it works: a recording is two things captured in the same pass.
sanitizeTake in the engine checks everything that arrives in a link. A take can be 128 bars long.files/rec-worklet.js) or, in older browsers and on pages served without https, a ScriptProcessor. files/mp3-worker.js then writes the MP3 and the WAV in a Web Worker so the beat doesn't stutter. No browser codec is involved, so there's no .webm or .m4a anywhere and it behaves the same in every browser. A browser that can't capture audio still gets the take and the link./mixes/ plays recorded mixes. It isn't linked from the homepage yet: type mixes, mixtape, mix board or leaderboard in the password box.
files/mixes/ and an entry to _data/mixes.yml./mixes/?m=<id>, with a player, an upvote button and, when the recording's take came along, a button that replays it in the mixer.The site is static, so posted mixes, votes and the leaderboard live in a WordPress plugin, wordpress/pizza-mixes (its README has the install steps and the API). Point the site at it with mix_api in _config.yml:
mix_api: "https://your-wordpress-site.example/wp-json/pizza/v1"
This is the beginning of the README. Read the rest at the original. Read the full README ↗