Releases: sugarlabs/musicblocks
Post-GCI Release
This release reflects the contributions made during Google Code-in 2019-2020. It is being designated as a major release since there are numerous changes to the user experience (e.g., Widget UX) and many underlying structural changes (e.g., the new Block API and storage mechanism) that impact developers. An overhaul of the graphics update mechanism has lead to a major reduction in CPU usage. As far as I know, there is only one "incompatibility" with previous versions; it is in regard to synchronization: there are some projects that worked previously that may now require the use of either the Sync block or the No-clock block. (Details are outlined below.)
A tip of the hat to some of the GCI participants who worked so hard to make this release possible: Bottersnike, AndreaGon, Pidddgy and Nepaltechguy2. They not only contributed code, but also insights into the design and implementation. Also, thanks to the community members who provided them with code reviews and feedback (notably @eohomegrownapps, @fakela, and @pikurasa). It is also important to acknowledge some of our users, Teddy Dildine and Henry Rico, who have been inspiring much of the recent developments and bug fixes. Look for some of their work on the Planet. Karin Kinoshita at Gakken has also done testing and translation work.
The biggest change in terms of look and feel in this release is in regards to the widgets. Bottersnike, in working on #1544 came up with a new layout mechanism that is much more robust, yet also more flexible and responsive than the original design. Widgets are put into windows and the layout is responsive to screen size. AndreaGon enhanced the widgets further by ensuring that any changes to the blocks inside a widget clamp made while the widget was open would result in the widget itself being updated.
The new widget design
The widget adapts to small screens.
And it scales appropriately to its content.
Under the hood, Nepaltechguy2 updated the local storage mechanism in addressing #1852 to use localforage. Bottersnike did a major overhaul of the Block API in an initial stab at making Music Blocks more compliant with a "Model–View–Controller" approach to programming. Previously the definition of a block was spread across a half-dozen files. Now it is defined within a single class. The new code is much easier to read and maintain. Pidddgy reworked the interaction with the CreateJS updater to eliminate unnecessary screen refreshes that were needlessly consuming CPU cycles. The result is a 90% reduction in CPU usage when Music Blocks is idle.
Regarding the incompatibility, it is perhaps best explained with an example. If you use a "click" event to play some music, the timing of the event is not likely to be synced to the master clock. Music Blocks uses a strategy of trying to "catch up" when notes are falling behind, so without a Sync or No-clock Block, the playback will be truncated. In previous releases of Music Blocks, this synchronization strategy was sometimes bypassed. Now it is more rigorously enforced.
This will no longer work as expected: all three notes in the action block will be truncated.
A No-clock Block to the rescue.
Or, better yet, a Sync block.
New Features:
The Distance Block calculates the distance between two points.
The Synth Volume Block returns the current volume setting of a synth.
The MusicXML export option will save your project in this popular format. (See https://www.musicxml.com/)
A link to https://hacklily.org is provided when Save as Lilypond. From that link you can paste your Lilypond output into window and see your sheet music rendered.
Issues closed:
- Help div not getting centered on first time use #2121
- Improve Readability of Lilypond Slur output in MB #1449
- Volume up/down in FF stops performance #1162
- Ignoring negative note value. #1967
- keyboard in mode widget should be animated #2090
- Planet is not documented #2108
- Grid Lines for Phrase Maker #2098
- Merge two notes on phrase maker #2097
- Fibonacci (Nautilus) Example is not working (on recent rawgit) #2103
- clean/clear button does not reset mouse heading #2092
- Message for "Action Block Generated" displayed over full screen widget? #2018
- Print
Beat Count
prints a beat ahead #1890 - Add a keyboard representation under
custom mode
#1856 - Path to Save Artwork from Beginner Mode #1948
- Ignore keyboard/mouse input until MB is fully initialized #800
- Explicitly imply that the loading screen is a loading screen #1735
- migrate help/beginner mode from turtledefs to new block API #2082
- Time period of notification bar. #1993
- Do we need Play for separate voices in Rhythm Maker? #2019
- Occasional race condition on load #2076
- Redesign Widgets Component-Widget #1544
- Update documentation on how to add a new block #2075
- Rotating Mouse (or Avatar) image is cropped at points during rotation #2047
- Browser shows audio play symbol even after hitting the stop button #2077
- rawgithub Links not working in documentation/README.md #2072
- No graphic available for set instrument block #2024
- Make block from Search #2066
- Display statistics goes into infinite loading animation #2067
- Drag and Drop image file causes MB to infinitely spin #2049
- Images not shown in Phrase Maker widget dialog box. #2062
- Add Chart to guide for how the different systems of pitch and pitch movement work #846
- Regression on Widget Windows' Full screen Button #2057
- Change "Copy" AND "Paste" to just "Duplicate" #1984
- Display project title and description when loading from the Planet Component-Planet #1976
- Problems (visual) when decreasing block size #1139
- CPU cycles consumed even when idle #1247
- Support single note inside a slur? WF1-Need more info #1453
- Top Menu Disappears #1936
- preview sound when using hertz block pie menu #1939
- Stuck at landing/ homepage WF1-Need more info #2012
- Change "Add" to "Duplicate" for Note Value in Phrase Maker #1933
- Possible Choices for Search no longer display #1782
- pitch-time matrix doesn't properly restore state when using repeat Component-Widget #1156
- Meta issue for some UX ideas from Devin #1232
- Scrambled block connections #1030
- More Extensive User Testing of Rhythm Ruler Needed #870
- Sound can be "crackly" (perhaps performance related) #811
- Sample sounds on Safari Browser-Safari #264
- drum/lilypond output Component-Lilypond #258
- Change toolbar options icons no longer shown #2008
- Increase/Decrease Octave Value in Scale Degree Pie Menu #1902
- Overlapping Status Widget #1985
- Audio Playback for
Pitch Number
#1903 - distance block #1906
- Pressing "cancel" on the "are you sure to leave" dialog should not trigger saving the project locally #1344
- Alert user when
note value
is greater than 2 #1905 - New icon image for "ornament" palette Good first issue #1426
- Viola Synth #1920
- pie menu for right and left blocks (degrees) #1945
- Music XML export #1545
- No playback on project #1935
- Cannot Open Projects from Shared Links #1931
- Open with lilybin option? Component-Lilypond Component-Planet server #745
- Local Storage runs out of space #1852
- Location of each Block not specified in Guide #1956
- Audio playback needs user interaction #1938
- Save File option suggested on switching modes #1969
- Enable Horizontal Scrolling does not work #1974
- Overly verbose logging #1928
- Making widgets visible. #1964
- Bug with
Make Block
#1946 npm run serve
fails if only python 3 is installed #1924- Neighbor Block seems to escape Transposition Transformation #1943
- Pie menu for Hertz (pitch) block? #1904
As always, thanks to the Music Blocks and Sugar Labs communities for their patches, bug reports, support, and encouragement.
Spot check
We are about to launch into series of design updates and so I wanted to capture the state of the App beforehand, to make it easier to bypass these changes for those who like the old-style widgets.
Changes since v2.8 are pretty minor:
- Fix i18n problem with Floor Tom #1727
- Fix pointer clicks on Chromium/Win10 (@Bottersnike)
- Revert fix to #1919 since breaks palette drag and drop for non-macros
- Add keyboard to Mode Widget (@alec-souders-cnu)
- Catch error when localStorage runs out (#1923) (@nepaltechguy2)
- Fix #1919 (@pidddgy)
- Add macro for Chromatic Keyboard (@pidddgy)
- Improve help example for make block (#1914) (@somtochiama)
- Fix indexing problem with Mode Widget
- add button to refresh after changing language or advanced mode (@pidddgy)
- add a toascii block by default when making a keyboard block
- We start counting the heap from 1
- Allow -1 to index top of heap …
- Add the Alert for "Save Rhythm" in Rhythm Maker (#1889) (@pikurasa)
- Add the alert message on action block generated (@somtochiama)
- Fixed misterious div problem (@not-arzuaga)
- The JA version of Musical Keyboard was missing "fa" (#1878) (@pikurasa)
October Surprise
This is a release of the work done during Google Summer of Code, 2019.
Favor Kelvin worked on numerous optimizations to the code. Her work resulted in enhancements to performance and robustness. Sparsh Agarwal worked on widgets. He made a number of UX improvements to the Phrase Maker and the Musical Keyboard.
Details:
UX
- bring mice home with home button.
- reduce easeljs framerate to ease CPU consumption
- clear on load -- but not on opening load dialog
- clear graphics when loading new project
- don't auto-exit numeric piemenus
- don't autoexit note value piemenu
- Fix position of mouse icon (#1866) @tanhengyeo
- Add better keyboard icon (#1869) @tanhengyeow
- fix css bug for help div
- disable tabbing
- add message when processing keyboard shortcuts
- add tool tips for tuples
- use pie menu for bpm3 block
- Clicking on error text box hides arrows @benlangham
- Added styles for error text @benlangham
- Show and populate HTML error message instead of using canvas @benlangham
- Add error message HTML element and onclick function to hide @benlangham
- uniformity of the "x" icon in the widgets @fakela
- debounce resize buttons
- add +/- for number values
- allow for arrows to change number block value
- fixed the drag issue in help
- Meet Mr.Mouse logo changed to LOGODEFAULT (#1672)
- Encircling effect on top icons … @Aniket21mathur
- stop playback when undo is pressed
- update colors to match numbers palette
- save as collapsed
- use highlight color during playback
- add support for setting voice
- add scalar delta pitch block
- Drag icon disappear fix
- show/hide block indicator
- Layout changes to welcome tab
- update position block names
- renamed the left, right, top and bottom blocks (#1711)
- Change x default for scrollxy to 100; 100 is more obvious than 10 (#1710 …
- use increments of 15; use smaller font when there are > 20 items
- enabled the scrolling of palettes on smaller android screens (#1743) …
- inc/dec block size indicator (#1734)
- fix problem with cursor y position when aux toolbar is open
- add pie menu for on strong beat block
- add raindrop sample
- Media Palette: "left/right" and "text" blocks are confusing fixes #1709
- Action name collision avoidance is overly zealous #1846
- Enter [Return] to complete input #1845
- help scroll should not scroll header #1787
- There are some buttons with no icons on the windows of tutorial #1784
- Rhythm Blocks inside an instrument clamp should play the
G_4
default pitch #1543 - Hertz Lilypond Output Implementation #1353
- Export to BPM from Tempo widget #1766
- Color-scheme to differentiate motion vs pitch vs drums for Phrase Maker #1783
- Improvements to Pitch Pie Menu for Octave #1724
- floor tom tom --> floor tom #1727
- Set Synth to affect playback for PTM #1698
MISC
- update to Tone.JS v13.8.25
- no recorder with new tone.js
- worked on service worker to enable offline usage and caching (#1802) … @fakela
- add loudness to beginner palette (except JA) and ensure screen is ref… …
- add access to other mouse heaps
- assign default start for scalar step
- handle step pitch in music keyboard
- Rename set timbre to set instrument @tanhengyeow
- Add TRANS messages to Planet strings (#1868) @tanhengyeow
- fix bug in calculating transpositions off the top or bottom of the scale
- add missing help artwork
- don't allow blank action or box names
- give run block a default arg
- run block from block name
- allow pitch inputs to random
- adjust map pitch to drum
- don't allow 0 BPM
- don't allow neg. BPM
- fix blink -- was intermittent due to timing of refresh
- added promises to timeout @fakela
- replace timeout calls with async and await @fakela
- added promises to blocks.js and refactored the palette promises code @fakela
- switched from promises to async/await @fakela
- {fixes} security issues with dependabot (#1797) … @fakela
- added gulp task runner to musicblocks @fakela
- added async await to palette.js @fakela
- use i18n when exporting block values
- better handling of solfege mapping with modes of length !== 7
- allow avatar block to accept boxes, etc.
- adjust base volumes
- Electron-based offline build (#1751) @ukkari
- use taiko for Japanese drum
- fixes #1745 -- reset synth every time we hit play
- working on help function @jshreyans
- Fix Brazilian Portuguese translation (#1721) @afmachado
- update block graphics
- update colors
- use navigator.language to detect language for splash screen
- add rest symbols
- fix regression in box renaming
- Updated Crab Canon examples to HTML, add movable Do and guitar (#1692) @pikurasa
- Fixing Context Wheel overlapping (#1687) @Ashnidh
- Fixing Help widget overlapping (#1684)
- Fixing Pie menu overlapping (#1679) …
- restore save stacks to my blocks palette
- fix GIANT NOTE bug by using font instead of image
- Spelling error in readme (#1702)
- corrected typos in index.html (#1708)
- Fixes #1719 (Crab Canon) | On "weak beat do" is one arg block (#1763)
- Don't use number names for turtles by default
- Correct "on every note do" for help (#1723)
- fix bug where wrong note value is assigned when block division is gre… …
- add doc for mouse index heap
- Fix tuplet handling in Lilypond #1381
Show heap
does not run when in a script afterwait for
fixes #1851- (Regression?) in lilypond output that breaks .ly file #1778
- regression in advanced menus #1849
- bug in beats per minute #1840
- (pie) pitch preview drones when crossing the octave #1786
- Notes cluster together when "asked to wait" #1512
- Possible Choices for Search no longer display #1782
- Prevent Rapid Succession of Block Exports from Widgets #1781
- Collapse Notes look fine upon creation, but load funny #1780
- Corner Case that hides Palette Menu Completely #1779 -- redisplay palette after close
- Divide icon does not render (FF only?) #1773
- Notes after mistaken tie all performed simultaneously #1764
- Tones of simple1 and sine are the same #1758
- Name display bug on Tutorial #1761
- Fixed timber widget synthesizer issue (#1760)
- Should not allow to add multiple filters of same kind #1155
- drag icons fix (#1707)
- fixes increment help string problem identified in #1568
- On weak beat do" looks like a mess #1715
- Drum Consolidation for Rhythm in PTM #1699
- Moveable = True for Crab Canon Example #1281
- Clicking cancel on file save causes filename to be "null". #1690
- Pen does not follow mouse cursor #1680
PHRASE MAKER
- use default BPM factor when previewing notes
- track duplicate note blocks --- see #1156
- add bellset for do5
- preserve format of starting pitch when using step pitch in Phrase Maker
- Change Phrasemaker defaults to Notename = Alphabet (#1871) @pikurasa
- added the promises to timeout in pitchtimematrix.js @fakela
- added columns edit functions @sparsh0204
- new label colors for ptm
- add separate colors for notes and drums in phrase maker
- fix regression in tuplet processing for matrix
- Corrected phrase maker tuplet display error @sparsh0204
MUSIC KEYBOARD
- fixes add note -- part of #1877
- fix add/delete/divide -- part of #1877
- convert from arrays to objects
- add set instrument entries
- partial fix to #1877 -- store objid in layout
- add changes for music keyboard so keyboard and box are both visible.
- display matrix of notes as they are played.
- Change selectedNotes from array to JSON object @lucasturci
- change notesPlayed array to json object @lucasturci
- use voice in playback
- fix regression in note duration; key press highlight
- add color to indicate a key is pressed. fix problem with mouse out ra… …
- Advanced mode and other bug fix for Musical Keyboard @sparsh0204
- add, divide, delete menu for nite durations @sparsh0204
- fixes #1822 -- enable scalar step inside Music Keyboard
- Keyboard key top corner click fix (#1824) @sparsh0204
- new added note adds next note @sparsh0204
- reverse order of blocks inside music keyboard
RHYTHM RULER
- merge rulers when saving rhythms for PTM
Workshop Release
This release is a result of several months of collaboration with the education team in Japan in preparation for a series of workshops scheduled for early 2019. It also incorporates a number of improvements to the code contributed by participants in Google Code In 2018. The temperament widget and Music Keyboard widgets were developed as part of Google Summer of Code.
Austin George, Devin Ulibarri, Freddie Nicholson, sarthakagr104, Sumit Srivastava, Ashnidh, aniket21mathur, kuaLeY, sdziuda, Mayank Kuthar, Euan Ong, Nathan Jacob, Eric Yoon, ukkari, Ritwik Abhishek, Riya Lohia, Ruben Rodriguez, and Debasish Sahoo contributed commits to this release.
Major enhancements include:
- Pie Menus for most music-related selectors
- Context menu for common block operations
- New toolbars
- Refactoring of the palette code
- Collapsible graphics canvas
- Temperament widget
- Music keyboard widget
- New block colors
- New icons
- Support for Japanese (both Kanji and Kana)
- Beginner/Advanced modes
- Numerous improvements to the Planet code
- Overhaul of help system, including help for individual blocks
Issues addressed in this release include:
#623 Toolbar buttons overlap on narrow screen
#782 lilypond should not use abbreviations for custom names
#1130 -- reset event handler on run
#1173 After pressing stop button in the pitch-time-matrix panel it still plays one more note
#1200 Examples tweaks
#1201 -- ensure synth is available before setting volume
#1202 Examples tweaks
#1206 -- remove playback output when saving to lilypond
#1208 Changing new turtle to new mouse
#1210 -- regression in old-style rhythmicdot block
#1211 Disable "Save as PDF" when running offline
#1214 Temperament lookup table
#1221 - chrome security error
#1226 Pie menu
#1232 use reasonable default values whereever possible when args are missing
#1234 Add pie menu for note values
#1237 Added pythagorean tuning
#1242 Update README.md
#1245 Downloading My Project.html without clicking save
#1253 -- add more options for pitch number
#1258 Added a draft japanese translation of the README
#1259 Created a draft of a comprehensive FAQ, based on real questions
#1262 reduce some timeout
#1263 Top Max needed for Rhythm Ruler (and Note Value) enhancement good first issue
#1264 Planet for MB -- Perhaps "Music" is toggled on by default?
#1268 Adding Sachiko's edits | Need to address "factor"
#1270 translated new strings like 音律
#1271 change based on found errors
#1273 ja.po changes based on CS help
#1275 some preliminary changes to toolbars in japanese based on Gakken guide
#1278 Correct evaluation of createjs.Tween.hasActiveTweens()
#1280 Hide the Palette when clicked again
#1283 Inversion clarification
#1286 changes based on ukkari feedback
#1288 Keyboard documentation
#1293 -- on strong beat...
#1297 Just make kana
#1298 User is asked two times to save when saving block art
#1300 made changes based on issues I found working on ja-kana
#1302 -- look for a box with the text input name
#1307 -- add extra check to see if note value has an actual value; add check to make sure min < max in random function
#1311 Palette selector
#1312 Kana support
#1317 Call "Movable" "Movable Do"
#1318 Synth Effects (e.g. Vibrato) only seem to work on default synth
#1321 more pie menus
#1321 Pie Menu for Crescendo and Scalar/Semi-tone Interval and Transpose etc Needs testing enhancement
#1322 Pitch Slider does not have smooth gradient
#1323 "Duo synth" block is not working properly (also text is overlapping)
#1325 block decorations not saved when saving block artwork
#1328 remove deprecated reference to helpContainer that broke planet
#1329 Proposal: Reword what we have for planet server design
#1331 new copy copy
#1332 -- scale piemenu for kana
#1333 Display is Blurry (tested on Abrowser 61.0.1 and Chromium 70
#1333 revert to some rounding of block position
#1335 2018 09 05 japanese edits and additions
#1336 add noise block; remove noise from voices list
#1337 Chord Block Macros
#1347 A state of no Start Blocks and error to start "new project"
#1349 Status Widget issue for multiple hertz output
#1350 Print block turns into action block when pulled from palette menu in beginner mode Critical bug
#1351 Show value of box during "run block by block"
#1360 Pressing down arrow in FF scrolls the window down (until nothing is visible)
#1361 -- use current note when playing stand alone scale degree
#1364 Duplicate Factor Block moved to Flow Palette?
#1365 2018 09 05 more japanese edits and additions
#1367 2018 09 24 ui sketches
#1369 Close hover (too far to right???) for palette
#1370 Fixed Typo | truee -->> true
#1373 Language Preference Message for Kana displays as non-kana (JA) Japan Needs testing
#1374 deleted unnecessary quote in kana
#1376 2018 09 27 kana needs spaces
#1379 Widgets Fullscreen?
#1380 should fix overlapping palette problem
#1382 add collapsible interval block
#1382 Collapsible Chord and Note Block bug
#1386 Pitch-Drum Mapper -- Octave Number is not Piping Through
#1388 Equal to Block Does not Connect to Flow Blocks
#1395 Errors: The provided float value is non-finite. (PTM or stairs)
#1396 The Palette Creeps down the screen upon save
#1398 Re-initiating keyboard adds more of the same keyboard keys bug widget
#1401 -- check storage setting when testing for mode
#1404 more robust error checking
#1406 fixes regession that was reported
#1407 more robust logic for setting beginner mode.
#1408 add About page to tour
#1408 change to inline html
#1410 don't ever hide the toolbar
#1411 Cannot Collapse step-up down
#1413 selector background colors don't match
#1414 No sample sound (non-default) observed on Chrome on Mac
#1415 Change collapsed step pitch from "+/- value" to "up/down value"
#1419 Copy button to Planet
#1421 draw on scrolling canvas
#1421 Issue with Scroll xy
#1422 Scale Degree is set to chromatic scale?
#1425 Translated single words and short phrases |ignore new help strings
#1427 not using promot() when it runs with Electron
#1429 -- save playback when recording
#1430 Edits to SVG's in documentation-ja
#1431 Improvements to kana SVG's in documentation
#1437 Change the default note blocks
1444 "Do Mi Sol", not "Do Re Mi" | This creates an C maj arpeggio
#1446 clean up buttons on resize
#1446 clean up buttons on resize
#1447 Project Art draws over top-right icons
#1451 Two notes within a slur as our example
#1452 Going from resized window to fullscreen window does not result in resize
#1462 Add Koto and Banjo sounds
#1465 -- reorder button insertion
#1466 -- alwys close aux menu when creating new project
#1474 -- always show G4 pitch block in beginner mode except in Japan
#1488 Updated block artwork in the guide 3.2.1-3.2.5
#1489 Added ornament palette icon
#1490 Porting toolbars from easel.js to HTML
#1491 Add three Blocks to Music Blocks Block Help
#1492 Music Blocks: Documentation Cleanup
#1498 turtle.js docstrings
#1499 Rounded tooltips
#1500 -- move palette menus to lower right corner
#1500 tweak palette position
#1502 -- new artwork for disconnected state
#1503 -- rename block
#1511 -- when the meter block is updated, the BPM blocks are updated
#1514 Music Blocks Guide Artwork
#1517 Update block artwork of section k-n
#1518 - add save as HTML to new toolbar
#1519 -- set default value to 55
#1521 -- add current mode block; rename key to current key
#1522 -- add current meter block
#1523 Replaced placeholder translation function in Planet
#1525 2018 11 08 update examples row your boat
#1527 Added blocks to music blocks block help
#1528 Update guide_addingblocks.md
#1532 Home Function resets blocks differently when auxiliary menu is open
#1532, moved some init code from index.html to toolbar.js, standardised tooltip delay times
#1532, moved some init code from index.html to toolbar.js, standardised tooltip delay times
#1533 fix one spelling error "scaler" --> "scalar"
#1534 + made some small toolbar code improvements
#1538 Help widget opens on every resize
#1547 Update Block Guide Artwork
#1548 Material Design Icons not Loading (in Abrowser/Firefox)
#1550 Collapsible Note Blocks never return to original state after zoom
#1551 2018 11 12 input revised gakken ja
#1554 Better responsiveness when toolbar width < 400px
#1555 Formatted activity.js. Reordered toolbar code.
#1558 Corrected transcription error for ja.po
#1563 add more row height
#1567 Changed order of save dropdown items and reformatted items.
#1568 translated words not going through pipeline
#1568 translated words not going through pipeline
#1571 A special case for cartesian+polar
#1571 new labels for grid button
#1573 Modifications based on latest review by Gakken, Kinoshita
#1574 -- consistant and consoldated strings
#1575 Documents singly nested functions
#1578 Made the remaining priority changes to ja.po
#1579 2018 11 29 kana
#1580 Fixing logo hover
#1582 menu overlap
#1587 Requested Updates to JA and Kana made
#1588 -- stop play when erase button is clicked
#1594 --- was a layer ordering problem
#1595 -- set color shouuld remember shade and chroma
#1596 fix block recentering regression
#1599 fix race condition
#1602 Update README.md
...
Planet Release
This release includes a migration to a new Planet Server written by Euan Ong (@eohomegrownapps). The new server has a number of features, including project remixing, searching, sorting, and paging. It also supports tags and descriptions. In conjunction with the new server is a refactored client interface to the planet, also written by Euan. Finally, there is also a moderation portal for maintenance of the Planet database.
Planet-related issues addressed in this release:
#1050 Mac OS -- Extract .tb from Safari's idiosyncratic "webarchive" format planet server
#1015 Name for loaded file instead of "untitled" (if not trashed in between) enhancement planet server
#1012 New methods for (automatic) saving enhancement planet server
#999 Saving files does not work in browser extension. bug extension planet server
#993 Easier way to open files from saved files? enhancement planet server
#937 Trashing a project doesn't remove the thumbnail bug planet server
#905 Explore quicker ways to have access to planet examples enhancement planet server
#899 Need an easier way to access the examples in examples folder enhancement planet server
#764 describe ".tb" as a Music Blocks file enhancement planet server
#452 Publish option takes very long time to do its work in planet view Major enhancement planet server
#387 "this.publish" function in js/samplesviewer.js can overwrite server files Major bug planet server
Other changes of note:
- Save project files as HTML instead of TB
- Add debugging guide
- New Guarani and Nepali strings
- Add reverse heap so we can treat the heap like a FIFO
- Upgrade to Tone.js r12
Since migrating to the new planet server, we are now hosting Music Blocks at https://musicblocks.sugarlabs.org.
Tip of the hat to the contributors to this release:
@riyalohia @pikurasa @SanjeshMulmi @a-ritwik @Ananthavijay Martin Oesterreich @Hrishi1999 @ManveerBasra
Spot Release
This release includes the bulk of the improvements made to the code during Google Code In:
- New blocks for Register, Scalar Neighborhood, Make Block, etc.
- Export as WAV
- UI bug fixes and enhancements, including middle scroll button enabled
- Improvements to Lilypond export
- Numerous updates to the Guide
- Additional translations in Spanish, Chinese, and Japanese
Thanks to pikurasa, riyalohia, eohomegrownapps, kipply, Hrishi1999, EmilyOng, shivamchadha, and SanjeshMulmi
Enhancements
- Hide blocks during playback (#1122)
- Do we want a pitch block generated for each pitch in pitch staircase? (#1121)
- Logarithmic up/down toggle for tempo widget? (#1124)
- Use busy cursor in pluginsviewer.js (#353)
- Migration to Tone.js v11 Chrome Critical tonejs api (#1110)
- More options for "relative" octave (#611)
- What is the highest possible limit of tempo? (#1112)
- Rhythm Ruler to export Simple Tuplets (and Tupletify) (#603)
- Cursor is not pointer on hover (#938)
- Make block (#825)
- Highlight mouse when draggable (#1104)
- Middle scroll button (mouse) (#722)
- Figure out if it is a flow or an arg block in blocks.js (#377)
- Delete orphan Action Block when its clamp is deleted. (#749)
- Pitch time matrix should export new accidentals block (#1099)
- New approach to storein box (#1090)
- Register Block (#906)
- Instrument visuals for Pitch-Time Matrix (#557)
- Right navigation UI improvement (#940)
- Should we reset the master clock after a waitfor block exits? (#521)
- Hide/show blocks (#824)
- Proposed change to make mode/key more transparent key/mode/pitch-sets (#889)
- Proposal for changes to Set Key key/mode/pitch-sets (#832)
- Box naming reliability issue (#695)
- Progress bar for playback (#802)
- Bias and scaling in logo.js (#331)
- Long press to collapse all blocks; extra long to open all blocks (#994)
- Lilypond tempo (#732)
- Do we want tempo to be in relationship to a note value? (#817)
- Would comment-like functionality be useful? (#845)
- Add mode values to mode label (#696)
- Numeric argument to mode in set key block (#880)
- How would we like to visualize turtle movement with matrix playback? (#297)
- Document new interval and transpose blocks in the guide (#882)
- Support multiple voices for (nested) set drum blocks + rhythm blocks (#1084)
- Seeking proposals for better image ideas for planet. (#854)
- Rhythm Blocks in "Set Drum" should perform specified drum sample with specified rhythm block rhythm (#578)
- Scalar upper/lower Neighbor Block (#909)
- Add accidental block to guide (#1083)
- Add an image in the guide to help users better understand inversion (#1058)
- Accidentals block (#877)
- No way to tell if a program has finished compiling when using mobile devices (#1007)
- Way to access languages from the UI? (#1011)
- Courtesy accidentals (#1069)
- Default actions for pitch and rhythm blocks (#1075)
- Use 𝄪 and 𝄫 for double sharp and double flat (#873)
- Document Timbre widget (#838)
- Pitch time matrix exporting of sharps and flats (#878)
- Separate synths per voice tonejs api (#1074)
- Harmonics block (#912)
- Search improvement (#1071)
- Improve search function (#944)
- Support for different keys in different voices (#861)
- Button to remove added plugins (#1065)
- Scalar (tonal) inversion (#879)
- Rename sharp/flat blocks so that symbol on their respective blocks (#851)
- More consistent handling of volume (#769)
- Service worker code (#790)
- More flags for project URLs (#548)
- ABC export (#223)
- Key for "Set Key" piped to Lilypond (#847)
- Print = "..." piped to Lilypond as annotation (#910)
- Document g major scale in guide (#883)
- Lyric block? (or is print good enough?) (#948)
- Deprecate the drum block? (#1057)
- Moving synth strings to individual files (#977)
- Export as .wav (#866)
- Add arg to dot (#897)
- Increase/decrease max (#771)
- Search function within palette (#743)
- Dialogue prompt when saving as Lilypond (#196)
- Add drag button to widget graphics in guide (#676)
- Need an example program that maps pitch and rhythm to the graphics (#924)
- Pitch-time-matrix cell selection (#786)
- Position of output of status widget when running (#850)
##Bug Fixes
- .WAV record fails when moving to another window (#1119)
- Mi 1/3 of Do,Re,Mi (#1120)
- Is .WAV recording full value of final note(s)? (#1123)
- Pitch block's name and octave takes other irrelevant blocks. (#1128)
- Repeated sections of Action Blocks do not seem to be piped to PTM (#1146)
- Replace radio buttons with check-boxes (#1154)
- Multiple highlighted buttons at the same time? (#1149)
- Lost the expand/collapse area (#1142)
- [Bug] Tie notes (#1040)
- Easel.js v1.0 DataURL issue (#1132)
- In conditional statement comparison between colors? (#1129)
- "Playback is ready" message when saving wav (not needed) (#1117)
- Play/Pause and Close button doesn't work. (#1114)
- Bugs in tempo widgets (#1111)
- Volume is low (#1113)
- Solve the "Hardware Acceleration" Riddle (#1109)
- Improved Tuplet Parsing Lilypond (#61)
- Scroll crops Icon (#983)
- Blocks are visually separated when stack is long/complex (#1009)
- Dragging is not immediately responsive (#898)
- Click/Drag Position is offset from visual (#1091)
- Accidentals to be piped faithfully to PTM (#1098)
- Erratic behaviour in music matrix if play button is pressed before the music ends playing (#1097)
- Collapse button artifacts (#735)
- Dropdown for pitch selection is offset from its original position. (#826)
- Clamp size limit? wontfix (#1095)
- Trashing a project doesn't remove the thumbnail (#937)
- Sometimes silence block does not appear (#805)
- Ui issues (tested on Mac) (#679)
- Disappearing start blocks (#716)
- Lilypond output for "swing" as tempo marking (#436)
- I18n broken for selectors on Firefox (#1093)
- Performance degradation in FireFox (#1085)
- Action Block not appearing in palette (#829)
- "Partial" for Lilypond not output correctly (#1061)
- Dot block is messing up Lilypond output (#1089)
- Rests should not appear with any pitch blocks | Lilypond: rests should not appear as a chord (#1006)
- Rests not going to Lilypond (observed on github.io) (#827)
- Menu button rotation issue (#1022)
- High Harmonics sound incorrect (#1078)
- Pitch time matrix won't play sounds after Music Blocks window loses focus (#1052)
- Safari does not "download" the .tb files, it just opens a new window with the code in it. (#37)
- Bug when using playback after choosing play back slowly (#901)
- Race condition with action block palette (#891)
- Musicblocks is not starting in Safari (#1021)
- Copy/Paste is unreliable (#834)
- Error on pressing Run fast button while Rhythm Ruler widget is open (#1062)
- Shortcuts need to be disabled when Planet is open (#1063)
- Backspace does not work on rhythm ruler (#508)
- Number Blocks problems (#915)
- Play music confusion (#923)
- Setters don't get reflected in the playback code (#1046)
- Copy/Paste Does Not Reset (#987)
- Can't change timbre in browser extension. (#998)
- Opening new projects while current one is playing cause glitches (#1025)
- 'Disable Scrolling' Does Not Work (#1017)
GCI Progress 2
A spot release to make available some useful patches contributed by Google Code-in participants:
- fixed focus problem when using selectors and updating number and text blocks
- keyboard shortcuts for typing notes
- updated help section
- guides in both Japanese and Chinese
- new example projects
- new Japanese translations
- more robust handling of silence block removal
- fixed problem with saving Boolean block values
- fixed problem with reskinning mouse after reset
- fixed problem with SVG export
Tip of the hat to:
pikurasa pipix51 EmilyOng eohomegrownapps kipply aryan-02 sanatankc Vrondir
GCI progress
After almost two weeks of work by students as part of the Google Code-in contest, there are enough bug fixes to merit a spot release.
Issues addressed since the last release:
- Incorrect Calculation for dot #969
- Warning when zero value for note value #962
- Help Images Not Up-To-Date #960
- Planet input boxes broken bug #956
- Panels refuse to scroll down #947
- Start Blocks Unable To Work Concurrently #945
- Focus search bar not working #943
- Settings hover information exceeds bounds #939
- Tutorial UI improvement #936
- Broken i18n #935
- A new method for multiply/divide note value #925
- Play music slowly is broken bug #922
- Add noise as a feature #911
- Impossible to delete all blocks after using + from planet #903
- Add up arrow to planet icon for "upload to planet" option #900
Many thanks to our new and continuing contributors: @kipply, @pipix51, @eohomegrownapps, @EmilyOng, and @pikurasa
Release v2.2 (Pre GCI)
This release is intended to provide a stable and consistent platform prior to the start of the Google Code-in (GCI) contest. (It is anticipated that many changes will be made to the code during GCI.)
The bulk of the changes involved a refactoring of the code for determining intervals and transpositions as regards changes to key and mode.
Specific changes since v2.1 include:
- added down major and minor macros to intervals palette
- added doubly block to intervals palette
- added interval name block -- relevant to #608
- make it easier to select a block inside a clamp
- added scalar interval measure -- relevant to #608
- ensure event handler is removed -- related to #903 and #891
- Modified Status Macros to have BPM (#904) (pikarusa)
- fixes problem with note counter inside note block
- fixes #893 (neither the note counter nor the interval measure trigger cascading block expansion)
- fixes #896 (note counter double counts when notes are embedded inside notes)
- fixes #892 (embedding note counter (or interval measure) inside of a note block fails)
- partial fix to #891 (race condition with action block palette)
- added support for interval measurement with Hertz block
- added semitone interval measure
- calculate octave based on proximity to tonic in movable solfege
- gmajor matrix sorted from G5 (top) to G4 (bottom)
- added more details re how to make a macro in the comments
- fixed regression in attribute label selector
- refactoring of transposition code so that it is applied before interv… …
- when advancing by scalar steps, always land within the notes of the c… …
- map solfege first when calculating scalar interval
- fixes #888 (macros collision)
- related to #862 (Accidentals accurate to "set key" selection)
- added instructions for making macros as a comment
- fixes #841 (Rethink Absolute Interval)
- fixed interval calculation to properly account for octaves
- play extra note on unison interval
- fixed problem with set key in converting solfege
- have default osc time match a quarter note
- changed name of "step pitch" to "scalar step (+/-)" to be consistent
- added G Major option for pitch-time matrix on the widgets palette
- fixes #875 -- enable step pitch inside matrix
- consider key and mode in calculating step size
- added octave math to scalar transpose macros
- added scalar interval macros
- added mode length block; use more consistent block names
- movable should be defined by voice
- add unison, second, third, etc. as per #839
- converted major, minor, perfect, etc. to use absolute interval macro ex… …
- added absolute interval block
- fixed problem with bpm adder
- fixes #865 (bug with absolute interval)
- fixes #858 (Beats Per Minute does not seem to be changing performance tempo)
- Loading splash now centered in viewport (#863) @eohomegrownapps
- added support for scalar transposition
- Fixed issue #852 (A few UI issues in Planet) @eohomegrownapps
- added movable block
- added Boolean block
- fixed some issues with playback vis-a-vis synthVolume; add synthVolume
- added crescendo support to individual synthesizer volume
Thanks to Devin Ulibarri and Euan Ong for their contributions to this release.
Music Blocks Release 2.1
This is a maintenance release of Music Blocks. It is prompted primarily by some new translations and a tweak to the synthesizer interface that has a major impact on performance.
Specific changes of notes:
- Update to Aymara by Edgar Quispe
- Revert to initializing synthesizers on demand (improves performance on small devices)
- New examples by Devin Ulibarri: interactive scales, simple crab canon, harmony, fifths and sixths with thirds then circle 4ths
- Other new examples: music tree, fifths and sixths
- Improvements to the scale degree code (#833)
- Fixed problem with nested transposition blocks (#831)
- Fixed problem with flats and sharps when playing backwards (#828)
- Fixed playback problems (#813 #810)
- Fixed some issues with copy/paste (#809)
- Enabled notes to be embedded inside notes (#803)
- Fixed problem with interval blocks
- Fixed table of contents in the Guide (#808)
Tip of the hat to Devin Ulibarri, Edgar Quispe, and Euan Ong for their contributions to this release.