Welcome to the next level of Snap!
Snap! is now a community website where you can share and publish projects so others can find and remix them, and where you can ask questions and discuss the beauty and joy of computing. We invite you to check out the new site. Did you know that you can embed Snap! projects in other web pages?
We've also enhanced the programming language, making it easier to discover and to use powerful blocks for analyzing data and transforming media.
Over the next days and weeks we'll be sharing more informations about new concepts, activities and features to explore here. For now here's a first overview of what's new in Snap! 5:
- New Features:
- the "tools" library has been integrated as primitives
- export 1- /2- dimensional lists with atomic data as CSV
- export n-dimensional lists with atomic data as JSON
- import CSV, Text, or JSON via drag & drop
- option to import CSV etc. as "raw data", i.e. unparsed
- parse JSON using the SPLIT reporter
- new "aspect AT location" reporter in Sensing category for sniffing colors and sprites
- new blocks for setting and changing the stage's background color
- new "microphone" reporter in Sensing for getting volume, note, pitch signals and frequencies
- new experimental live audio-scripting support
- new video capturing and video-motion detection support, thanks, Josep!
- new "object" reporter in the Sensing category for getting a sprite by its name
- blocks for changing and querying the "flat line ends" setting
- selectors for changing and querying "draggable" and "rotation style" settings
- new sound + music "volume" feature + blocks
- new sound + music stereo "panning" feature + blocks
- new sound attribute getter reporter
- new "play sound at sample rate" command
- accept lists and lists of lists as inputs to all sound primitives
- new "play frequency" commands in the Sounds category
- pixel access primitives for bitmap and vector (!) graphics
- new "stretch" primitive for costumes, also for flipping
- new "get graphic effect" reporter
- new "get pen attribute" reporter
- new "pen down?" predicate
- new "shown?" predicate
- new "write" command in pen category (used to be "label" in tools)
- new "numbers", "is empty", "map","keep", "find", "combine" and "for each" primitives in list category
- 2 optional formal inputs for rings in MAP, KEEP, FIND, COMBINE: index and source list
- new JIT-compiler "blitz-HOF" primitives for "map", "keep", "find" & "combine" via "compile"
- new "for" loop and "if then else" reporter primitives in the Control category
- added "neg", "lg" (log2) and "2^" selectors to monadic function reporter in Operators
- added "^" reporter (power of) in the Operators category
- added "width" and "height" to the MY blocks dropdown
- added "width" and "height" as attribute selectors of the OF primitive
- added "costume" selector to the MY attributes dropdown
- added plus (+) and minus (-) keys to sensing and key hat
- special context-aware drop-downs for custom blocks
- new "stick to" submenu in the sprite context menu where applicable
- multi-line and monospaced "code" input slots for custom blocks
- new "string" library, thanks, Brian
- new "text costumes" library for generating costumes from letters or words of text
- new "World Map" extension and library for interactive maps
- graphic effects and sound attributes can now be animated with easing functions
- enhanced support for embedding Snap in other website, thanks, Bernat!
- export sounds
- Notable Changes:
- added third hsv dimension to pen colors, changed SET and CHANGE pen blocks
- added transparency (alpha) to pen colors
- new drop-down options for sprite-layer control ("GO TO front/back")
- "loop arrow" symbol for primitive loops, also available for custom blocks
- optimized in-project storage of atomic-data lists (more efficient, less space)
- remove all temporary clones when the Green Flag is clicked
- adjust bottom of STOP block to reflect the menu selection (show / hide bottom notch)
- enable dropping commands into all rings
- colors in the vector editor are now named "Edge color" and "Fill color", thanks, Brian!
- renamed "whitespace" option in SPLIT to "word"
- made the "name" attribute programmatically settable
- made the "temporary?" attibute readyble
- deprecated storing projects in the browser's localStorage
- deprecated some (useless) graphic effects
- additional "publish / unpublish" buttons in the project dialog
- buttons for saving & loading projects to disk in the project dialog
- more language options for the Text2Speech library, thanks Joan!
- Notable Fixes:
- predicates inside generic WHEN hat blocks can now pass upvars
- eliminated "clicks" when playing music notes
- "relabel" blocks with translated drop-down choices
- transforming arrayed to linked lists without loosing the last element
- using "inherit" no longer un-hides the palette in presentation mode
- relabelling custom blocks with empty numerical input slots no longer fills in zeroes
- the language menu now has a "globe" icon (so it can be found in any language)
- accept a number as input for a sound - interpret as index
- fixed many costume sizes, thanks, Brian!
- Translation Updates:
- Chinese, thanks, Simon!
- Turkish, thanks, Turgut!
- Indonesian, thanks, Emanuella!
- Greek, thanks, Alexandros!
- Catalan, thanks, Joan!
- Portuguese, thanks, Manuel!
- Spanish
- German
- French