- Fixed recording bug where playback would not sound after the first entered note.
- Recording “count in” now sounds whether or not the click/metronome is disabled.
- Fixed issue where more than 6 instances of TheoryTabs on a page would crash in iOS Safari.
- Fixed issue causing examples in blog posts to play the wrong external sound file.
- Fixed issue where band gui was incorrectly showing some cached instruments as uncached
- Added Google Sign In option
- Renamed “volume” control to “mixer” and replaced the icon with a mixer / EQ icon.
- Added hide button to the right side of the band editor
- Fixed bug causing mp3 export to sometimes add a random amount of dead space at the beginning of the track
- Fixed audio sync issues with playback that would occasionally happen on the first playback after starting app.
Under The Hood
- Preparing Hookpad for allowing the note staff to be hidden
- Preparing Hookpad for allowing the chord staff to be hidden
- Update to Hookpad audio compressor module
- Updated band icon to silhouette of drum kit and guitar.
- Updated play button color to orange to make it immediately obvious
- Updated play button to show caching progress of sound assets. This was previously on the band icon but it makes more sense on the play button since it directly affects what you hear during playback.
- Updated help text in the blank state to show the keyboard shortcuts for changing duration
- Removed some text from the Hooktheory Book Series ad that shows up in the free version of Hookpad
- Fixed issue with lyrics not properly wrapping to the next line when notes extended across multiple lines
- Fixed bug with Hookpad Player crashing when there were lyrics by resolving race conditions of syllabicator init and loading the song which could cause lyrics to be parsed before syllabicator was initialized. Used cool zip() RxJs operator.
- Fixed bug with Hookpad Player not going back to the start of the song after playback completed in some cases
Under The Hood
- Implemented a “lean instrument cache” option in the Hookpad Player that only downloads and processes sounds that are required for the performance.
- Added ability to sync a mp3 file with the Hookpad performance (this feature is not public)
- Refactored PitchPlayer cache progress callback to broadcast events using postMessage API. A stream listens for each message and maps it to the action that updates the cache progress in the state. This allows multiple Hookpad Player instances on a single page to be aware of caching events on the single PitchPlayer instance
- Improved volume menu with volume, solo, mute, and level indicators for each track
- Modals for features that require purchasing hookpad now have a “refresh privileges” link that can be used to update Hookpad with purchase info following a purchase.
- Fixed a bug causing half-diminished 7th chords to have incorrect fret mappings in guitar instruments
Smart instrument caching Once you download an instrument it will be cached, and when you visit the site in the future it won’t need to be re-downloaded. This saves on bandwidth and load times and makes Hookpad feel generally more snappy.
Hookpad now works offline! Open (https://www.hooktheory.com/hookpad/app) in your browser even when you don’t have an internet connection. Assuming you’ve been to the page before, it will work (instruments you’ve used in the past will be available for use, etc.). How does this work? It’s based on a new technology from called Progressive Web Apps that represents the next generation of web technology.
Hookpad can now be installed To install Hookpad on macOS or Windows, open Hookpad in Google Chrome (this does require Chrome), click on the options icon in the top right of the browser window (three vertical dots) and you will see “Install Hookpad”. After it is installed it will appear as an app on your computer (you can put it in your dock/task bar, and it will open in it’s own window).
The band editor now shows the download progress of each instrument and the overall download progress at the bottom.
The band editor now shows if any sound patches fail to load. Below “Bright Pad” and “Dark Bass” failed to load. Clicking the yellow warning icon attempts to load all failed sound patches.
The Band Editor toggle now has a progress bar whenever instruments are being loaded or decoded
Preferences and MIDI Preferences are first-class menu bar items again. They are still also accessible from the Hookpad menu.
A new delete/backspace button has been added to the row of circle buttons (far right). The delete button can be used to delete any selection or delete the note / chord immediately to the left of the cursor.
Removed the entry mode toggle circle button. Changing from the default Hookpad 2.x entry mode to the Hookpad 1.x text-based mode is still possible in the preferences menu as well as with the keyboard shortcut ‘m’.
- Clicking magic chord or bass set with more than one chord selected shows a message saying that these features don’t work on multiple chords - this used to crash Hookpad.
- Fixed issue with notes in melody not playing after a recording session.
Under The Hood
- File -> Open now uses more performant API endpoint to fetch list of projects
- Preview Mode allows you to turn off note input and play music using the Hookpad engine using the band you’ve set up. Type 1-7 on the keyboard, play a connected MIDI controller, or click the buttons in the chord / note palette to hear a preview. The preview mode toggle is in the row of circular buttons , it has an eye icon.
- The Duration of Recorded Notes/Chords is Now Controlled By How Long You Hold Down The Key
- Recording Now Starts Immediately After Hitting The Record Button
- Keyboard Shortcut ‘r’ Lets You Access Recording Quicker
- The Record Button Now Turns Red
- Pro Tip: Use Wired Headphones or Speakers When Recording
- Updated a serializer used for memoization that caused some chords to redraw incorrectly as reported by @NecroToad in this thread Hookpad placing a v7 instead of a VII
- Fixed midi melody import (bug introduced in 2.6.0 release)
- Fixed magic chord options not redrawing after the first magic chord (bug introduced in 2.6.0 release)
- Fixed magic bass chord options not redrawing when bass scale degree is changed (bug introduced in 2.6.0 release)
- Fixed Hookpad Player bug that could cause hang / crash when zooming in so far that a single measure doesn’t fit on a line.
- 15 new electronic instruments and effects (complete list below)
- New “quick preview” option for magic chord and bass collection previews. The original full preview option with melody is still available.
- 2.5X more responsive (see performance benchmarks below)
- 20% faster app launch. Shaved 20% from the gzipped app bundle, (765 KB now vs 945 KB before).
- Playback stop now allows samples to play their release tails
- Changed several menus to make them consistent with native applications
- Settings top-level menu moved to Hookpad → Settings
- MIDI top-level menu moved to Hookpad → Midi Settings
- Hookpad → About Hookpad now shows version info and has a link to the release notes.
- Electric Piano (smart and legato)
- Electric Piano Dark (smart and legato)
- Dark Lead (smart and legato)
- Drop 1-bar
- Drop 2-bar
- Rise 1-bar
- Rise 2-bar
- Electric Piano
- Dark Piano
- Syncopation Pad
- Brassopad Offbeaat 1/8s
- Supersaw Pad
- Supersaw Pumping Pad
- Metal guitar Rock 1/8s 2
- Metal guitar Rock 1/8s 3
- Metal guitar Backbeat 1/8s
- Metal Guitar Gallops
- Metal Guitar Gallops 2
- Metal Guitar Open 1/16s
- Metal Guitar Muted 1/16s
- Deep Winds
- Dark Bass
- Acid Bass
- Acid Pluck
- Bowed String Bass Deep
- Supersaw Bass
- Alternating Thumb Bass
- Fixed issue with line breaks not deleting properly when in the middle of a selection or when deleting measures would result in a break happening on the first beat.
- Fixed pause button for magic chord auditions and bass collection auditions.
- Fixed bug causing pops on when entering notes and chords in Firefox
- Hookpad player now correctly lays out scores with pickup measures
Hardware and software configuration for performance benchmarks:
- MacBook Pro (Retina, 13-inch, Late 2013)
- 2.6 GHz Intel Core i5
- 16 GB 1600 MHz DDR3
- macOS 10.14.6 (Mojave)
- Browser: Chrome 76
- Hookpad is loaded with Arcade Madness (demo song) at global zoom of 50% and horizontal zoom of 58% to provide a challenging use case.
- All comparisons use Chrome performance profiler for benchmarking. Hookpad 2.6 is compared to Hookpad 2.5
- Absolute performance data is likely better than shown below because of overhead with the profiler in Chrome.
3.1x Faster Drag-Selection (12.5 FPS vs. 4 FPS)
To perform this test, I drag-selected a melody and chord region in Arcade Madness and recorded frames per second (FPS) in chrome profiler
4.5x Faster Note Adding (29 notes per second vs. 6.7 notes per second)
To perform this test I held down the “1” key for five seconds to enter notes in rapid succession. macOS has a “Key Repeat” setting in System Preferences that I set to “Fast” to push Hookpad as much as possible.
- In Hookpad 2.6.0, 158 notes are processed in real time over five seconds while holding down the “1” key.
- In Hookpad 2.5.0, 152 notes are entered, but it takes 22.6 seconds to process the 5-second key-press event: 5 seconds while holding the “1” key plus 17.6 seconds of processing / painting after releasing the “1” key.
2.6X faster note editing (100 ms vs. 260 ms)
To perform this test a selected note was shifted by a scale degree with the up key.
- MIDI melody import! To use: File → Import Midi Melody
- Copy & paste between projects! To use: copy any selection like normal then Edit → “Paste From Clipboard”
- File → “Open from TheoryTab Library” opens a dialog that describes how to copy and paste melody or chord clips from the TheoryTab library into your project
- Fixed bug with lyrics (RM fill in more detail here)