diff --git a/js/activity.js b/js/activity.js index f65a01898e..627a2a25fe 100644 --- a/js/activity.js +++ b/js/activity.js @@ -6572,9 +6572,7 @@ class Activity { that.refreshCanvas(); } catch (e) { that.errorMsg( - _( - "Cannot load project from the file. Please check the file type." - ) + _("Cannot load project from the file. Please check the file type.") ); // eslint-disable-next-line no-console console.error(e); diff --git a/js/blocks/ActionBlocks.js b/js/blocks/ActionBlocks.js index 2dc4ef1f76..07730147d8 100644 --- a/js/blocks/ActionBlocks.js +++ b/js/blocks/ActionBlocks.js @@ -1207,9 +1207,7 @@ function setupActionBlocks(activity) { this.setHelpString([ _("Each Start block is a separate voice.") + " " + - _( - "All of the Start blocks run at the same time when the Play button is pressed." - ), + _("All of the Start blocks run at the same time when the Play button is pressed."), "documentation", "" ]); @@ -1297,9 +1295,7 @@ function setupActionBlocks(activity) { * @type {string[]} */ this.setHelpString([ - _( - "The Action block is used to group together blocks so that they can be used more than once." - ) + + _("The Action block is used to group together blocks so that they can be used more than once.") + " " + _("It is often used for storing a phrase of music that is repeated."), "documentation", diff --git a/js/blocks/BooleanBlocks.js b/js/blocks/BooleanBlocks.js index d3ba70be5e..5f4e3468d4 100644 --- a/js/blocks/BooleanBlocks.js +++ b/js/blocks/BooleanBlocks.js @@ -389,9 +389,7 @@ function setupBooleanBlocks(activity) { * @type {string[]} */ this.setHelpString([ - _( - "The Greater-than block returns True if the top number is greater than the bottom number." - ), + _("The Greater-than block returns True if the top number is greater than the bottom number."), "documentation", "" ]); @@ -495,9 +493,7 @@ function setupBooleanBlocks(activity) { * @type {string[]} */ this.setHelpString([ - _( - "The Less-than block returns True if the top number is less than the bottom number." - ), + _("The Less-than block returns True if the top number is less than the bottom number."), "documentation", "" ]); @@ -596,9 +592,7 @@ function setupBooleanBlocks(activity) { * @type {string[]} */ this.setHelpString([ - _( - "The Less-than-or-equal-to block returns True if the top number is less than or equal to the bottom number." - ), + _("The Less-than-or-equal-to block returns True if the top number is less than or equal to the bottom number."), "documentation", "" ]); @@ -697,9 +691,7 @@ function setupBooleanBlocks(activity) { * @type {string[]} */ this.setHelpString([ - _( - "The Greater-than-or-equal-to block returns True if the top number is greater than or equal to the bottom number." - ), + _("The Greater-than-or-equal-to block returns True if the top number is greater than or equal to the bottom number."), "documentation", "" ]); diff --git a/js/blocks/DictBlocks.js b/js/blocks/DictBlocks.js index 72ee557397..c1c73f4274 100644 --- a/js/blocks/DictBlocks.js +++ b/js/blocks/DictBlocks.js @@ -59,9 +59,7 @@ function setupDictBlocks(activity) { * @type {string[]} */ this.setHelpString([ - _( - "The Show-dictionary block displays the contents of the dictionary at the top of the screen." - ), + _("The Show-dictionary block displays the contents of the dictionary at the top of the screen."), "documentation", "" ]); diff --git a/js/blocks/DrumBlocks.js b/js/blocks/DrumBlocks.js index 5fdb45f8b7..5e04f2bb25 100644 --- a/js/blocks/DrumBlocks.js +++ b/js/blocks/DrumBlocks.js @@ -379,18 +379,14 @@ function setupDrumBlocks(activity) { */ if (activity.beginnerMode && this.lang === "ja") { this.setHelpString([ - _( - "The Set drum block will select a drum sound to replace the pitch of any contained notes." - ), + _("The Set drum block will select a drum sound to replace the pitch of any contained notes."), "documentation", null, "rhythmruler2" ]); } else { this.setHelpString([ - _( - "The Set drum block will select a drum sound to replace the pitch of any contained notes." - ) + + _("The Set drum block will select a drum sound to replace the pitch of any contained notes.") + " " + _("In the example above, a kick drum sound will be played instead of sol."), "documentation", diff --git a/js/blocks/ExtrasBlocks.js b/js/blocks/ExtrasBlocks.js index 3ab56451eb..b912380eab 100644 --- a/js/blocks/ExtrasBlocks.js +++ b/js/blocks/ExtrasBlocks.js @@ -422,9 +422,7 @@ function setupExtrasBlocks(activity) { super("comment"); this.setPalette("extras", activity); this.setHelpString([ - _( - "The Comment block prints a comment at the top of the screen when the program is running in slow mode." - ), + _("The Comment block prints a comment at the top of the screen when the program is running in slow mode."), "documentation", "" ]); diff --git a/js/blocks/FlowBlocks.js b/js/blocks/FlowBlocks.js index 62a11891b6..516c9924b5 100644 --- a/js/blocks/FlowBlocks.js +++ b/js/blocks/FlowBlocks.js @@ -123,9 +123,7 @@ function setupFlowBlocks(activity) { this.setHelpString([ _("The Duplicate block will run each block multiple times.") + " " + - _( - "The output of the example is: Sol, Sol, Sol, Sol, Re, Re, Re, Re, Sol, Sol, Sol, Sol." - ), + _("The output of the example is: Sol, Sol, Sol, Sol, Re, Re, Re, Re, Sol, Sol, Sol, Sol."), "documentation", null, "duphelp" @@ -896,9 +894,7 @@ function setupFlowBlocks(activity) { if (activity.beginnerMode && this.lang === "ja") { this.setHelpString([ - _( - "Conditionals lets your program take different actions depending on the condition." - ) + + _("Conditionals lets your program take different actions depending on the condition.") + " " + _("In this example if the mouse button is pressed a snare drum will play."), "documentation", @@ -907,13 +903,9 @@ function setupFlowBlocks(activity) { ]); } else { this.setHelpString([ - _( - "Conditionals lets your program take different actions depending on the condition." - ) + + _("Conditionals lets your program take different actions depending on the condition.") + " " + - _( - "In this example if the mouse button is pressed a snare drum will play, else a kick drum will play." - ), + _("In this example if the mouse button is pressed a snare drum will play, else a kick drum will play."), "documentation", null, "elifhelp" @@ -961,9 +953,7 @@ function setupFlowBlocks(activity) { if (activity.beginnerMode && this.lang === "ja") { this.setHelpString([ - _( - "Conditionals lets your program take different actions depending on the condition." - ) + + _("Conditionals lets your program take different actions depending on the condition.") + " " + _("In this example if the mouse button is pressed a snare drum will play."), "documentation", @@ -972,9 +962,7 @@ function setupFlowBlocks(activity) { ]); } else { this.setHelpString([ - _( - "Conditionals lets your program take different actions depending on the condition." - ) + + _("Conditionals lets your program take different actions depending on the condition.") + " " + _("In this example if the mouse button is pressed a snare drum will play."), "documentation", @@ -1024,9 +1012,7 @@ function setupFlowBlocks(activity) { this.setHelpString([ _("The Forever block will repeat the contained blocks forever.") + " " + - _( - "In this example of a simple drum machine a kick drum will play 1/4 notes forever." - ), + _("In this example of a simple drum machine a kick drum will play 1/4 notes forever."), "documentation", null, "foreverhelp" diff --git a/js/blocks/GraphicsBlocks.js b/js/blocks/GraphicsBlocks.js index 2cc1cd2a91..e5c60b7282 100644 --- a/js/blocks/GraphicsBlocks.js +++ b/js/blocks/GraphicsBlocks.js @@ -1150,9 +1150,7 @@ function setupGraphicsBlocks(activity) { // Set the help string for the Wrap block this.setHelpString([ - _( - "The Wrap block enables or disables screen wrapping for the graphics actions within it." - ), + _("The Wrap block enables or disables screen wrapping for the graphics actions within it."), "documentation", null, "wraphelp" diff --git a/js/blocks/HeapBlocks.js b/js/blocks/HeapBlocks.js index e953020834..443c947d7d 100644 --- a/js/blocks/HeapBlocks.js +++ b/js/blocks/HeapBlocks.js @@ -115,9 +115,7 @@ function setupHeapBlocks(activity) { * @param {string[]} [] - An array with help string information. */ this.setHelpString([ - _( - "The Show-heap block displays the contents of the heap at the top of the screen." - ), + _("The Show-heap block displays the contents of the heap at the top of the screen."), "documentation", "" ]); diff --git a/js/blocks/IntervalsBlocks.js b/js/blocks/IntervalsBlocks.js index eb6e5d230a..8b4fd6748c 100644 --- a/js/blocks/IntervalsBlocks.js +++ b/js/blocks/IntervalsBlocks.js @@ -50,9 +50,7 @@ function setupIntervalsBlocks(activity) { // Set the help string for the SetTemperament block this.setHelpString([ - _( - "The Set temperament block is used to choose the tuning system used by Music Blocks." - ), + _("The Set temperament block is used to choose the tuning system used by Music Blocks."), "documentation", "" ]); @@ -264,9 +262,7 @@ function setupIntervalsBlocks(activity) { // Set the palette, activity, help string, beginner block, hidden status, and form the block with specific parameters this.setPalette("intervals", activity); this.setHelpString([ - _( - "The Interval number block returns the number of scalar steps in the current interval." - ), + _("The Interval number block returns the number of scalar steps in the current interval."), "documentation", "" ]); @@ -319,9 +315,7 @@ function setupIntervalsBlocks(activity) { // Set the palette, activity, help string, beginner block, hidden status, and form the block with specific parameters this.setPalette("intervals", activity); this.setHelpString([ - _( - "The Current interval block returns the name of scalar steps in the current interval." - ), + _("The Current interval block returns the name of scalar steps in the current interval."), "documentation", "" ]); @@ -376,9 +370,7 @@ function setupIntervalsBlocks(activity) { // Set the palette, activity, help string, and form the block with specific parameters this.setPalette("intervals", activity); this.setHelpString([ - _( - "The Semi-tone interval block measures the distance between two notes in semi-tones." - ), + _("The Semi-tone interval block measures the distance between two notes in semi-tones."), "documentation", "" ]); @@ -671,9 +663,7 @@ function setupIntervalsBlocks(activity) { 11, 12 ]; this.setHelpString([ - _( - "The Semi-tone interval block calculates a relative interval based on half steps." - ) + + _("The Semi-tone interval block calculates a relative interval based on half steps.") + " " + _("In the figure, we add sol# to sol."), "documentation", @@ -726,9 +716,7 @@ function setupIntervalsBlocks(activity) { super("arpeggio"); this.setPalette("intervals", activity); this.setHelpString([ - _( - "The Arpeggio block will run each note block multiple times, adding a transposition based on the specified chord." - ) + + _("The Arpeggio block will run each note block multiple times, adding a transposition based on the specified chord.") + " " + _("The output of the example is: do, mi, sol, sol, ti, mi"), "documentation", @@ -1057,9 +1045,7 @@ function setupIntervalsBlocks(activity) { this.piemenuValuesC1 = [-7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]; this.beginnerBlock(true); this.setHelpString([ - _( - "The Scalar interval block calculates a relative interval based on the current mode, skipping all notes outside of the mode." - ) + + _("The Scalar interval block calculates a relative interval based on the current mode, skipping all notes outside of the mode.") + " " + _("In the figure, we add la to sol."), "documentation", @@ -1108,9 +1094,7 @@ function setupIntervalsBlocks(activity) { super("definemode"); this.setPalette("intervals", activity); this.setHelpString([ - _( - "The Define mode block allows you to define a custom mode by specifying pitch numbers." - ), + _("The Define mode block allows you to define a custom mode by specifying pitch numbers."), "documentation", null, "definemode" @@ -1174,13 +1158,9 @@ function setupIntervalsBlocks(activity) { this.setPalette("intervals", activity); this.beginnerBlock(true); this.setHelpString([ - _( - "When Movable do is false, the solfege note names are always tied to specific pitches," - ) + + _("When Movable do is false, the solfege note names are always tied to specific pitches,") + " " + - _( - 'eg "do" is always "C-natural" when Movable do is true, the solfege note names are assigned to scale degrees "do" is always the first degree of the major scale.' - ), + _('eg "do" is always "C-natural" when Movable do is true, the solfege note names are assigned to scale degrees "do" is always the first degree of the major scale.'), "documentation", null, "moveablehelp" diff --git a/js/blocks/MediaBlocks.js b/js/blocks/MediaBlocks.js index dfba68a900..dd845ffa08 100644 --- a/js/blocks/MediaBlocks.js +++ b/js/blocks/MediaBlocks.js @@ -44,9 +44,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Right block returns the position of the right of the canvas.") + " " + - _( - "In this example, the mouse moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas." - ), + _("In this example, the mouse moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas."), "documentation", null, "lrhelp" @@ -55,9 +53,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Right block returns the position of the right of the canvas.") + " " + - _( - "In this example, the turtle moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas." - ), + _("In this example, the turtle moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas."), "documentation", null, "lrhelp" @@ -106,9 +102,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Left block returns the position of the left of the canvas.") + " " + - _( - "In this example, the mouse moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas." - ), + _("In this example, the mouse moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas."), "documentation", null, "lrhelp" @@ -117,9 +111,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Left block returns the position of the left of the canvas.") + " " + - _( - "In this example, the turtle moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas." - ), + _("In this example, the turtle moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas."), "documentation", null, "lrhelp" @@ -167,9 +159,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Top block returns the position of the top of the canvas.") + " " + - _( - "In this example, the mouse moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas." - ), + _("In this example, the mouse moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas."), "documentation", null, "bottomposhelp" @@ -178,9 +168,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Top block returns the position of the top of the canvas.") + " " + - _( - "In this example, the turtle moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas." - ), + _("In this example, the turtle moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas."), "documentation", null, "bottomposhelp" @@ -228,9 +216,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Bottom block returns the position of the bottom of the canvas.") + " " + - _( - "In this example, the mouse moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas." - ), + _("In this example, the mouse moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas."), "documentation", null, "bottomposhelp" @@ -239,9 +225,7 @@ function setupMediaBlocks(activity) { this.setHelpString([ _("The Bottom block returns the position of the bottom of the canvas.") + " " + - _( - "In this example, the turtle moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas." - ), + _("In this example, the turtle moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas."), "documentation", null, "bottomposhelp" @@ -1003,4 +987,4 @@ function setupMediaBlocks(activity) { if (typeof module !== "undefined" && module.exports) { module.exports = { setupMediaBlocks }; -} \ No newline at end of file +} diff --git a/js/blocks/OrnamentBlocks.js b/js/blocks/OrnamentBlocks.js index 0f8af1ed2a..b0858200eb 100644 --- a/js/blocks/OrnamentBlocks.js +++ b/js/blocks/OrnamentBlocks.js @@ -623,9 +623,7 @@ function setupOrnamentBlocks(activity) { * @param {string[]} [] - An array with help string information. */ this.setHelpString([ - _( - "The Slur block lengthens the sustain of notes while maintaining the specified rhythmic value of the notes." - ), + _("The Slur block lengthens the sustain of notes while maintaining the specified rhythmic value of the notes."), "documentation", null, "slurhelp" @@ -689,9 +687,7 @@ function setupOrnamentBlocks(activity) { * @param {string[]} [] - An array with help string information. */ this.setHelpString([ - _( - "The Staccato block shortens the length of the actual note while maintaining the specified rhythmic value of the notes." - ), + _("The Staccato block shortens the length of the actual note while maintaining the specified rhythmic value of the notes."), "documentation", null, "staccatohelp" diff --git a/js/blocks/ProgramBlocks.js b/js/blocks/ProgramBlocks.js index 590194acfb..ebe1929e28 100644 --- a/js/blocks/ProgramBlocks.js +++ b/js/blocks/ProgramBlocks.js @@ -919,9 +919,7 @@ function setupProgramBlocks(activity) { super("runblock"); this.setPalette("program", activity); this.setHelpString([ - _( - "The Run block block runs a block. It accepts two types of arguments: block number or block name." - ), + _("The Run block block runs a block. It accepts two types of arguments: block number or block name."), "documentation", "" ]); diff --git a/js/blocks/RhythmBlockPaletteBlocks.js b/js/blocks/RhythmBlockPaletteBlocks.js index 1245c674e7..7cbf9cd141 100644 --- a/js/blocks/RhythmBlockPaletteBlocks.js +++ b/js/blocks/RhythmBlockPaletteBlocks.js @@ -625,9 +625,7 @@ function setupRhythmBlockPaletteBlocks(activity) { this.setPalette(rhythmBlockPalette, activity); // Set the help string for the block this.setHelpString([ - _( - "The Tuplet block is used to generate a group of notes played in a condensed amount of time." - ), + _("The Tuplet block is used to generate a group of notes played in a condensed amount of time."), "documentation", null, "tuplet4" @@ -897,9 +895,7 @@ function setupRhythmBlockPaletteBlocks(activity) { this.setHelpString([ _("Tuplets are a collection of notes that get scaled to a specific duration.") + " " + - _( - "Using tuplets makes it easy to create groups of notes that are not based on a power of 2." - ), + _("Using tuplets makes it easy to create groups of notes that are not based on a power of 2."), "documentation", null, "matrix" @@ -1046,4 +1042,4 @@ function isAppleBrowser() { if (typeof module !== "undefined" && module.exports) { module.exports = { setupRhythmBlockPaletteBlocks }; -} \ No newline at end of file +} diff --git a/js/blocks/RhythmBlocks.js b/js/blocks/RhythmBlocks.js index d70526843d..1311aaa8a7 100644 --- a/js/blocks/RhythmBlocks.js +++ b/js/blocks/RhythmBlocks.js @@ -35,9 +35,7 @@ function setupRhythmBlocks(activity) { this.parameter = true; this.beginnerBlock(true); this.setHelpString([ - _( - "The Note value block is the value of the duration of the note currently being played." - ), + _("The Note value block is the value of the duration of the note currently being played."), "documentation", null, "everybeathelp" @@ -136,9 +134,7 @@ function setupRhythmBlocks(activity) { super("osctime"); this.setPalette("rhythm", activity); this.setHelpString([ - _( - "The Milliseconds block is similar to a Note block except that it uses time (in MS) to specify the note duration." - ), + _("The Milliseconds block is similar to a Note block except that it uses time (in MS) to specify the note duration."), "documentation", null, "osctimehelp" @@ -338,9 +334,7 @@ function setupRhythmBlocks(activity) { super("newswing2"); this.setPalette("rhythm", activity); this.setHelpString([ - _( - "The Swing block works on pairs of notes (specified by note value), adding some duration (specified by swing value) to the first note and taking the same amount from the second note." - ), + _("The Swing block works on pairs of notes (specified by note value), adding some duration (specified by swing value) to the first note and taking the same amount from the second note."), "documentation", null, "swinghelp" @@ -476,9 +470,7 @@ function setupRhythmBlocks(activity) { super("multiplybeatfactor"); this.setPalette("rhythm", activity); this.setHelpString([ - _( - "The Multiply note value block changes the duration of notes by changing their note values." - ), + _("The Multiply note value block changes the duration of notes by changing their note values."), "documentation", null, "multiplybeathelp" @@ -713,9 +705,7 @@ function setupRhythmBlocks(activity) { this.setPalette("rhythm", activity); this.beginnerBlock(true); this.setHelpString([ - _( - "A rest of the specified note value duration can be constructed using a Silence block." - ), + _("A rest of the specified note value duration can be constructed using a Silence block."), "documentation", null, "rest2" diff --git a/js/blocks/SensorsBlocks.js b/js/blocks/SensorsBlocks.js index 002468feda..b24b174849 100644 --- a/js/blocks/SensorsBlocks.js +++ b/js/blocks/SensorsBlocks.js @@ -344,18 +344,14 @@ function setupSensorsBlocks(activity) { if (_THIS_IS_MUSIC_BLOCKS_) { this.setHelpString([ - _( - "The Cursor over block triggers an event when the cursor is moved over a mouse." - ), + _("The Cursor over block triggers an event when the cursor is moved over a mouse."), "documentation", null, "cursoroverhelp" ]); } else { this.setHelpString([ - _( - "The Cursor over block triggers an event when the cursor is moved over a turtle." - ), + _("The Cursor over block triggers an event when the cursor is moved over a turtle."), "documentation", null, "cursoroverhelp" @@ -390,9 +386,7 @@ function setupSensorsBlocks(activity) { if (_THIS_IS_MUSIC_BLOCKS_) { this.setHelpString([ // TRANS: hover - _( - "The Cursor out block triggers an event when the cursor is moved off of a mouse." - ), + _("The Cursor out block triggers an event when the cursor is moved off of a mouse."), "documentation", null, "cursorouthelp" @@ -400,9 +394,7 @@ function setupSensorsBlocks(activity) { } else { this.setHelpString([ // TRANS: hover - _( - "The Cursor out block triggers an event when the cursor is moved off of a turtle." - ), + _("The Cursor out block triggers an event when the cursor is moved off of a turtle."), "documentation", null, "cursorouthelp" @@ -435,18 +427,14 @@ function setupSensorsBlocks(activity) { if (_THIS_IS_MUSIC_BLOCKS_) { this.setHelpString([ - _( - "The Cursor button down block triggers an event when the cursor button is pressed on a mouse." - ), + _("The Cursor button down block triggers an event when the cursor button is pressed on a mouse."), "documentation", null, "cursordownhelp" ]); } else { this.setHelpString([ - _( - "The Cursor button down block triggers an event when the cursor button is pressed on a turtle." - ), + _("The Cursor button down block triggers an event when the cursor button is pressed on a turtle."), "documentation", null, "cursordownhelp" @@ -479,18 +467,14 @@ function setupSensorsBlocks(activity) { if (_THIS_IS_MUSIC_BLOCKS_) { this.setHelpString([ - _( - "The Cursor button up block triggers an event when the cursor button is released while over a mouse." - ), + _("The Cursor button up block triggers an event when the cursor button is released while over a mouse."), "documentation", null, "cursoruphelp" ]); } else { this.setHelpString([ - _( - "The Cursor button up block triggers an event when the cursor button is released while over a turtle." - ), + _("The Cursor button up block triggers an event when the cursor button is released while over a turtle."), "documentation", null, "cursoruphelp" @@ -523,17 +507,13 @@ function setupSensorsBlocks(activity) { this.parameter = true; if (_THIS_IS_MUSIC_BLOCKS_) { this.setHelpString([ - _( - "The Get blue block returns the blue component of the pixel under the mouse." - ), + _("The Get blue block returns the blue component of the pixel under the mouse."), "documentation", "" ]); } else { this.setHelpString([ - _( - "The Get blue block returns the blue component of the pixel under the turtle." - ), + _("The Get blue block returns the blue component of the pixel under the turtle."), "documentation", "" ]); @@ -579,17 +559,13 @@ function setupSensorsBlocks(activity) { this.parameter = true; if (_THIS_IS_MUSIC_BLOCKS_) { this.setHelpString([ - _( - "The Get green block returns the green component of the pixel under the mouse." - ), + _("The Get green block returns the green component of the pixel under the mouse."), "documentation", "" ]); } else { this.setHelpString([ - _( - "The Get green block returns the green component of the pixel under the turtle." - ), + _("The Get green block returns the green component of the pixel under the turtle."), "documentation", "" ]); @@ -815,9 +791,7 @@ function setupSensorsBlocks(activity) { this.beginnerBlock(!(this.lang === "ja")); this.setHelpString([ - _( - "The Time block returns the number of seconds that the program has been running." - ), + _("The Time block returns the number of seconds that the program has been running."), "documentation", "" ]); diff --git a/js/blocks/ToneBlocks.js b/js/blocks/ToneBlocks.js index 586de9c80e..6240654f5a 100644 --- a/js/blocks/ToneBlocks.js +++ b/js/blocks/ToneBlocks.js @@ -314,9 +314,7 @@ function setupToneBlocks(activity) { super("harmonic"); this.setPalette("tone", activity); this.setHelpString([ - _( - "The Weighted partials block is used to specify the partials associated with a timbre." - ), + _("The Weighted partials block is used to specify the partials associated with a timbre."), "documentation", "" ]); @@ -842,9 +840,7 @@ function setupToneBlocks(activity) { super("setdefaultinstrument", _("set default instrument")); this.setPalette("tone", activity); this.setHelpString([ - _( - "The set default instrument block changes the default instrument from electronic synth to the instrument of your choice." - ), + _("The set default instrument block changes the default instrument from electronic synth to the instrument of your choice."), "documentation", "" ]); @@ -1156,4 +1152,4 @@ function setupToneBlocks(activity) { if (typeof module !== "undefined" && module.exports) { module.exports = { setupToneBlocks }; -} \ No newline at end of file +} diff --git a/js/blocks/VolumeBlocks.js b/js/blocks/VolumeBlocks.js index 20c33f6ab3..7598b85e09 100644 --- a/js/blocks/VolumeBlocks.js +++ b/js/blocks/VolumeBlocks.js @@ -840,13 +840,9 @@ function setupVolumeBlocks(activity) { this.beginnerBlock(true); this.setHelpString([ - _( - "The Decrescendo block will decrease the volume of the contained notes by a specified amount for every note played." - ) + + _("The Decrescendo block will decrease the volume of the contained notes by a specified amount for every note played.") + " " + - _( - "For example if you have 7 notes in sequence contained in a Decrescendo block with a value of 5 the final note will be at 35% less than the starting volume." - ), + _("For example if you have 7 notes in sequence contained in a Decrescendo block with a value of 5 the final note will be at 35% less than the starting volume."), "documentation", null, "crescendohelp" @@ -904,13 +900,9 @@ function setupVolumeBlocks(activity) { this.beginnerBlock(true); this.setHelpString([ - _( - "The Crescendo block will increase the volume of the contained notes by a specified amount for every note played." - ) + + _("The Crescendo block will increase the volume of the contained notes by a specified amount for every note played.") + " " + - _( - "For example if you have 7 notes in sequence contained in a Crescendo block with a value of 5 the final note will be at 35% more than the starting volume." - ), + _("For example if you have 7 notes in sequence contained in a Crescendo block with a value of 5 the final note will be at 35% more than the starting volume."), "documentation", null, "crescendohelp" @@ -953,4 +945,4 @@ function setupVolumeBlocks(activity) { if (typeof module !== "undefined" && module.exports) { module.exports = { setupVolumeBlocks }; -} \ No newline at end of file +} diff --git a/po/MusicBlocks.pot b/po/MusicBlocks.pot index dc3457906b..6ead44ee71 100644 --- a/po/MusicBlocks.pot +++ b/po/MusicBlocks.pot @@ -17,84 +17,8 @@ msgstr "" "Language: en\n" "X-Generator: js2pot.py script\n" -#: js/languagebox.js:208 -msgid "Refresh your browser to change your language preference." -msgstr "" - -#: js/languagebox.js:229 -msgid "Music Blocks is already set to this language." -msgstr "" - -#: js/planetInterface.js:131 -msgid "project undefined" -msgstr "" - -#: js/macros.js:170 -#: js/macros.js:266 -#: js/macros.js:267 -#: js/macros.js:276 -#: js/macros.js:828 -#: js/block.js:1569 -#: js/block.js:4500 -#: js/block.js:4518 -#: js/block.js:4529 -#: js/blocks.js:1018 -#: js/blocks.js:3491 -#: js/blocks.js:3492 -#: js/blocks.js:3717 -#: js/blocks.js:4076 -#: js/blocks.js:4269 -#: js/blocks.js:5432 -#: js/blocks.js:6563 -#: js/palette.js:610 -#: js/palette.js:619 -#: js/palette.js:628 -#: js/palette.js:637 -#: js/palette.js:1215 -#: js/palette.js:1226 -#: js/palette.js:1237 -#: js/palette.js:1248 -#: js/palette.js:1267 -#: js/rubrics.js:530 -#: js/turtledefs.js:131 -#: js/turtledefs.js:232 -#: js/blocks/MeterBlocks.js:716 -#: js/blocks/MeterBlocks.js:769 -#: js/blocks/MeterBlocks.js:832 -#: js/blocks/MeterBlocks.js:893 -#: js/blocks/ActionBlocks.js:254 -#: js/blocks/ActionBlocks.js:307 -#: js/blocks/ActionBlocks.js:617 -#: js/blocks/ActionBlocks.js:716 -#: js/blocks/ActionBlocks.js:961 -#: js/blocks/ActionBlocks.js:1049 -#: js/blocks/ActionBlocks.js:1322 -#: js/blocks/ActionBlocks.js:1325 -#: js/blocks/ActionBlocks.js:1337 -#: js/blocks/ActionBlocks.js:1404 -#: js/widgets/rhythmruler.js:2309 -#: js/widgets/rhythmruler.js:2316 -#: js/widgets/rhythmruler.js:2501 -#: js/widgets/rhythmruler.js:2508 -#: js/widgets/musickeyboard.js:3062 -#: js/widgets/phrasemaker.js:5007 -msgid "action" -msgstr "" - -#: js/macros.js:711 -#: js/utils/musicutils.js:1160 -#: js/utils/synthutils.js:206 -#.TRANS: animal sound effect -msgid "duck" -msgstr "" - -#: js/themebox.js:66 -msgid "Music Blocks is already set to this theme." -msgstr "" - #: js/SaveInterface.js:59 #: js/SaveInterface.js:61 -#: js/SaveInterface.js:93 msgid "Music Blocks Project" msgstr "" @@ -132,21 +56,35 @@ msgid "This code stores data about the blocks in a project." msgstr "" #: js/SaveInterface.js:89 -#: js/blocks.js:5091 -#: js/blocks/MediaBlocks.js:888 +#: js/SaveInterface.js:104 +#: js/SaveInterface.js:111 +#: js/blocks.js:5099 +#: js/blocks/MediaBlocks.js:872 msgid "Show" msgstr "" -#: js/SaveInterface.js:91 +#: js/SaveInterface.js:92 +msgid "Copy to Clipboard" +msgstr "" + +#: js/SaveInterface.js:101 msgid "Hide" msgstr "" -#: js/SaveInterface.js:131 -#: js/SaveInterface.js:204 -#: js/SaveInterface.js:262 -#: js/SaveInterface.js:515 -#: js/SaveInterface.js:543 -#: js/activity.js:4764 +#: js/SaveInterface.js:116 +msgid "Project code copied to clipboard!" +msgstr "" + +#: js/SaveInterface.js:118 +msgid "Failed to copy." +msgstr "" + +#: js/SaveInterface.js:154 +#: js/SaveInterface.js:227 +#: js/SaveInterface.js:285 +#: js/SaveInterface.js:538 +#: js/SaveInterface.js:566 +#: js/activity.js:4842 #: planet/js/GlobalPlanet.js:467 #: planet/js/GlobalPlanet.js:469 #: planet/js/GlobalPlanet.js:495 @@ -155,47 +93,47 @@ msgstr "" msgid "My Project" msgstr "" -#: js/SaveInterface.js:197 +#: js/SaveInterface.js:220 #: planet/js/SaveInterface.js:58 msgid "No description provided" msgstr "" -#: js/SaveInterface.js:458 +#: js/SaveInterface.js:481 msgid "Your recording is in progress." msgstr "" -#: js/SaveInterface.js:527 +#: js/SaveInterface.js:550 #.TRANS: File name prompt for save as Lilypond msgid "File name" msgstr "" -#: js/SaveInterface.js:529 +#: js/SaveInterface.js:552 #: planet/js/StringHelper.js:39 #.TRANS: Project title prompt for save as Lilypond msgid "Project title" msgstr "" -#: js/SaveInterface.js:531 +#: js/SaveInterface.js:554 #.TRANS: Project title prompt for save as Lilypond msgid "Project author" msgstr "" -#: js/SaveInterface.js:533 +#: js/SaveInterface.js:556 #.TRANS: MIDI prompt for save as Lilypond msgid "Include MIDI output?" msgstr "" -#: js/SaveInterface.js:535 +#: js/SaveInterface.js:558 #.TRANS: Guitar prompt for save as Lilypond msgid "Include guitar tablature output?" msgstr "" -#: js/SaveInterface.js:537 +#: js/SaveInterface.js:560 #.TRANS: Lilypond is a scripting language for generating sheet music msgid "Save as Lilypond" msgstr "" -#: js/SaveInterface.js:552 +#: js/SaveInterface.js:575 #: js/blocks/EnsembleBlocks.js:94 #: js/blocks/EnsembleBlocks.js:156 #: js/blocks/EnsembleBlocks.js:218 @@ -217,205 +155,540 @@ msgstr "" msgid "Mr. Mouse" msgstr "" -#: js/SaveInterface.js:701 +#: js/SaveInterface.js:724 msgid "The Lilypond code is copied to clipboard. You can paste it here: " msgstr "" -#: js/activity.js:412 -#: js/activity.js:417 -msgid "Search for blocks" -msgstr "" - -#: js/activity.js:1359 -msgid "Are you sure you want to clear the workspace?" -msgstr "" - -#: js/activity.js:1578 -msgid "Enter file name" -msgstr "" - -#: js/activity.js:1580 -msgid "File save canceled" -msgstr "" - -#: js/activity.js:1599 -msgid "Click on stop saving" -msgstr "" - -#: js/activity.js:1884 -msgid "Catching mice" -msgstr "" - -#: js/activity.js:1885 -msgid "Cleaning the instruments" -msgstr "" - -#: js/activity.js:1886 -msgid "Testing key pieces" -msgstr "" - -#: js/activity.js:1887 -msgid "Sight-reading" +#: js/macros.js:170 +#: js/macros.js:266 +#: js/macros.js:267 +#: js/macros.js:276 +#: js/macros.js:828 +#: js/palette.js:610 +#: js/palette.js:619 +#: js/palette.js:628 +#: js/palette.js:637 +#: js/palette.js:1235 +#: js/palette.js:1246 +#: js/palette.js:1257 +#: js/palette.js:1268 +#: js/palette.js:1287 +#: js/rubrics.js:530 +#: js/turtledefs.js:131 +#: js/turtledefs.js:232 +#: js/block.js:1569 +#: js/block.js:4503 +#: js/block.js:4521 +#: js/block.js:4532 +#: js/blocks.js:1018 +#: js/blocks.js:3499 +#: js/blocks.js:3500 +#: js/blocks.js:3725 +#: js/blocks.js:4084 +#: js/blocks.js:4277 +#: js/blocks.js:5440 +#: js/blocks.js:6571 +#: js/blocks/ActionBlocks.js:254 +#: js/blocks/ActionBlocks.js:307 +#: js/blocks/ActionBlocks.js:617 +#: js/blocks/ActionBlocks.js:716 +#: js/blocks/ActionBlocks.js:961 +#: js/blocks/ActionBlocks.js:1049 +#: js/blocks/ActionBlocks.js:1318 +#: js/blocks/ActionBlocks.js:1321 +#: js/blocks/ActionBlocks.js:1333 +#: js/blocks/ActionBlocks.js:1400 +#: js/blocks/MeterBlocks.js:716 +#: js/blocks/MeterBlocks.js:769 +#: js/blocks/MeterBlocks.js:832 +#: js/blocks/MeterBlocks.js:893 +#: js/widgets/musickeyboard.js:3105 +#: js/widgets/rhythmruler.js:2309 +#: js/widgets/rhythmruler.js:2316 +#: js/widgets/rhythmruler.js:2501 +#: js/widgets/rhythmruler.js:2508 +#: js/widgets/phrasemaker.js:5007 +msgid "action" msgstr "" -#: js/activity.js:1888 -msgid "Combining math and music" +#: js/macros.js:711 +#: js/utils/musicutils.js:1161 +#: js/utils/synthutils.js:214 +#.TRANS: animal sound effect +msgid "duck" msgstr "" -#: js/activity.js:1889 -msgid "Generating more blocks" +#: js/palette.js:592 +#: js/palette.js:721 +#: js/palette.js:1211 +#: js/blocks.js:1212 +#: js/blocks.js:3452 +#: js/blocks.js:3842 +#: js/blocks.js:3873 +#: js/blocks.js:3922 +#: js/blocks.js:3957 +#: js/blocks.js:6594 +#: js/blocks/BoxesBlocks.js:282 +#: js/blocks/BoxesBlocks.js:285 +#: js/blocks/BoxesBlocks.js:405 +#: js/blocks/BoxesBlocks.js:594 +msgid "box" msgstr "" -#: js/activity.js:1890 -msgid "Do Re Mi Fa Sol La Ti Do" +#: js/palette.js:654 +#: js/turtles.js:944 +#: js/turtledefs.js:737 +msgid "Grid" msgstr "" -#: js/activity.js:1891 -msgid "Tuning string instruments" +#: js/palette.js:657 +#: js/blocks.js:3255 +#: js/blocks/MediaBlocks.js:876 +#: js/blocks/MediaBlocks.js:947 +msgid "text" msgstr "" -#: js/activity.js:1892 -msgid "Pressing random keys" +#: js/palette.js:660 +#: js/lilypond.js:732 +#: js/lilypond.js:897 +#: js/lilypond.js:941 +#: js/turtledefs.js:129 +#: js/turtledefs.js:230 +#: js/block.js:1660 +#: js/block.js:2552 +#: js/blocks/DrumBlocks.js:473 +#: js/blocks/RhythmBlocks.js:756 +#: js/blocks/VolumeBlocks.js:502 +#: js/widgets/phrasemaker.js:1135 +msgid "drum" msgstr "" -#: js/activity.js:2074 -msgid "plugins will be removed upon restart." +#: js/palette.js:663 +msgid "effect" msgstr "" -#: js/activity.js:2083 -msgid "show Cartesian" +#: js/palette.js:669 +msgid "sargam" msgstr "" -#: js/activity.js:2605 #: js/palette.js:672 -#: js/blocks/RhythmBlocks.js:923 +#: js/activity.js:2657 +#: js/blocks/RhythmBlocks.js:913 #: js/blocks/PitchBlocks.js:442 -#: js/blocks/PitchBlocks.js:1786 +#: js/blocks/PitchBlocks.js:1797 #.TRANS: a numeric mapping of the notes in an octave based on the musical mode msgid "scale degree" msgstr "" -#: js/activity.js:2608 -#: js/palette.js:681 -msgid "voice name" +#: js/palette.js:675 +#: js/activity.js:2684 +msgid "mode name" msgstr "" -#: js/activity.js:2611 #: js/palette.js:678 +#: js/activity.js:2663 msgid "invert mode" msgstr "" -#: js/activity.js:2614 -msgid "output tools" +#: js/palette.js:681 +#: js/activity.js:2660 +msgid "voice name" msgstr "" -#: js/activity.js:2617 -msgid "custom note" +#: js/palette.js:684 +#: js/blocks/PitchBlocks.js:1209 +msgid "custom pitch" msgstr "" -#: js/activity.js:2620 -msgid "accidental name" +#: js/palette.js:688 +#: js/block.js:1576 +#: js/block.js:1695 +#: js/blocks/IntervalsBlocks.js:61 +#: js/blocks/WidgetBlocks.js:264 +msgid "temperament" msgstr "" -#: js/activity.js:2623 -#: js/blocks/PitchBlocks.js:855 -msgid "east indian solfege" +#: js/palette.js:692 +msgid "accidental" msgstr "" -#: js/activity.js:2626 -#: js/blocks/PitchBlocks.js:869 -msgid "note name" +#: js/palette.js:698 +#: js/activity.js:2690 +msgid "interval name" msgstr "" -#: js/activity.js:2629 -#: js/blocks/IntervalsBlocks.js:94 -msgid "temperament name" +#: js/palette.js:701 +#: js/block.js:3767 +#: js/blocks.js:2615 +#: js/blocks.js:3226 +#: js/blocks/BooleanBlocks.js:77 +#: js/blocks/BooleanBlocks.js:167 +#: js/blocks/BooleanBlocks.js:251 +#: js/blocks/BooleanBlocks.js:335 +#: js/blocks/BooleanBlocks.js:431 +#: js/blocks/BooleanBlocks.js:535 +#: js/blocks/BooleanBlocks.js:634 +#: js/blocks/BooleanBlocks.js:733 +#: js/blocks/BooleanBlocks.js:839 +#: js/blocks/BooleanBlocks.js:940 +#: js/blocks/BooleanBlocks.js:1025 +#: js/blocks/SensorsBlocks.js:937 +msgid "true" msgstr "" -#: js/activity.js:2632 -#: js/palette.js:675 -msgid "mode name" +#: js/palette.js:716 +#: js/blocks/PitchBlocks.js:405 +msgid "pitch converter" msgstr "" -#: js/activity.js:2635 -msgid "chord name" +#: js/palette.js:722 +#: js/palette.js:727 +#: js/palette.js:1147 +#: js/blocks.js:4130 +#: js/blocks/BoxesBlocks.js:591 +msgid "store in" msgstr "" -#: js/activity.js:2638 -#: js/palette.js:698 -msgid "interval name" +#: js/palette.js:724 +#: js/palette.js:725 +#: js/blocks.js:3451 +#: js/blocks/BoxesBlocks.js:514 +msgid "store in box" msgstr "" -#: js/activity.js:2641 -msgid "filter type" +#: js/palette.js:736 +#: js/blocks.js:2480 +#: js/blocks/MediaBlocks.js:586 +msgid "open file" msgstr "" -#: js/activity.js:2644 -msgid "oscillator type" +#: js/rubrics.js:523 +#: js/turtledefs.js:122 +#: js/turtledefs.js:223 +#: js/blocks/ProgramBlocks.js:745 +#: js/blocks/RhythmBlockPaletteBlocks.js:52 +#: js/blocks/RhythmBlockPaletteBlocks.js:239 +#: js/widgets/rhythmruler.js:2047 +#: js/widgets/rhythmruler.js:2054 +#: js/widgets/rhythmruler.js:2123 +#: js/widgets/rhythmruler.js:2130 +#: js/widgets/rhythmruler.js:2209 +#.TRANS: an arrangement of notes based on duration +msgid "rhythm" msgstr "" -#: js/activity.js:2647 -#: js/blocks.js:2479 -#: js/blocks.js:2487 -msgid "audio file" +#: js/rubrics.js:524 +#: js/turtledefs.js:124 +#: js/turtledefs.js:225 +#: js/block.js:2548 +#: js/blocks/IntervalsBlocks.js:61 +#: js/blocks/SensorsBlocks.js:178 +#: js/blocks/PitchBlocks.js:1850 +#: js/blocks/PitchBlocks.js:1864 +#: js/widgets/musickeyboard.js:2060 +#: js/widgets/phrasemaker.js:1133 +#.TRANS: pitch number +#.TRANS: we specify pitch in terms of a name and an octave. The name can be CDEFGAB or Do Re Mi Fa Sol La Ti. Octave is a number between 1 and 8. +msgid "pitch" msgstr "" -#: js/activity.js:2650 -#: js/blocks/DrumBlocks.js:32 -msgid "noise name" +#: js/rubrics.js:525 +#: js/turtledefs.js:126 +#: js/turtledefs.js:227 +msgid "tone" msgstr "" -#: js/activity.js:2653 -#: js/blocks/DrumBlocks.js:75 -msgid "drum name" +#: js/rubrics.js:526 +#: js/lilypond.js:605 +#: js/lilypond.js:904 +#: js/lilypond.js:910 +#: js/lilypond.js:948 +msgid "mouse" msgstr "" -#: js/activity.js:2656 -#: js/blocks/DrumBlocks.js:119 -msgid "effects name" +#: js/rubrics.js:527 +#: js/turtledefs.js:135 +#: js/turtledefs.js:236 +#: js/widgets/phrasemaker.js:1137 +msgid "pen" msgstr "" -#: js/activity.js:2659 -msgid "wrap mode" +#: js/rubrics.js:528 +#: js/turtledefs.js:136 +#: js/turtledefs.js:237 +#: js/blocks/NumberBlocks.js:981 +#: js/blocks/PitchBlocks.js:1728 +#: js/blocks/PitchBlocks.js:1769 +msgid "number" msgstr "" -#: js/activity.js:2662 -msgid "load file" +#: js/rubrics.js:529 +#: js/turtledefs.js:130 +#: js/turtledefs.js:231 +msgid "flow" msgstr "" -#: js/activity.js:2832 -#: js/activity.js:5731 -msgid "This block is deprecated." +#: js/rubrics.js:531 +#: js/turtledefs.js:139 +#: js/turtledefs.js:240 +#: planet/js/GlobalTag.js:48 +#.TRANS: On the Planet, we use labels to tag projects. +msgid "Sensors" msgstr "" -#: js/activity.js:2834 -#: js/activity.js:5733 -msgid "Block cannot be found." +#: js/rubrics.js:532 +#: js/turtledefs.js:138 +#: js/turtledefs.js:239 +#: js/blocks/MediaBlocks.js:914 +#: planet/js/GlobalTag.js:46 +#.TRANS: On the Planet, we use labels to tag projects. +msgid "Media" msgstr "" -#: js/activity.js:3043 -msgid "Saving block artwork" +#: js/rubrics.js:533 +msgid "mice" msgstr "" -#: js/activity.js:3047 -#: js/turtledefs.js:709 -#: planet/js/LocalCard.js:31 -msgid "Copy" +#: js/themebox.js:66 +msgid "Music Blocks is already set to this theme." msgstr "" -#: js/activity.js:3054 -msgid "Erase" +#: js/turtle-painter.js:1192 +#: js/turtle-painter.js:1193 +#: js/turtles.js:119 +#: js/lilypond.js:749 +#: js/lilypond.js:913 +#: js/lilypond.js:951 +#: js/block.js:1583 +#: js/logo.js:1195 +#: js/blocks/ActionBlocks.js:1221 +#: js/blocks/ProgramBlocks.js:1265 +msgid "start" +msgstr "" + +#: js/turtles.js:963 +#: js/turtledefs.js:745 +#: js/blocks/GraphicsBlocks.js:364 +#: js/widgets/arpeggio.js:118 +#: js/widgets/modewidget.js:119 +#: js/widgets/musickeyboard.js:761 +#: js/widgets/pitchdrummatrix.js:181 +#: js/widgets/pitchstaircase.js:684 +#: js/widgets/rhythmruler.js:601 +#: js/widgets/temperament.js:317 +#: js/widgets/temperament.js:345 +#: js/widgets/phrasemaker.js:578 +#: js/widgets/legobricks.js:253 +#.TRANS: clear all subdivisions from the ruler. +msgid "Clear" +msgstr "" + +#: js/turtles.js:984 +#: js/turtledefs.js:751 +msgid "Collapse" +msgstr "" + +#: js/turtles.js:1053 +msgid "Expand" +msgstr "" + +#: js/planetInterface.js:131 +msgid "project undefined" +msgstr "" + +#: js/lilypond.js:606 +msgid "brown rat" +msgstr "" + +#: js/lilypond.js:607 +msgid "mole" +msgstr "" + +#: js/lilypond.js:608 +msgid "chipmunk" +msgstr "" + +#: js/lilypond.js:609 +msgid "red squirrel" +msgstr "" + +#: js/lilypond.js:610 +msgid "guinea pig" +msgstr "" + +#: js/lilypond.js:611 +msgid "capybara" +msgstr "" + +#: js/lilypond.js:612 +msgid "coypu" +msgstr "" + +#: js/lilypond.js:613 +msgid "black rat" +msgstr "" + +#: js/lilypond.js:614 +msgid "grey squirrel" +msgstr "" + +#: js/lilypond.js:615 +msgid "flying squirrel" +msgstr "" + +#: js/lilypond.js:616 +msgid "bat" +msgstr "" + +#: js/lilypond.js:749 +#: js/lilypond.js:913 +#: js/lilypond.js:951 +#: js/blocks/ActionBlocks.js:1254 +#: js/blocks/ExtrasBlocks.js:557 +msgid "start drum" +msgstr "" + +#: js/turtledefs.js:43 +#.TRANS: put the URL to the guide here, e.g., https://github.com/sugarlabs/turtleblocksjs/tree/master/guide/README.md +msgid "guide url" +msgstr "" + +#: js/turtledefs.js:88 +msgid "Turtle Blocks" +msgstr "" + +#: js/turtledefs.js:121 +#: js/turtledefs.js:222 +msgid "search" +msgstr "" + +#: js/turtledefs.js:123 +#: js/turtledefs.js:224 +#: js/blocks/MeterBlocks.js:1344 +#: js/blocks/WidgetBlocks.js:527 +#.TRANS: musical meter (time signature), e.g., 4:4 +msgid "meter" +msgstr "" + +#: js/turtledefs.js:125 +#: js/turtledefs.js:226 +msgid "intervals" +msgstr "" + +#: js/turtledefs.js:127 +#: js/turtledefs.js:228 +msgid "ornament" +msgstr "" + +#: js/turtledefs.js:128 +#: js/turtledefs.js:229 +#: js/blocks/VolumeBlocks.js:362 +#: js/blocks/VolumeBlocks.js:502 +#: js/blocks/VolumeBlocks.js:545 +msgid "volume" +msgstr "" + +#: js/turtledefs.js:132 +#: js/turtledefs.js:233 +msgid "boxes" +msgstr "" + +#: js/turtledefs.js:133 +#: js/turtledefs.js:234 +msgid "widgets" +msgstr "" + +#: js/turtledefs.js:134 +#: js/turtledefs.js:235 +#: js/widgets/phrasemaker.js:1136 +msgid "graphics" +msgstr "" + +#: js/turtledefs.js:137 +#: js/turtledefs.js:238 +msgid "boolean" +msgstr "" + +#: js/turtledefs.js:140 +#: js/turtledefs.js:241 +#: js/blocks/HeapBlocks.js:59 +#: js/widgets/status.js:143 +msgid "heap" +msgstr "" + +#: js/turtledefs.js:141 +#: js/turtledefs.js:242 +#: js/blocks/DictBlocks.js:140 +#: js/blocks/ProgramBlocks.js:495 +msgid "dictionary" +msgstr "" + +#: js/turtledefs.js:142 +#: js/turtledefs.js:243 +msgid "ensemble" +msgstr "" + +#: js/turtledefs.js:143 +#: js/turtledefs.js:244 +msgid "extras" +msgstr "" + +#: js/turtledefs.js:145 +#: js/turtledefs.js:245 +#.TRANS: program as in computer program +msgid "program" +msgstr "" + +#: js/turtledefs.js:146 +#: js/turtledefs.js:246 +msgid "my blocks" +msgstr "" + +#: js/turtledefs.js:188 +#: js/turtledefs.js:282 +msgid "artwork" +msgstr "" + +#: js/turtledefs.js:188 +#: js/turtledefs.js:282 +msgid "logic" +msgstr "" + +#: js/turtledefs.js:188 +#: js/turtledefs.js:282 +#: planet/js/GlobalTag.js:34 +#.TRANS: On the Planet, we use labels to tag projects. +msgid "Music" +msgstr "" + +#: js/turtledefs.js:190 +msgid "Music Blocks" +msgstr "" + +#: js/turtledefs.js:437 +msgid "Welcome to Turtle Blocks" +msgstr "" + +#: js/turtledefs.js:438 +msgid "Turtle Blocks is a Logo-inspired turtle that draws colorful pictures with snap-together visual-programming blocks." +msgstr "" + +#: js/turtledefs.js:439 +#: js/turtledefs.js:466 +#: js/turtledefs.js:823 +#: js/turtledefs.js:846 +msgid "The current version is" msgstr "" -#: js/activity.js:3058 -#: js/activity.js:3074 -#: js/activity.js:3305 -#: js/toolbar.js:49 -#: js/toolbar.js:116 -#: js/toolbar.js:188 -#: js/toolbar.js:249 #: js/turtledefs.js:446 #: js/turtledefs.js:491 +#: js/activity.js:3128 +#: js/activity.js:3147 +#: js/activity.js:3380 +#: js/toolbar.js:49 +#: js/toolbar.js:117 +#: js/toolbar.js:190 +#: js/toolbar.js:252 #: js/widgets/aiwidget.js:646 #: js/widgets/aiwidget.js:654 #: js/widgets/aiwidget.js:655 @@ -424,8 +697,14 @@ msgstr "" #: js/widgets/arpeggio.js:545 #: js/widgets/arpeggio.js:639 #: js/widgets/arpeggio.js:640 +#: js/widgets/jseditor.js:366 #: js/widgets/meterwidget.js:185 #: js/widgets/modewidget.js:77 +#: js/widgets/musickeyboard.js:738 +#: js/widgets/musickeyboard.js:993 +#: js/widgets/musickeyboard.js:994 +#: js/widgets/musickeyboard.js:1081 +#: js/widgets/musickeyboard.js:1082 #: js/widgets/pitchdrummatrix.js:147 #: js/widgets/pitchdrummatrix.js:679 #: js/widgets/pitchdrummatrix.js:680 @@ -435,6 +714,7 @@ msgstr "" #: js/widgets/pitchdrummatrix.js:747 #: js/widgets/pitchdrummatrix.js:775 #: js/widgets/pitchdrummatrix.js:776 +#: js/widgets/pitchstaircase.js:119 #: js/widgets/rhythmruler.js:638 #: js/widgets/rhythmruler.js:639 #: js/widgets/rhythmruler.js:652 @@ -445,18 +725,10 @@ msgstr "" #: js/widgets/temperament.js:647 #: js/widgets/temperament.js:1947 #: js/widgets/temperament.js:1948 +#: js/widgets/temperament.js:2100 +#: js/widgets/temperament.js:2101 #: js/widgets/tempo.js:85 #: js/widgets/tempo.js:86 -#: js/widgets/timbre.js:429 -#: js/widgets/timbre.js:430 -#: js/widgets/timbre.js:460 -#: js/widgets/timbre.js:461 -#: js/widgets/timbre.js:740 -#: js/widgets/musickeyboard.js:700 -#: js/widgets/musickeyboard.js:950 -#: js/widgets/musickeyboard.js:951 -#: js/widgets/musickeyboard.js:1038 -#: js/widgets/musickeyboard.js:1039 #: js/widgets/phrasemaker.js:526 #: js/widgets/phrasemaker.js:537 #: js/widgets/phrasemaker.js:538 @@ -465,207 +737,932 @@ msgstr "" #: js/widgets/phrasemaker.js:4618 #: js/widgets/phrasemaker.js:4619 #: js/widgets/phrasemaker.js:4733 -#: js/widgets/pitchstaircase.js:119 -#: js/widgets/sampler.js:163 -#: js/widgets/sampler.js:164 -#: js/widgets/sampler.js:403 +#: js/widgets/legobricks.js:228 +#: js/widgets/sampler.js:198 +#: js/widgets/sampler.js:199 +#: js/widgets/sampler.js:472 +#: js/widgets/timbre.js:430 +#: js/widgets/timbre.js:431 +#: js/widgets/timbre.js:461 +#: js/widgets/timbre.js:462 +#: js/widgets/timbre.js:743 #: plugins/rodi.rtp:191 msgid "Play" msgstr "" -#: js/activity.js:3082 -#: js/toolbar.js:50 -#: js/toolbar.js:117 -#: js/toolbar.js:189 -#: js/toolbar.js:250 -#: js/turtledefs.js:452 -#: js/turtledefs.js:497 -#: js/blocks/FlowBlocks.js:604 -#: js/widgets/arpeggio.js:533 -#: js/widgets/arpeggio.js:534 -#: js/widgets/meterwidget.js:206 -#: js/widgets/meterwidget.js:207 -#: js/widgets/modewidget.js:99 -#: js/widgets/modewidget.js:100 -#: js/widgets/pitchdrummatrix.js:668 -#: js/widgets/pitchdrummatrix.js:669 -#: js/widgets/temperament.js:1934 -#: js/widgets/temperament.js:1935 -#: js/widgets/timbre.js:415 -#: js/widgets/timbre.js:417 -#: js/widgets/musickeyboard.js:893 -#: js/widgets/musickeyboard.js:895 -#: js/widgets/phrasemaker.js:547 -#: js/widgets/phrasemaker.js:548 -#: js/widgets/phrasemaker.js:4282 -#: plugins/rodi.rtp:29 -#: plugins/rodi.rtp:73 -#: plugins/rodi.rtp:413 -msgid "Stop" +#: js/turtledefs.js:447 +#: js/turtledefs.js:492 +msgid "Click the run button to run the project in fast mode." +msgstr "" + +#: js/turtledefs.js:452 +#: js/turtledefs.js:497 +#: js/activity.js:3156 +#: js/toolbar.js:50 +#: js/toolbar.js:118 +#: js/toolbar.js:191 +#: js/toolbar.js:253 +#: js/blocks/FlowBlocks.js:602 +#: js/widgets/arpeggio.js:533 +#: js/widgets/arpeggio.js:534 +#: js/widgets/meterwidget.js:206 +#: js/widgets/meterwidget.js:207 +#: js/widgets/modewidget.js:99 +#: js/widgets/modewidget.js:100 +#: js/widgets/musickeyboard.js:936 +#: js/widgets/musickeyboard.js:938 +#: js/widgets/pitchdrummatrix.js:668 +#: js/widgets/pitchdrummatrix.js:669 +#: js/widgets/temperament.js:1934 +#: js/widgets/temperament.js:1935 +#: js/widgets/phrasemaker.js:547 +#: js/widgets/phrasemaker.js:548 +#: js/widgets/phrasemaker.js:4282 +#: js/widgets/timbre.js:416 +#: js/widgets/timbre.js:418 +#: plugins/rodi.rtp:29 +#: plugins/rodi.rtp:73 +#: plugins/rodi.rtp:413 +msgid "Stop" +msgstr "" + +#: js/turtledefs.js:453 +msgid "Stop the turtle." +msgstr "" + +#: js/turtledefs.js:455 +#: js/turtledefs.js:500 +msgid "You can also type Alt-S to stop." +msgstr "" + +#: js/turtledefs.js:463 +#: js/widgets/help.js:335 +msgid "Welcome to Music Blocks" +msgstr "" + +#: js/turtledefs.js:464 +msgid "Music Blocks is a collection of tools for exploring fundamental musical concepts in a fun way." +msgstr "" + +#: js/turtledefs.js:473 +#: js/widgets/help.js:336 +msgid "Meet Mr. Mouse!" +msgstr "" + +#: js/turtledefs.js:474 +msgid "Mr Mouse is our Music Blocks conductor." +msgstr "" + +#: js/turtledefs.js:476 +msgid "Mr Mouse encourages you to explore Music Blocks." +msgstr "" + +#: js/turtledefs.js:478 +msgid "Let us start our tour!" +msgstr "" + +#: js/turtledefs.js:483 +#: js/turtledefs.js:808 +#: js/widgets/help.js:337 +msgid "Guide" +msgstr "" + +#: js/turtledefs.js:484 +msgid "A detailed guide to Music Blocks is available." +msgstr "" + +#: js/turtledefs.js:498 +msgid "Stop the music (and the mice)." +msgstr "" + +#: js/turtledefs.js:508 +#: js/toolbar.js:51 +#: js/toolbar.js:119 +#: js/toolbar.js:192 +#: js/toolbar.js:254 +msgid "Record" +msgstr "" + +#: js/turtledefs.js:509 +msgid "Record your project as video." +msgstr "" + +#: js/turtledefs.js:515 +#: js/toolbar.js:54 +#: js/toolbar.js:122 +#: js/toolbar.js:195 +#: js/toolbar.js:257 +msgid "Toggle Fullscreen" +msgstr "" + +#: js/turtledefs.js:516 +msgid "Toggle Fullscreen mode." +msgstr "" + +#: js/turtledefs.js:521 +#: js/toolbar.js:55 +#: js/toolbar.js:123 +#: js/toolbar.js:196 +#: js/toolbar.js:258 +#: js/toolbar.js:460 +#: planet/js/StringHelper.js:33 +msgid "New project" +msgstr "" + +#: js/turtledefs.js:522 +msgid "Initialize a new project." +msgstr "" + +#: js/turtledefs.js:527 +#: js/toolbar.js:56 +#: js/toolbar.js:124 +#: js/toolbar.js:197 +#: js/toolbar.js:259 +msgid "Load project from file" +msgstr "" + +#: js/turtledefs.js:528 +msgid "You can also load projects from the file system." +msgstr "" + +#: js/turtledefs.js:534 +#: js/turtledefs.js:545 +#: js/turtledefs.js:565 +#: js/toolbar.js:57 +#: js/toolbar.js:125 +#: js/toolbar.js:126 +#: js/toolbar.js:198 +#: js/toolbar.js:260 +msgid "Save project" +msgstr "" + +#: js/turtledefs.js:535 +#: js/turtledefs.js:566 +#: js/toolbar.js:58 +#: js/toolbar.js:80 +#: js/toolbar.js:82 +#: js/toolbar.js:148 +#: js/toolbar.js:159 +#: js/toolbar.js:161 +#: js/toolbar.js:199 +#: js/toolbar.js:220 +#: js/toolbar.js:222 +#: js/toolbar.js:261 +#: js/toolbar.js:282 +#: js/toolbar.js:284 +msgid "Save project as HTML" +msgstr "" + +#: js/turtledefs.js:537 +#: js/toolbar.js:81 +#: js/toolbar.js:85 +#: js/toolbar.js:151 +msgid "Save mouse artwork as PNG" +msgstr "" + +#: js/turtledefs.js:544 +#: js/widgets/arpeggio.js:103 +#: js/widgets/meterwidget.js:227 +#: js/widgets/modewidget.js:113 +#: js/widgets/musickeyboard.js:753 +#: js/widgets/pitchdrummatrix.js:166 +#: js/widgets/pitchslider.js:177 +#: js/widgets/pitchstaircase.js:639 +#: js/widgets/temperament.js:2202 +#: js/widgets/phrasemaker.js:561 +#: js/widgets/legobricks.js:233 +#: js/widgets/reflection.js:106 +#: js/widgets/timbre.js:753 +msgid "Save" +msgstr "" + +#: js/turtledefs.js:547 +msgid "Save your project to a file." +msgstr "" + +#: js/turtledefs.js:549 +#: js/toolbar.js:162 +#: js/toolbar.js:223 +#: js/toolbar.js:285 +msgid "Save turtle artwork as SVG" +msgstr "" + +#: js/turtledefs.js:551 +msgid "Save graphics from your project to as SVG." +msgstr "" + +#: js/turtledefs.js:553 +#: js/toolbar.js:160 +#: js/toolbar.js:163 +#: js/toolbar.js:221 +#: js/toolbar.js:224 +#: js/toolbar.js:283 +#: js/toolbar.js:286 +msgid "Save turtle artwork as PNG" +msgstr "" + +#: js/turtledefs.js:555 +msgid "Save graphics from your project as PNG." +msgstr "" + +#: js/turtledefs.js:557 +#: js/toolbar.js:90 +#: js/toolbar.js:155 +#: js/toolbar.js:164 +#: js/toolbar.js:225 +#: js/toolbar.js:287 +msgid "Save block artwork as SVG" +msgstr "" + +#: js/turtledefs.js:559 +msgid "Save block artwork as an SVG file." +msgstr "" + +#: js/turtledefs.js:568 +#: js/toolbar.js:83 +#: js/toolbar.js:149 +msgid "Save project as MIDI" +msgstr "" + +#: js/turtledefs.js:570 +#: js/toolbar.js:86 +#: js/toolbar.js:152 +msgid "Save music as WAV" +msgstr "" + +#: js/turtledefs.js:572 +msgid "Save sheet music as ABC, Lilypond or MusicXML" +msgstr "" + +#: js/turtledefs.js:574 +msgid "Save block artwork as SVG or PNG" +msgstr "" + +#: js/turtledefs.js:581 +msgid "Load samples from server" +msgstr "" + +#: js/turtledefs.js:582 +msgid "This button opens a viewer for loading example projects." +msgstr "" + +#: js/turtledefs.js:587 +msgid "Expand/collapse option toolbar" +msgstr "" + +#: js/turtledefs.js:588 +msgid "Click this button to expand or collapse the auxillary toolbar." +msgstr "" + +#: js/turtledefs.js:593 +#: js/piemenus.js:3462 +#: js/toolbar.js:62 +#: js/toolbar.js:130 +#: js/toolbar.js:203 +#: js/toolbar.js:265 +#: js/widgets/jseditor.js:339 +msgid "Help" +msgstr "" + +#: js/turtledefs.js:594 +msgid "Displays help messages for the main and auxiliary toolbar, right-click contextual menu for blocks and canvas, and palettes." +msgstr "" + +#: js/turtledefs.js:599 +#: js/toolbar.js:63 +#: js/toolbar.js:131 +#: js/toolbar.js:204 +#: js/toolbar.js:266 +msgid "Run slowly" +msgstr "" + +#: js/turtledefs.js:600 +msgid "Click to run the project in slow mode." +msgstr "" + +#: js/turtledefs.js:605 +#: js/toolbar.js:64 +#: js/toolbar.js:132 +#: js/toolbar.js:205 +#: js/toolbar.js:267 +msgid "Run step by step" +msgstr "" + +#: js/turtledefs.js:606 +msgid "Click to run the project step by step." +msgstr "" + +#: js/turtledefs.js:612 +#: js/toolbar.js:65 +#: js/toolbar.js:133 +#: js/toolbar.js:206 +#: js/toolbar.js:268 +msgid "Display statistics" +msgstr "" + +#: js/turtledefs.js:613 +msgid "Display statistics about your Music project." +msgstr "" + +#: js/turtledefs.js:618 +#: js/toolbar.js:66 +#: js/toolbar.js:134 +#: js/toolbar.js:207 +#: js/toolbar.js:269 +msgid "Load plugin" +msgstr "" + +#: js/turtledefs.js:619 +msgid "Load a selected plugin." +msgstr "" + +#: js/turtledefs.js:626 +#: js/toolbar.js:67 +#: js/toolbar.js:135 +#: js/toolbar.js:208 +#: js/toolbar.js:270 +msgid "Delete plugin" +msgstr "" + +#: js/turtledefs.js:627 +msgid "Delete a selected plugin." +msgstr "" + +#: js/turtledefs.js:634 +msgid "Enable scrolling" +msgstr "" + +#: js/turtledefs.js:635 +msgid "You can scroll the blocks on the canvas." +msgstr "" + +#: js/turtledefs.js:643 +#: js/toolbar.js:70 +#: js/toolbar.js:138 +#: js/toolbar.js:211 +#: js/toolbar.js:273 +#: js/widgets/jseditor.js:401 +msgid "Change theme" +msgstr "" + +#: js/turtledefs.js:644 +msgid "Switch between dark and light mode." +msgstr "" + +#: js/turtledefs.js:649 +#: js/toolbar.js:73 +#: js/toolbar.js:141 +#: js/toolbar.js:214 +#: js/toolbar.js:276 +#: planet/js/LocalCard.js:54 +#: planet/js/StringHelper.js:71 +msgid "Merge with current project" +msgstr "" + +#: js/turtledefs.js:650 +msgid "Click to add another project into the current one." +msgstr "" + +#: js/turtledefs.js:655 +msgid "Wrap Turtle" +msgstr "" + +#: js/turtledefs.js:656 +msgid "Turn Turtle wrapping On or Off." +msgstr "" + +#: js/turtledefs.js:663 +#: js/toolbar.js:74 +#: js/toolbar.js:142 +msgid "Set Pitch Preview" +msgstr "" + +#: js/turtledefs.js:664 +msgid "Click to set the current pitch." +msgstr "" + +#: js/turtledefs.js:670 +#: js/toolbar.js:75 +#: js/toolbar.js:143 +#: js/toolbar.js:215 +#: js/toolbar.js:277 +msgid "JavaScript Editor" +msgstr "" + +#: js/turtledefs.js:671 +msgid "Converts Music Block programs to JavaScript." +msgstr "" + +#: js/turtledefs.js:677 +#: js/toolbar.js:76 +#: js/toolbar.js:144 +#: js/toolbar.js:216 +#: js/toolbar.js:278 +msgid "Restore" +msgstr "" + +#: js/turtledefs.js:678 +msgid "Restore blocks from the trash." +msgstr "" + +#: js/turtledefs.js:685 +msgid "Switch mode" +msgstr "" + +#: js/turtledefs.js:686 +msgid "Switch between beginner and advance modes." +msgstr "" + +#: js/turtledefs.js:691 +#: js/toolbar.js:79 +#: js/toolbar.js:147 +#: js/toolbar.js:158 +#: js/toolbar.js:219 +#: js/toolbar.js:281 +msgid "Select language" +msgstr "" + +#: js/turtledefs.js:692 +msgid "Select your language preference." +msgstr "" + +#: js/turtledefs.js:697 +msgid "Contextual Menu for Blocks" +msgstr "" + +#: js/turtledefs.js:698 +msgid "Right-click on a block to access common actions." +msgstr "" + +#: js/turtledefs.js:703 +#: planet/js/StringHelper.js:46 +msgid "Delete" +msgstr "" + +#: js/turtledefs.js:704 +msgid "To delete a block, right-click on it. Then you will see the delete option" +msgstr "" + +#: js/turtledefs.js:709 +#: js/activity.js:3120 +#: planet/js/LocalCard.js:31 +msgid "Copy" +msgstr "" + +#: js/turtledefs.js:710 +msgid "To copy a block, right-click on it. Then you will see the copy option" +msgstr "" + +#: js/turtledefs.js:715 +#: js/piemenus.js:3450 +msgid "Extract" +msgstr "" + +#: js/turtledefs.js:716 +msgid "To extract a block, right-click on it. Then you will see the extract option" +msgstr "" + +#: js/turtledefs.js:722 +msgid "Keyboard shortcuts" +msgstr "" + +#: js/turtledefs.js:723 +msgid "You can type d to create a do block and r to create a re block etc." +msgstr "" + +#: js/turtledefs.js:730 +msgid "Contextual Menu for Canvas" +msgstr "" + +#: js/turtledefs.js:731 +msgid "Right-click on the canvas to perform additional canvas-related tasks." +msgstr "" + +#: js/turtledefs.js:738 +msgid "Turn on/off lines for cartesian or polar grids." +msgstr "" + +#: js/turtledefs.js:740 +msgid "Turn on/off music staffs." +msgstr "" + +#: js/turtledefs.js:746 +msgid "Clear the screen and return the mice to their initial positions." +msgstr "" + +#: js/turtledefs.js:752 +msgid "Collapse the graphics window." +msgstr "" + +#: js/turtledefs.js:757 +#: js/activity.js:5642 +msgid "Home" +msgstr "" + +#: js/turtledefs.js:758 +msgid "Return all blocks to the center of the screen." +msgstr "" + +#: js/turtledefs.js:763 +#: js/activity.js:5650 +msgid "Show/hide blocks" +msgstr "" + +#: js/turtledefs.js:764 +msgid "Hide or show the blocks and the palettes." +msgstr "" + +#: js/turtledefs.js:769 +#: js/activity.js:5656 +msgid "Expand/collapse blocks" +msgstr "" + +#: js/turtledefs.js:770 +msgid "Expand or collapse start and action stacks." +msgstr "" + +#: js/turtledefs.js:777 +#: js/activity.js:5662 +msgid "Decrease block size" +msgstr "" + +#: js/turtledefs.js:778 +msgid "Decrease the size of the blocks." +msgstr "" + +#: js/turtledefs.js:783 +#: js/activity.js:5668 +msgid "Increase block size" +msgstr "" + +#: js/turtledefs.js:784 +msgid "Increase the size of the blocks." +msgstr "" + +#: js/turtledefs.js:790 +msgid "Select" +msgstr "" + +#: js/turtledefs.js:791 +msgid "Left-click and drag on workspace to select multiple blocks." +msgstr "" + +#: js/turtledefs.js:798 +msgid "Palette buttons" +msgstr "" + +#: js/turtledefs.js:799 +msgid "This toolbar contains the palette buttons including Rhythm Pitch Tone Action and more." +msgstr "" + +#: js/turtledefs.js:801 +msgid "Click to show the palettes of blocks and drag blocks from the palettes onto the canvas to use them." +msgstr "" + +#: js/turtledefs.js:809 +msgid "A detailed guide to Turtle Blocks is available." +msgstr "" + +#: js/turtledefs.js:813 +msgid "Turtle Blocks Guide" +msgstr "" + +#: js/turtledefs.js:816 +#: js/turtledefs.js:839 +#: js/widgets/help.js:338 +msgid "About" +msgstr "" + +#: js/turtledefs.js:817 +msgid "Turtle Blocks is an open source collection of tools for exploring musical concepts." +msgstr "" + +#: js/turtledefs.js:819 +msgid "A full list of contributors can be found in the Turtle Blocks GitHub repository." +msgstr "" + +#: js/turtledefs.js:821 +msgid "Turtle Blocks is licensed under the AGPL." +msgstr "" + +#: js/turtledefs.js:829 +msgid "Turtle Blocks GitHub repository" +msgstr "" + +#: js/turtledefs.js:832 +#: js/widgets/help.js:339 +#: js/widgets/help.js:361 +msgid "Congratulations." +msgstr "" + +#: js/turtledefs.js:833 +msgid "You have finished the tour. Please enjoy Turtle Blocks!" +msgstr "" + +#: js/turtledefs.js:840 +msgid "Music Blocks is an open source collection of tools for exploring musical concepts." +msgstr "" + +#: js/turtledefs.js:842 +msgid "A full list of contributors can be found in the Music Blocks GitHub repository." +msgstr "" + +#: js/turtledefs.js:844 +msgid "Music Blocks is licensed under the AGPL." +msgstr "" + +#: js/turtledefs.js:852 +msgid "Music Blocks GitHub repository" +msgstr "" + +#: js/turtledefs.js:855 +msgid "Congratulations!" +msgstr "" + +#: js/turtledefs.js:856 +msgid "You have finished the tour. Please enjoy Music Blocks!" +msgstr "" + +#: js/activity.js:418 +#: js/activity.js:423 +msgid "Search for blocks" +msgstr "" + +#: js/activity.js:1348 +msgid "Import MIDI" +msgstr "" + +#: js/activity.js:1355 +msgid "Set the max blocks to generate :" +msgstr "" + +#: js/activity.js:1404 +msgid "Clear Workspace" +msgstr "" + +#: js/activity.js:1409 +msgid "Are you sure you want to clear the workspace?" +msgstr "" + +#: js/activity.js:1628 +msgid "Enter file name" +msgstr "" + +#: js/activity.js:1630 +msgid "File save canceled" +msgstr "" + +#: js/activity.js:1649 +msgid "Click on stop saving" +msgstr "" + +#: js/activity.js:1936 +msgid "Catching mice" +msgstr "" + +#: js/activity.js:1937 +msgid "Cleaning the instruments" +msgstr "" + +#: js/activity.js:1938 +msgid "Testing key pieces" +msgstr "" + +#: js/activity.js:1939 +msgid "Sight-reading" +msgstr "" + +#: js/activity.js:1940 +msgid "Combining math and music" +msgstr "" + +#: js/activity.js:1941 +msgid "Generating more blocks" +msgstr "" + +#: js/activity.js:1942 +msgid "Do Re Mi Fa Sol La Ti Do" +msgstr "" + +#: js/activity.js:1943 +msgid "Tuning string instruments" +msgstr "" + +#: js/activity.js:1944 +msgid "Pressing random keys" +msgstr "" + +#: js/activity.js:2126 +msgid "plugins will be removed upon restart." +msgstr "" + +#: js/activity.js:2135 +msgid "show Cartesian" +msgstr "" + +#: js/activity.js:2666 +msgid "output tools" +msgstr "" + +#: js/activity.js:2669 +msgid "custom note" +msgstr "" + +#: js/activity.js:2672 +msgid "accidental name" +msgstr "" + +#: js/activity.js:2675 +#: js/blocks/PitchBlocks.js:855 +msgid "east indian solfege" +msgstr "" + +#: js/activity.js:2678 +#: js/blocks/PitchBlocks.js:869 +msgid "note name" +msgstr "" + +#: js/activity.js:2681 +#: js/blocks/IntervalsBlocks.js:92 +msgid "temperament name" +msgstr "" + +#: js/activity.js:2687 +msgid "chord name" +msgstr "" + +#: js/activity.js:2693 +msgid "filter type" +msgstr "" + +#: js/activity.js:2696 +msgid "oscillator type" +msgstr "" + +#: js/activity.js:2699 +#: js/blocks.js:2487 +#: js/blocks.js:2495 +msgid "audio file" +msgstr "" + +#: js/activity.js:2702 +#: js/blocks/DrumBlocks.js:32 +msgid "noise name" +msgstr "" + +#: js/activity.js:2705 +#: js/blocks/DrumBlocks.js:75 +msgid "drum name" +msgstr "" + +#: js/activity.js:2708 +#: js/blocks/DrumBlocks.js:119 +msgid "effects name" +msgstr "" + +#: js/activity.js:2711 +msgid "wrap mode" +msgstr "" + +#: js/activity.js:2714 +msgid "load file" +msgstr "" + +#: js/activity.js:2885 +#: js/activity.js:5811 +msgid "This block is deprecated." +msgstr "" + +#: js/activity.js:2887 +#: js/activity.js:5813 +msgid "Block cannot be found." +msgstr "" + +#: js/activity.js:3116 +msgid "Saving block artwork" +msgstr "" + +#: js/activity.js:3124 +msgid "Erase" msgstr "" -#: js/activity.js:3086 -#: js/activity.js:3108 +#: js/activity.js:3160 +#: js/activity.js:3183 msgid "Paste" msgstr "" -#: js/activity.js:3090 +#: js/activity.js:3164 msgid "Save block help" msgstr "" -#: js/activity.js:3121 -#: js/activity.js:3172 +#: js/activity.js:3196 +#: js/activity.js:3247 #: js/block.js:2474 -#: js/block.js:3433 -#: js/block.js:3450 -#: js/utils/musicutils.js:4111 -#: js/utils/musicutils.js:5623 +#: js/block.js:3435 +#: js/block.js:3452 +#: js/utils/musicutils.js:4275 +#: js/utils/musicutils.js:5787 #.TRANS: the note names must be separated by single spaces #.TRANS: the note names must be separated by single spaces msgid "ti la sol fa mi re do" msgstr "" -#: js/activity.js:3175 +#: js/activity.js:3250 msgid "Jumping to the bottom of the page." msgstr "" -#: js/activity.js:3181 +#: js/activity.js:3256 msgid "Scrolling up." msgstr "" -#: js/activity.js:3186 +#: js/activity.js:3261 msgid "Scrolling down." msgstr "" -#: js/activity.js:3191 +#: js/activity.js:3266 msgid "Extracting block" msgstr "" -#: js/activity.js:3199 +#: js/activity.js:3274 msgid "Moving block up." msgstr "" -#: js/activity.js:3220 +#: js/activity.js:3295 msgid "Moving block down." msgstr "" -#: js/activity.js:3241 +#: js/activity.js:3316 msgid "Moving block left." msgstr "" -#: js/activity.js:3258 +#: js/activity.js:3333 msgid "Moving block right." msgstr "" -#: js/activity.js:3273 +#: js/activity.js:3348 msgid "Jump to home position." msgstr "" -#: js/activity.js:3300 +#: js/activity.js:3375 #: js/blocks/ExtrasBlocks.js:274 msgid "Hide blocks" msgstr "" -#: js/activity.js:3659 -#: js/activity.js:3674 +#: js/activity.js:3734 +#: js/activity.js:3749 msgid "Trash can is empty." msgstr "" -#: js/activity.js:3681 -#: js/activity.js:3762 +#: js/activity.js:3756 +#: js/activity.js:3837 msgid "Item restored from the trash." msgstr "" -#: js/activity.js:3820 +#: js/activity.js:3895 msgid "Restore last item" msgstr "" -#: js/activity.js:3821 +#: js/activity.js:3896 msgid "Restore all items" msgstr "" -#: js/activity.js:4379 +#: js/activity.js:4457 msgid "Click the run button to run the project." msgstr "" -#: js/activity.js:5564 -#: js/turtledefs.js:757 -msgid "Home" -msgstr "" - -#: js/activity.js:5572 -#: js/turtledefs.js:763 -msgid "Show/hide blocks" -msgstr "" - -#: js/activity.js:5578 -#: js/turtledefs.js:769 -msgid "Expand/collapse blocks" -msgstr "" - -#: js/activity.js:5584 -#: js/turtledefs.js:777 -msgid "Decrease block size" -msgstr "" - -#: js/activity.js:5590 -#: js/turtledefs.js:783 -msgid "Increase block size" -msgstr "" - -#: js/activity.js:5856 +#: js/activity.js:5938 msgid "Could not parse JSON input." msgstr "" -#: js/activity.js:5987 +#: js/activity.js:6133 msgid "Select is enabled." msgstr "" -#: js/activity.js:5987 +#: js/activity.js:6133 msgid "Select is disabled." msgstr "" -#: js/activity.js:6369 -#: js/activity.js:6475 -#: js/activity.js:6526 +#: js/activity.js:6517 +#: js/activity.js:6575 +#: js/activity.js:6627 +#: js/activity.js:6678 msgid "Cannot load project from the file. Please check the file type." msgstr "" -#: js/activity.js:6812 +#: js/activity.js:6964 msgid "Invalid parameters" msgstr "" -#: js/activity.js:6963 +#: js/activity.js:7115 msgid "Error regenerating palettes. Please refresh the page." msgstr "" -#: js/block.js:1576 -#: js/block.js:1695 -#: js/palette.js:688 -#: js/blocks/IntervalsBlocks.js:63 -#: js/blocks/WidgetBlocks.js:259 -msgid "temperament" -msgstr "" - -#: js/block.js:1583 -#: js/lilypond.js:749 -#: js/lilypond.js:913 -#: js/lilypond.js:951 -#: js/logo.js:1189 -#: js/turtle-painter.js:1192 -#: js/turtle-painter.js:1193 -#: js/turtles.js:119 -#: js/blocks/ProgramBlocks.js:1267 -#: js/blocks/ActionBlocks.js:1223 -msgid "start" -msgstr "" - #: js/block.js:1590 msgid "matrix" msgstr "" #: js/block.js:1597 -#: js/blocks/WidgetBlocks.js:1510 +#: js/blocks/WidgetBlocks.js:1552 #: plugins/rodi.rtp:324 msgid "status" msgstr "" @@ -679,7 +1676,7 @@ msgid "ruler" msgstr "" #: js/block.js:1618 -#: js/blocks/WidgetBlocks.js:397 +#: js/blocks/WidgetBlocks.js:402 #.TRANS: timbre is the character or quality of a musical sound msgid "timbre" msgstr "" @@ -689,14 +1686,14 @@ msgid "stair" msgstr "" #: js/block.js:1632 -#: js/blocks/WidgetBlocks.js:707 +#: js/blocks/WidgetBlocks.js:712 #.TRANS: the speed at music is should be played. msgid "tempo" msgstr "" #: js/block.js:1639 #: js/block.js:1702 -#: js/blocks/IntervalsBlocks.js:1464 +#: js/blocks/IntervalsBlocks.js:1444 #.TRANS: mode, e.g., Major in C Major msgid "mode" msgstr "" @@ -706,28 +1703,13 @@ msgid "slider" msgstr "" #: js/block.js:1653 -#: js/blocks/SensorsBlocks.js:1002 +#: js/blocks/SensorsBlocks.js:1028 msgid "keyboard" msgstr "" -#: js/block.js:1660 -#: js/block.js:2552 -#: js/lilypond.js:732 -#: js/lilypond.js:897 -#: js/lilypond.js:941 -#: js/palette.js:660 -#: js/turtledefs.js:129 -#: js/turtledefs.js:230 -#: js/blocks/DrumBlocks.js:477 -#: js/blocks/RhythmBlocks.js:766 -#: js/blocks/VolumeBlocks.js:502 -#: js/widgets/phrasemaker.js:1135 -msgid "drum" -msgstr "" - #: js/block.js:1667 -#: js/blocks/WidgetBlocks.js:1190 -#: js/blocks/WidgetBlocks.js:1228 +#: js/blocks/WidgetBlocks.js:1195 +#: js/blocks/WidgetBlocks.js:1233 #.TRANS: widget for subdividing a measure into distinct rhythmic elements msgid "rhythm maker" msgstr "" @@ -735,19 +1717,19 @@ msgstr "" #: js/block.js:1674 #: js/block.js:2383 #: js/block.js:2440 +#: js/blocks/MeterBlocks.js:1368 #: js/blocks/OrnamentBlocks.js:220 #: js/blocks/OrnamentBlocks.js:312 #: js/blocks/RhythmBlocks.js:33 -#: js/blocks/RhythmBlocks.js:356 -#: js/blocks/RhythmBlocks.js:766 -#: js/blocks/RhythmBlocks.js:806 +#: js/blocks/RhythmBlocks.js:350 +#: js/blocks/RhythmBlocks.js:756 +#: js/blocks/RhythmBlocks.js:796 #: js/blocks/RhythmBlockPaletteBlocks.js:70 -#: js/blocks/RhythmBlockPaletteBlocks.js:252 -#: js/blocks/RhythmBlockPaletteBlocks.js:517 -#: js/blocks/RhythmBlockPaletteBlocks.js:586 -#: js/blocks/RhythmBlockPaletteBlocks.js:637 -#: js/blocks/RhythmBlockPaletteBlocks.js:907 -#: js/blocks/MeterBlocks.js:1368 +#: js/blocks/RhythmBlockPaletteBlocks.js:257 +#: js/blocks/RhythmBlockPaletteBlocks.js:522 +#: js/blocks/RhythmBlockPaletteBlocks.js:591 +#: js/blocks/RhythmBlockPaletteBlocks.js:640 +#: js/blocks/RhythmBlockPaletteBlocks.js:908 #: js/turtleactions/DictActions.js:85 #: js/widgets/phrasemaker.js:1039 #: js/widgets/phrasemaker.js:2745 @@ -760,14 +1742,14 @@ msgstr "" #: js/block.js:1681 #: js/block.js:2308 #: js/block.js:2331 -#: js/blocks/IntervalsBlocks.js:1071 +#: js/blocks/IntervalsBlocks.js:1057 #: js/blocks/OrnamentBlocks.js:312 #.TRANS: calculate a relative step between notes based on semi-tones msgid "scalar interval" msgstr "" #: js/block.js:1688 -#: js/blocks/RhythmBlocks.js:148 +#: js/blocks/RhythmBlocks.js:144 msgid "milliseconds" msgstr "" @@ -775,8 +1757,8 @@ msgstr "" #: js/block.js:2385 #: js/block.js:2438 #: js/block.js:2554 -#: js/blocks/ProgramBlocks.js:1273 -#: js/blocks/RhythmBlocks.js:712 +#: js/blocks/ProgramBlocks.js:1271 +#: js/blocks/RhythmBlocks.js:704 #: js/widgets/rhythmruler.js:1177 #: js/widgets/rhythmruler.js:1323 msgid "silence" @@ -791,425 +1773,265 @@ msgstr "" msgid "up" msgstr "" -#: js/block.js:2548 -#: js/rubrics.js:524 -#: js/turtledefs.js:124 -#: js/turtledefs.js:225 -#: js/blocks/IntervalsBlocks.js:63 -#: js/blocks/PitchBlocks.js:1839 -#: js/blocks/PitchBlocks.js:1853 -#: js/blocks/SensorsBlocks.js:178 -#: js/widgets/musickeyboard.js:2017 -#: js/widgets/phrasemaker.js:1133 -#.TRANS: pitch number -#.TRANS: we specify pitch in terms of a name and an octave. The name can be CDEFGAB or Do Re Mi Fa Sol La Ti. Octave is a number between 1 and 8. -msgid "pitch" -msgstr "" - -#: js/block.js:2963 +#: js/block.js:2965 msgid "Silence block cannot be removed." msgstr "" -#: js/block.js:3135 -#: js/piemenus.js:3457 +#: js/block.js:3137 +#: js/piemenus.js:3507 msgid "You can restore deleted blocks from the trash with the Restore From Trash button." msgstr "" -#: js/block.js:3765 -#: js/blocks.js:2607 -#: js/blocks.js:3218 -#: js/palette.js:701 -#: js/blocks/BooleanBlocks.js:77 -#: js/blocks/BooleanBlocks.js:167 -#: js/blocks/BooleanBlocks.js:251 -#: js/blocks/BooleanBlocks.js:335 -#: js/blocks/BooleanBlocks.js:433 -#: js/blocks/BooleanBlocks.js:539 -#: js/blocks/BooleanBlocks.js:640 -#: js/blocks/BooleanBlocks.js:741 -#: js/blocks/BooleanBlocks.js:847 -#: js/blocks/BooleanBlocks.js:948 -#: js/blocks/BooleanBlocks.js:1033 -#: js/blocks/SensorsBlocks.js:911 -msgid "true" -msgstr "" - -#: js/block.js:3765 -#: js/blocks.js:2609 -#: js/blocks.js:3220 +#: js/block.js:3767 +#: js/blocks.js:2617 +#: js/blocks.js:3228 #: js/blocks/BooleanBlocks.js:79 #: js/blocks/BooleanBlocks.js:169 #: js/blocks/BooleanBlocks.js:253 #: js/blocks/BooleanBlocks.js:337 -#: js/blocks/BooleanBlocks.js:435 -#: js/blocks/BooleanBlocks.js:541 -#: js/blocks/BooleanBlocks.js:642 -#: js/blocks/BooleanBlocks.js:743 -#: js/blocks/BooleanBlocks.js:849 -#: js/blocks/BooleanBlocks.js:950 -#: js/blocks/SensorsBlocks.js:913 +#: js/blocks/BooleanBlocks.js:433 +#: js/blocks/BooleanBlocks.js:537 +#: js/blocks/BooleanBlocks.js:636 +#: js/blocks/BooleanBlocks.js:735 +#: js/blocks/BooleanBlocks.js:841 +#: js/blocks/BooleanBlocks.js:942 +#: js/blocks/SensorsBlocks.js:939 msgid "false" msgstr "" -#: js/block.js:3776 -#: js/block.js:3789 -#: js/blocks/ExtrasBlocks.js:618 +#: js/block.js:3778 +#: js/block.js:3791 +#: js/blocks/ExtrasBlocks.js:616 msgid "Cartesian" msgstr "" -#: js/block.js:3777 -#: js/block.js:3790 -#: js/blocks/ExtrasBlocks.js:622 +#: js/block.js:3779 +#: js/block.js:3792 +#: js/blocks/ExtrasBlocks.js:620 msgid "polar" msgstr "" -#: js/block.js:3778 -#: js/block.js:3791 -#: js/blocks/ExtrasBlocks.js:626 +#: js/block.js:3780 +#: js/block.js:3793 +#: js/blocks/ExtrasBlocks.js:624 msgid "Cartesian/Polar" msgstr "" -#: js/block.js:3779 -#: js/block.js:3798 -#: js/blocks/ExtrasBlocks.js:655 +#: js/block.js:3781 +#: js/block.js:3800 +#: js/blocks/ExtrasBlocks.js:653 msgid "none" msgstr "" -#: js/block.js:3792 -#: js/blocks/ExtrasBlocks.js:631 +#: js/block.js:3794 +#: js/blocks/ExtrasBlocks.js:629 msgid "treble" msgstr "" -#: js/block.js:3793 -#: js/blocks/ExtrasBlocks.js:635 +#: js/block.js:3795 +#: js/blocks/ExtrasBlocks.js:633 msgid "grand staff" msgstr "" -#: js/block.js:3794 -#: js/blocks/ExtrasBlocks.js:639 +#: js/block.js:3796 +#: js/blocks/ExtrasBlocks.js:637 msgid "mezzo-soprano" msgstr "" -#: js/block.js:3795 -#: js/blocks/ExtrasBlocks.js:643 +#: js/block.js:3797 +#: js/blocks/ExtrasBlocks.js:641 msgid "alto" msgstr "" -#: js/block.js:3796 -#: js/blocks/ExtrasBlocks.js:647 +#: js/block.js:3798 +#: js/blocks/ExtrasBlocks.js:645 msgid "tenor" msgstr "" -#: js/block.js:3797 +#: js/block.js:3799 #: js/utils/musicutils.js:1111 -#: js/utils/synthutils.js:80 -#: js/blocks/ExtrasBlocks.js:651 +#: js/utils/synthutils.js:86 +#: js/blocks/ExtrasBlocks.js:649 #.TRANS: musical instrument msgid "bass" msgstr "" -#: js/block.js:3842 -#: js/blocks.js:2600 -#: js/blocks.js:3211 -#.TRANS: on2 should be translated as "on" as in on and off +#: js/block.js:3844 +#: js/blocks.js:2608 +#: js/blocks.js:3219 msgid "on2" msgstr "" -#: js/block.js:3844 -#: js/blocks.js:2602 -#: js/blocks.js:3213 -#.TRANS: off should be translated as "off" as in on and off +#: js/block.js:3846 +#: js/blocks.js:2610 +#: js/blocks.js:3221 msgid "off" msgstr "" -#: js/block.js:4411 +#: js/block.js:4414 msgid "Not a number" msgstr "" -#: js/block.js:4418 +#: js/block.js:4421 msgid "Octave value must be between 1 and 8." msgstr "" -#: js/block.js:4426 +#: js/block.js:4429 msgid "Numbers can have at most 10 digits." msgstr "" -#: js/blocks.js:1212 -#: js/blocks.js:3444 -#: js/blocks.js:3834 -#: js/blocks.js:3865 -#: js/blocks.js:3914 -#: js/blocks.js:3949 -#: js/blocks.js:6586 -#: js/palette.js:592 -#: js/palette.js:721 -#: js/palette.js:1191 -#: js/blocks/BoxesBlocks.js:282 -#: js/blocks/BoxesBlocks.js:285 -#: js/blocks/BoxesBlocks.js:405 -#: js/blocks/BoxesBlocks.js:594 -msgid "box" -msgstr "" - -#: js/blocks.js:1713 +#: js/blocks.js:1714 msgid "Consider breaking this stack into parts." msgstr "" -#: js/blocks.js:2472 -#: js/palette.js:736 -#: js/blocks/MediaBlocks.js:602 -msgid "open file" -msgstr "" - -#: js/blocks.js:3247 -#: js/palette.js:657 -#: js/blocks/MediaBlocks.js:892 -#: js/blocks/MediaBlocks.js:963 -msgid "text" -msgstr "" - -#: js/blocks.js:3443 -#: js/palette.js:724 -#: js/palette.js:725 -#: js/blocks/BoxesBlocks.js:514 -msgid "store in box" -msgstr "" - -#: js/blocks.js:3448 -#: js/blocks.js:3888 -#: js/blocks.js:3923 -#: js/blocks.js:3958 -#: js/blocks.js:5862 -#: js/blocks.js:5883 +#: js/blocks.js:3456 +#: js/blocks.js:3896 +#: js/blocks.js:3931 +#: js/blocks.js:3966 +#: js/blocks.js:5870 +#: js/blocks.js:5891 #: js/blocks/BoxesBlocks.js:772 msgid "box1" msgstr "" -#: js/blocks.js:3450 -#: js/blocks.js:3890 -#: js/blocks.js:3925 -#: js/blocks.js:3960 -#: js/blocks.js:5864 -#: js/blocks.js:5885 +#: js/blocks.js:3458 +#: js/blocks.js:3898 +#: js/blocks.js:3933 +#: js/blocks.js:3968 +#: js/blocks.js:5872 +#: js/blocks.js:5893 #: js/blocks/BoxesBlocks.js:663 msgid "box2" msgstr "" -#: js/blocks.js:4122 -#: js/palette.js:722 -#: js/palette.js:727 -#: js/palette.js:1127 -#: js/blocks/BoxesBlocks.js:591 -msgid "store in" -msgstr "" - -#: js/blocks.js:4122 +#: js/blocks.js:4130 #: js/blocks/BoxesBlocks.js:595 -#: js/blocks/DictBlocks.js:215 -#: js/blocks/DictBlocks.js:289 +#: js/blocks/DictBlocks.js:213 +#: js/blocks/DictBlocks.js:287 +#: js/blocks/EnsembleBlocks.js:393 +#: js/blocks/EnsembleBlocks.js:404 +#: js/blocks/MediaBlocks.js:730 #: js/blocks/ProgramBlocks.js:390 #: js/blocks/ProgramBlocks.js:495 #: js/blocks/ProgramBlocks.js:658 +#: js/blocks/ToneBlocks.js:1021 #: js/blocks/PitchBlocks.js:656 #: js/blocks/PitchBlocks.js:934 -#: js/blocks/PitchBlocks.js:1866 -#: js/blocks/ToneBlocks.js:1025 -#: js/blocks/EnsembleBlocks.js:393 -#: js/blocks/EnsembleBlocks.js:404 -#: js/blocks/MediaBlocks.js:746 +#: js/blocks/PitchBlocks.js:1877 msgid "name" msgstr "" -#: js/blocks.js:4122 +#: js/blocks.js:4130 #: js/blocks/BoxesBlocks.js:75 #: js/blocks/BoxesBlocks.js:595 -#: js/blocks/DictBlocks.js:289 -#: js/blocks/DictBlocks.js:430 -#: js/blocks/HeapBlocks.js:544 -#: js/blocks/RhythmBlocks.js:1130 +#: js/blocks/DictBlocks.js:287 +#: js/blocks/DictBlocks.js:428 +#: js/blocks/HeapBlocks.js:542 +#: js/blocks/RhythmBlocks.js:1120 msgid "value" msgstr "" -#: js/blocks.js:4465 +#: js/blocks.js:4473 msgid "Forever loop detected inside a note value block. Unexpected things may happen." msgstr "" -#: js/blocks.js:4988 +#: js/blocks.js:4996 msgid "There is no block selected." msgstr "" -#: js/blocks.js:5094 -#: js/blocks/MediaBlocks.js:803 +#: js/blocks.js:5102 +#: js/blocks/MediaBlocks.js:787 #.TRANS: Avatar is the image used to determine the appearance of the mouse. msgid "avatar" msgstr "" -#: js/blocks.js:5097 -#: js/blocks/ToneBlocks.js:1010 -#: js/widgets/sampler.js:946 -#.TRANS: The sound sample that the user uploads. -msgid "sample" -msgstr "" - -#: js/lilypond.js:605 -#: js/lilypond.js:904 -#: js/lilypond.js:910 -#: js/lilypond.js:948 -#: js/rubrics.js:526 -msgid "mouse" -msgstr "" - -#: js/lilypond.js:606 -msgid "brown rat" -msgstr "" - -#: js/lilypond.js:607 -msgid "mole" -msgstr "" - -#: js/lilypond.js:608 -msgid "chipmunk" -msgstr "" - -#: js/lilypond.js:609 -msgid "red squirrel" -msgstr "" - -#: js/lilypond.js:610 -msgid "guinea pig" -msgstr "" - -#: js/lilypond.js:611 -msgid "capybara" -msgstr "" - -#: js/lilypond.js:612 -msgid "coypu" -msgstr "" - -#: js/lilypond.js:613 -msgid "black rat" -msgstr "" - -#: js/lilypond.js:614 -msgid "grey squirrel" -msgstr "" - -#: js/lilypond.js:615 -msgid "flying squirrel" -msgstr "" - -#: js/lilypond.js:616 -msgid "bat" -msgstr "" - -#: js/lilypond.js:749 -#: js/lilypond.js:913 -#: js/lilypond.js:951 -#: js/blocks/ActionBlocks.js:1256 -#: js/blocks/ExtrasBlocks.js:559 -msgid "start drum" -msgstr "" - -#: js/logo.js:61 -msgid "Not a valid pitch name" -msgstr "" - -#: js/logo.js:511 -#: js/blocks/ProgramBlocks.js:258 -#: js/blocks/ProgramBlocks.js:427 -msgid "You must select a file." -msgstr "" - -#: js/logo.js:1705 -msgid "Playback is ready." -msgstr "" - -#: js/palette.js:654 -#: js/turtledefs.js:737 -#: js/turtles.js:940 -msgid "Grid" -msgstr "" - -#: js/palette.js:663 -msgid "effect" +#: js/blocks.js:5105 +#: js/utils/synthutils.js:3208 +#: js/blocks/ToneBlocks.js:1006 +#: js/widgets/sampler.js:1561 +#.TRANS: The sound sample that the user uploads. +msgid "sample" msgstr "" -#: js/palette.js:669 -msgid "sargam" +#: js/languagebox.js:213 +msgid "Refresh your browser to change your language preference." msgstr "" -#: js/palette.js:684 -#: js/blocks/PitchBlocks.js:1209 -msgid "custom pitch" +#: js/languagebox.js:241 +msgid "Music Blocks is already set to this language." msgstr "" -#: js/palette.js:692 -msgid "accidental" +#: js/logo.js:61 +msgid "Not a valid pitch name" msgstr "" -#: js/palette.js:716 -#: js/blocks/PitchBlocks.js:405 -msgid "pitch converter" +#: js/logo.js:516 +#: js/blocks/ProgramBlocks.js:258 +#: js/blocks/ProgramBlocks.js:427 +msgid "You must select a file." +msgstr "" + +#: js/logo.js:1727 +msgid "Playback is ready." msgstr "" -#: js/piemenus.js:200 -#: js/utils/musicutils.js:1185 -#: js/utils/musicutils.js:1205 -#: js/widgets/musickeyboard.js:2431 +#: js/piemenus.js:203 +#: js/utils/musicutils.js:1186 +#: js/utils/musicutils.js:1206 +#: js/widgets/musickeyboard.js:2474 #: js/widgets/phrasemaker.js:2002 -#: js/widgets/sampler.js:781 +#: js/widgets/sampler.js:1349 #.TRANS: double sharp is a music term related to pitch msgid "double sharp" msgstr "" -#: js/piemenus.js:201 -#: js/utils/musicutils.js:1183 -#: js/utils/musicutils.js:1206 +#: js/piemenus.js:204 +#: js/utils/musicutils.js:1184 +#: js/utils/musicutils.js:1207 #: js/blocks/PitchBlocks.js:1539 #: js/turtleactions/PitchActions.js:323 -#: js/widgets/musickeyboard.js:2432 +#: js/widgets/musickeyboard.js:2475 #: js/widgets/phrasemaker.js:2003 -#: js/widgets/sampler.js:782 +#: js/widgets/sampler.js:1350 #.TRANS: sharp is a music term related to pitch #.TRANS: sharp is a half-step up in pitch msgid "sharp" msgstr "" -#: js/piemenus.js:202 -#: js/utils/musicutils.js:1181 -#: js/utils/musicutils.js:1207 -#: js/widgets/musickeyboard.js:2433 +#: js/piemenus.js:205 +#: js/utils/musicutils.js:1182 +#: js/utils/musicutils.js:1208 +#: js/widgets/musickeyboard.js:2476 #: js/widgets/phrasemaker.js:2004 -#: js/widgets/sampler.js:783 +#: js/widgets/sampler.js:1351 #.TRANS: natural is a music term related to pitch msgid "natural" msgstr "" -#: js/piemenus.js:203 -#: js/utils/musicutils.js:1179 -#: js/utils/musicutils.js:1208 +#: js/piemenus.js:206 +#: js/utils/musicutils.js:1180 +#: js/utils/musicutils.js:1209 #: js/blocks/PitchBlocks.js:1498 #: js/turtleactions/PitchActions.js:326 -#: js/widgets/musickeyboard.js:2434 +#: js/widgets/musickeyboard.js:2477 #: js/widgets/phrasemaker.js:2005 -#: js/widgets/sampler.js:784 +#: js/widgets/sampler.js:1352 #.TRANS: flat is a music term related to pitch #.TRANS: flat is a half-step down in pitch msgid "flat" msgstr "" -#: js/piemenus.js:204 -#: js/utils/musicutils.js:1177 -#: js/utils/musicutils.js:1209 -#: js/widgets/musickeyboard.js:2435 +#: js/piemenus.js:207 +#: js/utils/musicutils.js:1178 +#: js/utils/musicutils.js:1210 +#: js/widgets/musickeyboard.js:2478 #: js/widgets/phrasemaker.js:2006 -#: js/widgets/sampler.js:785 +#: js/widgets/sampler.js:1353 #.TRANS: double flat is a music term related to pitch msgid "double flat" msgstr "" -#: js/piemenus.js:2827 +#: js/piemenus.js:2907 #: js/utils/musicutils.js:1002 #: js/blocks/PitchBlocks.js:1385 #.TRANS: unison is a music term related to intervals @@ -1217,408 +2039,160 @@ msgstr "" msgid "unison" msgstr "" -#: js/piemenus.js:2981 -#: js/piemenus.js:3054 +#: js/piemenus.js:3059 +#: js/piemenus.js:3132 #: js/utils/musicutils.js:1010 -#: js/utils/musicutils.js:1187 -#: js/utils/musicutils.js:1372 +#: js/utils/musicutils.js:1188 +#: js/utils/musicutils.js:1373 #.TRANS: major is a music term related to intervals and mode msgid "major" msgstr "" -#: js/piemenus.js:2981 -#: js/piemenus.js:3054 +#: js/piemenus.js:3059 +#: js/piemenus.js:3132 #: js/utils/musicutils.js:1028 #.TRANS: modal scale for music msgid "ionian" msgstr "" -#: js/piemenus.js:2983 -#: js/piemenus.js:3058 +#: js/piemenus.js:3061 +#: js/piemenus.js:3136 #: js/utils/musicutils.js:1008 -#: js/utils/musicutils.js:1188 -#: js/utils/musicutils.js:1369 +#: js/utils/musicutils.js:1189 +#: js/utils/musicutils.js:1370 #.TRANS: minor is a music term related to intervals and mode msgid "minor" msgstr "" -#: js/piemenus.js:2983 -#: js/piemenus.js:3058 +#: js/piemenus.js:3061 +#: js/piemenus.js:3136 #: js/utils/musicutils.js:1038 #.TRANS: modal scale for music msgid "aeolian" msgstr "" -#: js/piemenus.js:3373 -#: js/blocks/FlowBlocks.js:136 +#: js/piemenus.js:3449 +#: js/blocks/FlowBlocks.js:134 msgid "Duplicate" msgstr "" -#: js/piemenus.js:3374 -#: js/turtledefs.js:715 -msgid "Extract" -msgstr "" - -#: js/piemenus.js:3375 +#: js/piemenus.js:3451 msgid "Move to trash" msgstr "" -#: js/piemenus.js:3376 +#: js/piemenus.js:3452 #: js/widgets/temperament.js:454 #: js/widgets/temperament.js:456 #: js/widgets/temperament.js:1439 #: js/widgets/temperament.js:1441 -#: js/widgets/timbre.js:962 +#: js/widgets/timbre.js:965 #: planet/js/StringHelper.js:69 msgid "Close" msgstr "" -#: js/piemenus.js:3382 +#: js/piemenus.js:3458 msgid "Save stack" msgstr "" -#: js/piemenus.js:3386 -#: js/toolbar.js:62 -#: js/toolbar.js:129 -#: js/toolbar.js:201 -#: js/toolbar.js:262 -#: js/turtledefs.js:593 -msgid "Help" -msgstr "" - -#: js/piemenus.js:3412 +#: js/piemenus.js:3488 msgid "In order to copy a sample, you must reload the widget, import the sample again, and export it." msgstr "" -#: js/piemenus.js:3801 +#: js/piemenus.js:3851 msgid "You have chosen key for your pitch preview." msgstr "" -#: js/rubrics.js:523 -#: js/turtledefs.js:122 -#: js/turtledefs.js:223 -#: js/blocks/ProgramBlocks.js:745 -#: js/blocks/RhythmBlockPaletteBlocks.js:52 -#: js/blocks/RhythmBlockPaletteBlocks.js:234 -#: js/widgets/rhythmruler.js:2047 -#: js/widgets/rhythmruler.js:2054 -#: js/widgets/rhythmruler.js:2123 -#: js/widgets/rhythmruler.js:2130 -#: js/widgets/rhythmruler.js:2209 -#.TRANS: an arrangement of notes based on duration -msgid "rhythm" -msgstr "" - -#: js/rubrics.js:525 -#: js/turtledefs.js:126 -#: js/turtledefs.js:227 -msgid "tone" -msgstr "" - -#: js/rubrics.js:527 -#: js/turtledefs.js:135 -#: js/turtledefs.js:236 -#: js/widgets/phrasemaker.js:1137 -msgid "pen" -msgstr "" - -#: js/rubrics.js:528 -#: js/turtledefs.js:136 -#: js/turtledefs.js:237 -#: js/blocks/NumberBlocks.js:981 -#: js/blocks/PitchBlocks.js:1717 -#: js/blocks/PitchBlocks.js:1758 -msgid "number" -msgstr "" - -#: js/rubrics.js:529 -#: js/turtledefs.js:130 -#: js/turtledefs.js:231 -msgid "flow" -msgstr "" - -#: js/rubrics.js:531 -#: js/turtledefs.js:139 -#: js/turtledefs.js:240 -#: planet/js/GlobalTag.js:48 -#.TRANS: On the Planet, we use labels to tag projects. -msgid "Sensors" -msgstr "" - -#: js/rubrics.js:532 -#: js/turtledefs.js:138 -#: js/turtledefs.js:239 -#: js/blocks/MediaBlocks.js:930 -#: planet/js/GlobalTag.js:46 -#.TRANS: On the Planet, we use labels to tag projects. -msgid "Media" -msgstr "" - -#: js/rubrics.js:533 -msgid "mice" -msgstr "" - #: js/toolbar.js:48 -#: js/toolbar.js:115 +#: js/toolbar.js:116 msgid "About Music Blocks" msgstr "" -#: js/toolbar.js:51 -#: js/toolbar.js:118 -#: js/toolbar.js:190 -#: js/toolbar.js:251 -#: js/turtledefs.js:508 -msgid "Record" -msgstr "" - #: js/toolbar.js:52 #: js/toolbar.js:53 -#: js/toolbar.js:119 #: js/toolbar.js:120 -#: js/toolbar.js:191 -#: js/toolbar.js:192 -#: js/toolbar.js:252 -#: js/toolbar.js:253 -msgid "Full screen" -msgstr "" - -#: js/toolbar.js:54 #: js/toolbar.js:121 #: js/toolbar.js:193 -#: js/toolbar.js:254 -#: js/turtledefs.js:515 -msgid "Toggle Fullscreen" -msgstr "" - -#: js/toolbar.js:55 -#: js/toolbar.js:122 #: js/toolbar.js:194 #: js/toolbar.js:255 -#: js/toolbar.js:1140 -#: js/turtledefs.js:521 -#: planet/js/StringHelper.js:33 -msgid "New project" -msgstr "" - -#: js/toolbar.js:56 -#: js/toolbar.js:123 -#: js/toolbar.js:195 #: js/toolbar.js:256 -#: js/turtledefs.js:527 -msgid "Load project from file" -msgstr "" - -#: js/toolbar.js:57 -#: js/toolbar.js:124 -#: js/toolbar.js:125 -#: js/toolbar.js:196 -#: js/toolbar.js:257 -#: js/turtledefs.js:534 -#: js/turtledefs.js:545 -#: js/turtledefs.js:565 -msgid "Save project" -msgstr "" - -#: js/toolbar.js:58 -#: js/toolbar.js:80 -#: js/toolbar.js:82 -#: js/toolbar.js:147 -#: js/toolbar.js:158 -#: js/toolbar.js:160 -#: js/toolbar.js:197 -#: js/toolbar.js:218 -#: js/toolbar.js:220 -#: js/toolbar.js:258 -#: js/toolbar.js:279 -#: js/toolbar.js:281 -#: js/turtledefs.js:535 -#: js/turtledefs.js:566 -msgid "Save project as HTML" +msgid "Full screen" msgstr "" #: js/toolbar.js:59 -#: js/toolbar.js:126 -#: js/toolbar.js:198 -#: js/toolbar.js:259 +#: js/toolbar.js:127 +#: js/toolbar.js:200 +#: js/toolbar.js:262 msgid "Find and share projects" msgstr "" #: js/toolbar.js:60 -#: js/toolbar.js:127 -#: js/toolbar.js:199 -#: js/toolbar.js:260 +#: js/toolbar.js:128 +#: js/toolbar.js:201 +#: js/toolbar.js:263 msgid "Offline. Sharing is unavailable" msgstr "" #: js/toolbar.js:61 -#: js/toolbar.js:128 -#: js/toolbar.js:200 -#: js/toolbar.js:261 -msgid "Auxiliary menu" -msgstr "" - -#: js/toolbar.js:63 -#: js/toolbar.js:130 +#: js/toolbar.js:129 #: js/toolbar.js:202 -#: js/toolbar.js:263 -#: js/turtledefs.js:599 -msgid "Run slowly" -msgstr "" - -#: js/toolbar.js:64 -#: js/toolbar.js:131 -#: js/toolbar.js:203 #: js/toolbar.js:264 -#: js/turtledefs.js:605 -msgid "Run step by step" -msgstr "" - -#: js/toolbar.js:65 -#: js/toolbar.js:132 -#: js/toolbar.js:204 -#: js/toolbar.js:265 -#: js/turtledefs.js:612 -msgid "Display statistics" -msgstr "" - -#: js/toolbar.js:66 -#: js/toolbar.js:133 -#: js/toolbar.js:205 -#: js/toolbar.js:266 -#: js/turtledefs.js:618 -msgid "Load plugin" -msgstr "" - -#: js/toolbar.js:67 -#: js/toolbar.js:134 -#: js/toolbar.js:206 -#: js/toolbar.js:267 -#: js/turtledefs.js:626 -msgid "Delete plugin" -msgstr "" - -#: js/toolbar.js:68 -#: js/toolbar.js:135 -#: js/toolbar.js:207 -#: js/toolbar.js:268 -msgid "Enable horizontal scrolling" -msgstr "" - -#: js/toolbar.js:69 -#: js/toolbar.js:136 -#: js/toolbar.js:208 -#: js/toolbar.js:269 -msgid "Disable horizontal scrolling" -msgstr "" - -#: js/toolbar.js:70 -#: js/toolbar.js:137 -#: js/toolbar.js:209 -#: js/toolbar.js:270 -#: js/turtledefs.js:643 -msgid "Change theme" +msgid "Auxiliary menu" msgstr "" -#: js/toolbar.js:71 -#: js/toolbar.js:138 -#: js/toolbar.js:210 +#: js/toolbar.js:68 +#: js/toolbar.js:136 +#: js/toolbar.js:209 #: js/toolbar.js:271 -msgid "Light Mode" +msgid "Enable horizontal scrolling" msgstr "" -#: js/toolbar.js:72 -#: js/toolbar.js:139 -#: js/toolbar.js:211 +#: js/toolbar.js:69 +#: js/toolbar.js:137 +#: js/toolbar.js:210 #: js/toolbar.js:272 -msgid "Dark Mode" +msgid "Disable horizontal scrolling" msgstr "" -#: js/toolbar.js:73 -#: js/toolbar.js:140 +#: js/toolbar.js:71 +#: js/toolbar.js:139 #: js/toolbar.js:212 -#: js/toolbar.js:273 -#: js/turtledefs.js:649 -#: planet/js/LocalCard.js:54 -#: planet/js/StringHelper.js:71 -msgid "Merge with current project" -msgstr "" - -#: js/toolbar.js:74 -#: js/toolbar.js:141 -#: js/turtledefs.js:663 -msgid "Set Pitch Preview" -msgstr "" - -#: js/toolbar.js:75 -#: js/toolbar.js:142 -#: js/toolbar.js:213 #: js/toolbar.js:274 -#: js/turtledefs.js:670 -msgid "JavaScript Editor" +msgid "Light Mode" msgstr "" -#: js/toolbar.js:76 -#: js/toolbar.js:143 -#: js/toolbar.js:214 +#: js/toolbar.js:72 +#: js/toolbar.js:140 +#: js/toolbar.js:213 #: js/toolbar.js:275 -#: js/turtledefs.js:677 -msgid "Restore" +msgid "Dark Mode" msgstr "" #: js/toolbar.js:77 -#: js/toolbar.js:144 -#: js/toolbar.js:215 -#: js/toolbar.js:276 +#: js/toolbar.js:145 +#: js/toolbar.js:217 +#: js/toolbar.js:279 msgid "Switch to beginner mode" msgstr "" #: js/toolbar.js:78 -#: js/toolbar.js:145 -#: js/toolbar.js:216 -#: js/toolbar.js:277 -msgid "Switch to advanced mode" -msgstr "" - -#: js/toolbar.js:79 #: js/toolbar.js:146 -#: js/toolbar.js:157 -#: js/toolbar.js:217 -#: js/toolbar.js:278 -#: js/turtledefs.js:691 -msgid "Select language" -msgstr "" - -#: js/toolbar.js:81 -#: js/toolbar.js:85 -#: js/toolbar.js:150 -#: js/turtledefs.js:537 -msgid "Save mouse artwork as PNG" -msgstr "" - -#: js/toolbar.js:83 -#: js/toolbar.js:148 -#: js/turtledefs.js:568 -msgid "Save project as MIDI" +#: js/toolbar.js:218 +#: js/toolbar.js:280 +msgid "Switch to advanced mode" msgstr "" #: js/toolbar.js:84 -#: js/toolbar.js:149 +#: js/toolbar.js:150 msgid "Save mouse artwork as SVG" msgstr "" -#: js/toolbar.js:86 -#: js/toolbar.js:151 -#: js/turtledefs.js:570 -msgid "Save music as WAV" -msgstr "" - #: js/toolbar.js:87 -#: js/toolbar.js:152 +#: js/toolbar.js:153 msgid "Save sheet music as ABC" msgstr "" #: js/toolbar.js:88 -#: js/toolbar.js:153 +#: js/toolbar.js:154 msgid "Save sheet music as Lilypond" msgstr "" @@ -1626,50 +2200,41 @@ msgstr "" msgid "Save sheet music as MusicXML" msgstr "" -#: js/toolbar.js:90 -#: js/toolbar.js:154 -#: js/toolbar.js:163 -#: js/toolbar.js:223 -#: js/toolbar.js:284 -#: js/turtledefs.js:557 -msgid "Save block artwork as SVG" -msgstr "" - #: js/toolbar.js:91 -#: js/toolbar.js:155 -#: js/toolbar.js:164 -#: js/toolbar.js:224 -#: js/toolbar.js:285 +#: js/toolbar.js:156 +#: js/toolbar.js:165 +#: js/toolbar.js:226 +#: js/toolbar.js:288 msgid "Save block artwork as PNG" msgstr "" #: js/toolbar.js:92 -#: js/toolbar.js:156 -#: js/toolbar.js:165 -#: js/toolbar.js:225 -#: js/toolbar.js:286 -#: js/toolbar.js:1156 +#: js/toolbar.js:157 +#: js/toolbar.js:166 +#: js/toolbar.js:227 +#: js/toolbar.js:289 +#: js/toolbar.js:472 msgid "Confirm" msgstr "" #: js/toolbar.js:93 -#: js/toolbar.js:166 -#: js/toolbar.js:226 -#: js/toolbar.js:287 +#: js/toolbar.js:167 +#: js/toolbar.js:228 +#: js/toolbar.js:290 msgid "English (United States)" msgstr "" #: js/toolbar.js:94 -#: js/toolbar.js:167 -#: js/toolbar.js:227 -#: js/toolbar.js:288 +#: js/toolbar.js:168 +#: js/toolbar.js:229 +#: js/toolbar.js:291 msgid "English (United Kingdom)" msgstr "" #: js/toolbar.js:95 -#: js/toolbar.js:168 -#: js/toolbar.js:228 -#: js/toolbar.js:289 +#: js/toolbar.js:169 +#: js/toolbar.js:230 +#: js/toolbar.js:292 msgid "日本語" msgstr "" @@ -1678,2809 +2243,2793 @@ msgid "한국어" msgstr "" #: js/toolbar.js:97 -#: js/toolbar.js:170 -#: js/toolbar.js:230 -#: js/toolbar.js:291 +#: js/toolbar.js:171 +#: js/toolbar.js:232 +#: js/toolbar.js:294 msgid "español" msgstr "" #: js/toolbar.js:98 -#: js/toolbar.js:171 -#: js/toolbar.js:231 -#: js/toolbar.js:292 +#: js/toolbar.js:172 +#: js/toolbar.js:233 +#: js/toolbar.js:295 msgid "português" msgstr "" #: js/toolbar.js:99 -#: js/toolbar.js:172 -#: js/toolbar.js:232 -#: js/toolbar.js:293 +#: js/toolbar.js:173 +#: js/toolbar.js:234 +#: js/toolbar.js:296 msgid "にほんご" msgstr "" #: js/toolbar.js:100 -#: js/toolbar.js:173 -#: js/toolbar.js:233 -#: js/toolbar.js:294 +#: js/toolbar.js:174 +#: js/toolbar.js:235 +#: js/toolbar.js:297 msgid "中文" msgstr "" #: js/toolbar.js:101 -#: js/toolbar.js:174 -#: js/toolbar.js:234 -#: js/toolbar.js:295 +#: js/toolbar.js:175 +#: js/toolbar.js:236 +#: js/toolbar.js:298 msgid "ภาษาไทย" msgstr "" #: js/toolbar.js:102 -#: js/toolbar.js:175 -#: js/toolbar.js:235 -#: js/toolbar.js:296 -msgid "aymara" -msgstr "" - -#: js/toolbar.js:103 #: js/toolbar.js:176 -#: js/toolbar.js:236 -#: js/toolbar.js:297 -msgid "quechua" -msgstr "" - -#: js/toolbar.js:104 -#: js/toolbar.js:177 #: js/toolbar.js:237 -#: js/toolbar.js:298 -msgid "guarani" +#: js/toolbar.js:299 +msgid "Turkish" msgstr "" -#: js/toolbar.js:105 -#: js/toolbar.js:178 +#: js/toolbar.js:103 +#: js/toolbar.js:177 #: js/toolbar.js:238 -#: js/toolbar.js:299 -msgid "हिंदी" +#: js/toolbar.js:300 +msgid "aymara" msgstr "" -#: js/toolbar.js:106 -#: js/toolbar.js:180 +#: js/toolbar.js:104 +#: js/toolbar.js:178 #: js/toolbar.js:239 #: js/toolbar.js:301 -msgid "igbo" +msgid "quechua" msgstr "" -#: js/toolbar.js:107 -#: js/toolbar.js:181 +#: js/toolbar.js:105 +#: js/toolbar.js:179 #: js/toolbar.js:240 #: js/toolbar.js:302 -msgid "عربى" +msgid "guarani" msgstr "" -#: js/toolbar.js:108 -#: js/toolbar.js:179 +#: js/toolbar.js:106 +#: js/toolbar.js:180 #: js/toolbar.js:241 -#: js/toolbar.js:300 -msgid "తెలుగు" -msgstr "" - -#: js/toolbar.js:109 -#: js/toolbar.js:182 -#: js/toolbar.js:242 #: js/toolbar.js:303 -msgid "עִברִית" -msgstr "" - -#: js/toolbar.js:110 -#: js/toolbar.js:183 -#: js/toolbar.js:243 -#: js/toolbar.js:304 -msgid "اردو" -msgstr "" - -#: js/toolbar.js:159 -#: js/toolbar.js:162 -#: js/toolbar.js:219 -#: js/toolbar.js:222 -#: js/toolbar.js:280 -#: js/toolbar.js:283 -#: js/turtledefs.js:553 -msgid "Save turtle artwork as PNG" -msgstr "" - -#: js/toolbar.js:161 -#: js/toolbar.js:221 -#: js/toolbar.js:282 -#: js/turtledefs.js:549 -msgid "Save turtle artwork as SVG" -msgstr "" - -#: js/toolbar.js:169 -#: js/toolbar.js:229 -#: js/toolbar.js:290 -msgid "한국인" -msgstr "" - -#: js/toolbar.js:187 -#: js/toolbar.js:248 -msgid "About Turtle Blocks" -msgstr "" - -#: js/toolbar.js:496 -#: js/toolbar.js:507 -#: js/toolbar.js:547 -msgid "Turtle Wrap Off" -msgstr "" - -#: js/toolbar.js:516 -#: js/toolbar.js:556 -msgid "Turtle Wrap On" +msgid "हिंदी" msgstr "" -#: js/toolbar.js:1143 -msgid "Are you sure you want to create a new project?" +#: js/toolbar.js:107 +#: js/toolbar.js:182 +#: js/toolbar.js:242 +#: js/toolbar.js:305 +msgid "igbo" msgstr "" -#: js/turtle-singer.js:1365 -#.TRANS: partials are weighted components in a harmonic series -msgid "You must have at least one Partial block inside of a Weighted-partial block" +#: js/toolbar.js:108 +#: js/toolbar.js:183 +#: js/toolbar.js:243 +#: js/toolbar.js:306 +msgid "عربى" msgstr "" -#: js/turtle-singer.js:2081 -msgid "synth cannot play chords." +#: js/toolbar.js:109 +#: js/toolbar.js:181 +#: js/toolbar.js:244 +#: js/toolbar.js:304 +msgid "తెలుగు" msgstr "" -#: js/turtledefs.js:43 -#.TRANS: put the URL to the guide here, e.g., https://github.com/sugarlabs/turtleblocksjs/tree/master/guide/README.md -msgid "guide url" +#: js/toolbar.js:110 +#: js/toolbar.js:184 +#: js/toolbar.js:245 +#: js/toolbar.js:307 +msgid "עִברִית" msgstr "" -#: js/turtledefs.js:88 -msgid "Turtle Blocks" +#: js/toolbar.js:111 +#: js/toolbar.js:185 +#: js/toolbar.js:246 +#: js/toolbar.js:308 +msgid "اردو" msgstr "" -#: js/turtledefs.js:121 -#: js/turtledefs.js:222 -msgid "search" +#: js/toolbar.js:170 +#: js/toolbar.js:231 +#: js/toolbar.js:293 +msgid "한국인" msgstr "" -#: js/turtledefs.js:123 -#: js/turtledefs.js:224 -#: js/blocks/MeterBlocks.js:1344 -#: js/blocks/WidgetBlocks.js:522 -#.TRANS: musical meter (time signature), e.g., 4:4 -msgid "meter" +#: js/toolbar.js:189 +#: js/toolbar.js:251 +msgid "About Turtle Blocks" msgstr "" -#: js/turtledefs.js:125 -#: js/turtledefs.js:226 -msgid "intervals" +#: js/toolbar.js:465 +msgid "Are you sure you want to create a new project?" msgstr "" -#: js/turtledefs.js:127 -#: js/turtledefs.js:228 -msgid "ornament" +#: js/toolbar.js:522 +#: js/toolbar.js:533 +#: js/toolbar.js:573 +msgid "Turtle Wrap Off" msgstr "" -#: js/turtledefs.js:128 -#: js/turtledefs.js:229 -#: js/blocks/VolumeBlocks.js:362 -#: js/blocks/VolumeBlocks.js:502 -#: js/blocks/VolumeBlocks.js:545 -msgid "volume" +#: js/toolbar.js:542 +#: js/toolbar.js:582 +msgid "Turtle Wrap On" msgstr "" -#: js/turtledefs.js:132 -#: js/turtledefs.js:233 -msgid "boxes" +#: js/turtle-singer.js:1429 +#.TRANS: partials are weighted components in a harmonic series +msgid "You must have at least one Partial block inside of a Weighted-partial block" msgstr "" -#: js/turtledefs.js:133 -#: js/turtledefs.js:234 -msgid "widgets" +#: js/turtle-singer.js:2152 +msgid "synth cannot play chords." msgstr "" -#: js/turtledefs.js:134 -#: js/turtledefs.js:235 -#: js/widgets/phrasemaker.js:1136 -msgid "graphics" +#: js/utils/musicutils.js:504 +#: js/utils/musicutils.js:644 +#: js/widgets/musickeyboard.js:3005 +#: js/widgets/pitchdrummatrix.js:228 +msgid "rest" msgstr "" -#: js/turtledefs.js:137 -#: js/turtledefs.js:238 -msgid "boolean" +#: js/utils/musicutils.js:687 +msgid "Perfect unison" msgstr "" -#: js/turtledefs.js:140 -#: js/turtledefs.js:241 -#: js/blocks/HeapBlocks.js:59 -#: js/widgets/status.js:143 -msgid "heap" +#: js/utils/musicutils.js:687 +msgid "Diminished second" msgstr "" -#: js/turtledefs.js:141 -#: js/turtledefs.js:242 -#: js/blocks/DictBlocks.js:142 -#: js/blocks/ProgramBlocks.js:495 -msgid "dictionary" +#: js/utils/musicutils.js:688 +msgid "Minor second" msgstr "" -#: js/turtledefs.js:142 -#: js/turtledefs.js:243 -msgid "ensemble" +#: js/utils/musicutils.js:688 +msgid "Augmented unison" msgstr "" -#: js/turtledefs.js:143 -#: js/turtledefs.js:244 -msgid "extras" +#: js/utils/musicutils.js:689 +msgid "Major second" msgstr "" -#: js/turtledefs.js:145 -#: js/turtledefs.js:245 -#.TRANS: program as in computer program -msgid "program" +#: js/utils/musicutils.js:689 +msgid "Diminished third" msgstr "" -#: js/turtledefs.js:146 -#: js/turtledefs.js:246 -msgid "my blocks" +#: js/utils/musicutils.js:690 +msgid "Minor third" msgstr "" -#: js/turtledefs.js:188 -#: js/turtledefs.js:282 -msgid "artwork" +#: js/utils/musicutils.js:690 +msgid "Augmented second" msgstr "" -#: js/turtledefs.js:188 -#: js/turtledefs.js:282 -msgid "logic" +#: js/utils/musicutils.js:691 +msgid "Major third" msgstr "" -#: js/turtledefs.js:188 -#: js/turtledefs.js:282 -#: planet/js/GlobalTag.js:34 -#.TRANS: On the Planet, we use labels to tag projects. -msgid "Music" +#: js/utils/musicutils.js:691 +msgid "Diminished fourth" msgstr "" -#: js/turtledefs.js:190 -msgid "Music Blocks" +#: js/utils/musicutils.js:692 +msgid "Perfect fourth" msgstr "" -#: js/turtledefs.js:437 -msgid "Welcome to Turtle Blocks" +#: js/utils/musicutils.js:692 +msgid "Augmented third" msgstr "" -#: js/turtledefs.js:438 -msgid "Turtle Blocks is a Logo-inspired turtle that draws colorful pictures with snap-together visual-programming blocks." +#: js/utils/musicutils.js:693 +msgid "Diminished fifth" msgstr "" -#: js/turtledefs.js:439 -#: js/turtledefs.js:466 -#: js/turtledefs.js:823 -#: js/turtledefs.js:846 -msgid "The current version is" +#: js/utils/musicutils.js:693 +msgid "Augmented fourth" msgstr "" -#: js/turtledefs.js:447 -#: js/turtledefs.js:492 -msgid "Click the run button to run the project in fast mode." +#: js/utils/musicutils.js:694 +msgid "Perfect fifth" msgstr "" -#: js/turtledefs.js:453 -msgid "Stop the turtle." +#: js/utils/musicutils.js:694 +msgid "Diminished sixth" msgstr "" -#: js/turtledefs.js:455 -#: js/turtledefs.js:500 -msgid "You can also type Alt-S to stop." +#: js/utils/musicutils.js:695 +msgid "Minor sixth" msgstr "" -#: js/turtledefs.js:463 -#: js/widgets/help.js:335 -msgid "Welcome to Music Blocks" +#: js/utils/musicutils.js:695 +msgid "Augmented fifth" msgstr "" -#: js/turtledefs.js:464 -msgid "Music Blocks is a collection of tools for exploring fundamental musical concepts in a fun way." +#: js/utils/musicutils.js:696 +msgid "Major sixth" msgstr "" -#: js/turtledefs.js:473 -#: js/widgets/help.js:336 -msgid "Meet Mr. Mouse!" +#: js/utils/musicutils.js:696 +msgid "Diminished seventh" msgstr "" -#: js/turtledefs.js:474 -msgid "Mr Mouse is our Music Blocks conductor." +#: js/utils/musicutils.js:697 +msgid "Minor seventh" msgstr "" -#: js/turtledefs.js:476 -msgid "Mr Mouse encourages you to explore Music Blocks." +#: js/utils/musicutils.js:697 +msgid "Augmented sixth" msgstr "" -#: js/turtledefs.js:478 -msgid "Let us start our tour!" +#: js/utils/musicutils.js:698 +msgid "Major seventh" msgstr "" -#: js/turtledefs.js:483 -#: js/turtledefs.js:808 -#: js/widgets/help.js:337 -msgid "Guide" +#: js/utils/musicutils.js:698 +msgid "Diminished octave" msgstr "" -#: js/turtledefs.js:484 -msgid "A detailed guide to Music Blocks is available." +#: js/utils/musicutils.js:699 +msgid "Perfect octave" msgstr "" -#: js/turtledefs.js:498 -msgid "Stop the music (and the mice)." +#: js/utils/musicutils.js:699 +msgid "Augmented seventh" msgstr "" -#: js/turtledefs.js:509 -msgid "Record your project as video." +#: js/utils/musicutils.js:700 +msgid "Minor ninth" msgstr "" -#: js/turtledefs.js:516 -msgid "Toggle Fullscreen mode." +#: js/utils/musicutils.js:700 +msgid "Augmented octave" msgstr "" -#: js/turtledefs.js:522 -msgid "Initialize a new project." +#: js/utils/musicutils.js:701 +msgid "Major ninth" msgstr "" -#: js/turtledefs.js:528 -msgid "You can also load projects from the file system." +#: js/utils/musicutils.js:701 +msgid "Diminished tenth" msgstr "" -#: js/turtledefs.js:544 -#: js/widgets/arpeggio.js:103 -#: js/widgets/meterwidget.js:227 -#: js/widgets/modewidget.js:113 -#: js/widgets/pitchdrummatrix.js:166 -#: js/widgets/pitchslider.js:125 -#: js/widgets/temperament.js:2173 -#: js/widgets/timbre.js:750 -#: js/widgets/musickeyboard.js:712 -#: js/widgets/phrasemaker.js:561 -#: js/widgets/pitchstaircase.js:639 -msgid "Save" +#: js/utils/musicutils.js:702 +msgid "Minor tenth" msgstr "" -#: js/turtledefs.js:547 -msgid "Save your project to a file." +#: js/utils/musicutils.js:702 +msgid "Augmented ninth" msgstr "" -#: js/turtledefs.js:551 -msgid "Save graphics from your project to as SVG." +#: js/utils/musicutils.js:703 +msgid "Major tenth" msgstr "" -#: js/turtledefs.js:555 -msgid "Save graphics from your project as PNG." +#: js/utils/musicutils.js:703 +msgid "Diminished eleventh" msgstr "" -#: js/turtledefs.js:559 -msgid "Save block artwork as an SVG file." +#: js/utils/musicutils.js:704 +msgid "Perfect eleventh" msgstr "" -#: js/turtledefs.js:572 -msgid "Save sheet music as ABC, Lilypond or MusicXML" +#: js/utils/musicutils.js:704 +msgid "Augmented tenth" msgstr "" -#: js/turtledefs.js:574 -msgid "Save block artwork as SVG or PNG" +#: js/utils/musicutils.js:705 +msgid "Diminished twelfth" msgstr "" -#: js/turtledefs.js:581 -msgid "Load samples from server" +#: js/utils/musicutils.js:705 +msgid "Augmented eleventh" msgstr "" -#: js/turtledefs.js:582 -msgid "This button opens a viewer for loading example projects." +#: js/utils/musicutils.js:706 +msgid "Perfect twelfth" msgstr "" -#: js/turtledefs.js:587 -msgid "Expand/collapse option toolbar" +#: js/utils/musicutils.js:706 +msgid "Diminished thirteenth" msgstr "" -#: js/turtledefs.js:588 -msgid "Click this button to expand or collapse the auxillary toolbar." +#: js/utils/musicutils.js:707 +msgid "Minor thirteenth" msgstr "" -#: js/turtledefs.js:594 -msgid "Displays help messages for the main and auxiliary toolbar, right-click contextual menu for blocks and canvas, and palettes." +#: js/utils/musicutils.js:707 +msgid "Augmented fifth, plus an octave" msgstr "" -#: js/turtledefs.js:600 -msgid "Click to run the project in slow mode." +#: js/utils/musicutils.js:708 +msgid "Major thirteenth" msgstr "" -#: js/turtledefs.js:606 -msgid "Click to run the project step by step." +#: js/utils/musicutils.js:708 +msgid "Diminished seventh, plus an octave" msgstr "" -#: js/turtledefs.js:613 -msgid "Display statistics about your Music project." +#: js/utils/musicutils.js:838 +#.TRANS: ordinal number. Please keep exactly one space between each number. +msgid "1st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th" msgstr "" -#: js/turtledefs.js:619 -msgid "Load a selected plugin." +#: js/utils/musicutils.js:1004 +#: js/utils/musicutils.js:1190 +#: js/utils/musicutils.js:1372 +#.TRANS: augmented is a music term related to intervals +msgid "augmented" msgstr "" -#: js/turtledefs.js:627 -msgid "Delete a selected plugin." +#: js/utils/musicutils.js:1006 +#: js/utils/musicutils.js:1191 +#: js/utils/musicutils.js:1371 +#.TRANS: diminished is a music term related to intervals and mode +msgid "diminished" msgstr "" -#: js/turtledefs.js:634 -msgid "Enable scrolling" +#: js/utils/musicutils.js:1012 +#: js/utils/musicutils.js:1369 +#: js/blocks/IntervalsBlocks.js:641 +#: js/turtleactions/IntervalsActions.js:120 +#: js/turtleactions/IntervalsActions.js:124 +#.TRANS: perfect is a music term related to intervals +msgid "perfect" msgstr "" -#: js/turtledefs.js:635 -msgid "You can scroll the blocks on the canvas." +#: js/utils/musicutils.js:1014 +#.TRANS: twelve semi-tone scale for music +msgid "chromatic" msgstr "" -#: js/turtledefs.js:644 -msgid "Switch between dark and light mode." +#: js/utils/musicutils.js:1015 +msgid "algerian" msgstr "" -#: js/turtledefs.js:650 -msgid "Click to add another project into the current one." +#: js/utils/musicutils.js:1016 +msgid "spanish" msgstr "" -#: js/turtledefs.js:655 -msgid "Wrap Turtle" +#: js/utils/musicutils.js:1018 +#.TRANS: modal scale in music +msgid "octatonic" msgstr "" -#: js/turtledefs.js:656 -msgid "Turn Turtle wrapping On or Off." +#: js/utils/musicutils.js:1020 +#.TRANS: harmonic major scale in music +msgid "harmonic major" msgstr "" -#: js/turtledefs.js:664 -msgid "Click to set the current pitch." +#: js/utils/musicutils.js:1022 +#.TRANS: natural minor scales in music +msgid "natural minor" msgstr "" -#: js/turtledefs.js:671 -msgid "Converts Music Block programs to JavaScript." +#: js/utils/musicutils.js:1024 +#.TRANS: harmonic minor scale in music +msgid "harmonic minor" msgstr "" -#: js/turtledefs.js:678 -msgid "Restore blocks from the trash." +#: js/utils/musicutils.js:1026 +#.TRANS: melodic minor scale in music +msgid "melodic minor" msgstr "" -#: js/turtledefs.js:685 -msgid "Switch mode" +#: js/utils/musicutils.js:1030 +#.TRANS: modal scale for music +msgid "dorian" msgstr "" -#: js/turtledefs.js:686 -msgid "Switch between beginner and advance modes." +#: js/utils/musicutils.js:1032 +#.TRANS: modal scale for music +msgid "phrygian" msgstr "" -#: js/turtledefs.js:692 -msgid "Select your language preference." +#: js/utils/musicutils.js:1034 +#.TRANS: modal scale for music +msgid "lydian" msgstr "" -#: js/turtledefs.js:697 -msgid "Contextual Menu for Blocks" +#: js/utils/musicutils.js:1036 +#.TRANS: modal scale for music +msgid "mixolydian" msgstr "" -#: js/turtledefs.js:698 -msgid "Right-click on a block to access common actions." +#: js/utils/musicutils.js:1040 +#.TRANS: modal scale for music +msgid "locrian" msgstr "" -#: js/turtledefs.js:703 -#: planet/js/StringHelper.js:46 -msgid "Delete" +#: js/utils/musicutils.js:1042 +#.TRANS: minor jazz scale for music +msgid "jazz minor" msgstr "" -#: js/turtledefs.js:704 -msgid "To delete a block, right-click on it. Then you will see the delete option" +#: js/utils/musicutils.js:1044 +#.TRANS: bebop scale for music +msgid "bebop" msgstr "" -#: js/turtledefs.js:710 -msgid "To copy a block, right-click on it. Then you will see the copy option" +#: js/utils/musicutils.js:1045 +msgid "arabic" msgstr "" -#: js/turtledefs.js:716 -msgid "To extract a block, right-click on it. Then you will see the extract option" +#: js/utils/musicutils.js:1046 +msgid "byzantine" msgstr "" -#: js/turtledefs.js:722 -msgid "Keyboard shortcuts" +#: js/utils/musicutils.js:1048 +#.TRANS: musical scale for music by Verdi +msgid "enigmatic" msgstr "" -#: js/turtledefs.js:723 -msgid "You can type d to create a do block and r to create a re block etc." +#: js/utils/musicutils.js:1049 +msgid "ethiopian" msgstr "" -#: js/turtledefs.js:730 -msgid "Contextual Menu for Canvas" +#: js/utils/musicutils.js:1051 +#.TRANS: Ethiopic scale for music +msgid "geez" msgstr "" -#: js/turtledefs.js:731 -msgid "Right-click on the canvas to perform additional canvas-related tasks." +#: js/utils/musicutils.js:1052 +msgid "hindu" msgstr "" -#: js/turtledefs.js:738 -msgid "Turn on/off lines for cartesian or polar grids." +#: js/utils/musicutils.js:1053 +msgid "hungarian" msgstr "" -#: js/turtledefs.js:740 -msgid "Turn on/off music staffs." +#: js/utils/musicutils.js:1055 +#.TRANS: minor Romanian scale for music +msgid "romanian minor" msgstr "" -#: js/turtledefs.js:745 -#: js/turtles.js:959 -#: js/blocks/GraphicsBlocks.js:364 -#: js/widgets/arpeggio.js:118 -#: js/widgets/modewidget.js:119 -#: js/widgets/pitchdrummatrix.js:181 -#: js/widgets/rhythmruler.js:601 -#: js/widgets/temperament.js:317 -#: js/widgets/temperament.js:345 -#: js/widgets/musickeyboard.js:720 -#: js/widgets/phrasemaker.js:578 -#: js/widgets/pitchstaircase.js:684 -#.TRANS: clear all subdivisions from the ruler. -msgid "Clear" +#: js/utils/musicutils.js:1056 +msgid "spanish gypsy" msgstr "" -#: js/turtledefs.js:746 -msgid "Clear the screen and return the mice to their initial positions." +#: js/utils/musicutils.js:1058 +#.TRANS: musical scale for Mid-Eastern music +msgid "maqam" msgstr "" -#: js/turtledefs.js:751 -#: js/turtles.js:980 -msgid "Collapse" +#: js/utils/musicutils.js:1060 +#.TRANS: minor blues scale for music +msgid "minor blues" msgstr "" -#: js/turtledefs.js:752 -msgid "Collapse the graphics window." +#: js/utils/musicutils.js:1062 +#.TRANS: major blues scale for music +msgid "major blues" msgstr "" -#: js/turtledefs.js:758 -msgid "Return all blocks to the center of the screen." +#: js/utils/musicutils.js:1063 +msgid "whole tone" msgstr "" -#: js/turtledefs.js:764 -msgid "Hide or show the blocks and the palettes." +#: js/utils/musicutils.js:1065 +#.TRANS: pentatonic is a general term that means "five note scale". This scale is typically known as "minor pentatonic" +msgid "minor pentatonic" msgstr "" -#: js/turtledefs.js:770 -msgid "Expand or collapse start and action stacks." +#: js/utils/musicutils.js:1067 +#.TRANS: pentatonic is a general term that means "five note scale". This scale is typically known as "major pentatonic" +msgid "major pentatonic" msgstr "" -#: js/turtledefs.js:778 -msgid "Decrease the size of the blocks." +#: js/utils/musicutils.js:1068 +msgid "chinese" msgstr "" -#: js/turtledefs.js:784 -msgid "Increase the size of the blocks." +#: js/utils/musicutils.js:1069 +msgid "egyptian" msgstr "" -#: js/turtledefs.js:790 -msgid "Select" +#: js/utils/musicutils.js:1071 +#.TRANS: https://en.wikipedia.org/wiki/Hirajoshi_scale NOTE: There are three different versions of this scale +msgid "hirajoshi" msgstr "" -#: js/turtledefs.js:791 -msgid "Left-click and drag on workspace to select multiple blocks." +#: js/utils/musicutils.js:1072 +msgid "Japan" msgstr "" -#: js/turtledefs.js:798 -msgid "Palette buttons" +#: js/utils/musicutils.js:1074 +#.TRANS: https://en.wikipedia.org/wiki/In_scale and https://en.wikipedia.org/wiki/Sakura_Sakura +msgid "in" msgstr "" -#: js/turtledefs.js:799 -msgid "This toolbar contains the palette buttons including Rhythm Pitch Tone Action and more." +#: js/utils/musicutils.js:1076 +#.TRANS: https://en.wikipedia.org/wiki/Miny%C5%8D_scale +msgid "minyo" msgstr "" -#: js/turtledefs.js:801 -msgid "Click to show the palettes of blocks and drag blocks from the palettes onto the canvas to use them." +#: js/utils/musicutils.js:1078 +#.TRANS: Italian mathematician +msgid "fibonacci" msgstr "" -#: js/turtledefs.js:809 -msgid "A detailed guide to Turtle Blocks is available." +#: js/utils/musicutils.js:1079 +#: js/utils/musicutils.js:1133 +#: js/utils/musicutils.js:1176 +#: js/utils/musicutils.js:1198 +#: js/utils/musicutils.js:1629 +#: js/utils/synthutils.js:146 +#: js/blocks/IntervalsBlocks.js:1108 +#: js/blocks/ToneBlocks.js:942 +#: js/blocks/VolumeBlocks.js:411 +#: js/blocks/WidgetBlocks.js:404 +#: js/blocks/WidgetBlocks.js:409 +#: js/turtleactions/VolumeActions.js:230 +#: js/widgets/modewidget.js:913 +#.TRANS: customize voice +msgid "custom" msgstr "" -#: js/turtledefs.js:813 -msgid "Turtle Blocks Guide" +#: js/utils/musicutils.js:1081 +#: js/utils/musicutils.js:1578 +#: js/blocks/WidgetBlocks.js:181 +#.TRANS: highpass filter +msgid "highpass" msgstr "" - -#: js/turtledefs.js:816 -#: js/turtledefs.js:839 -#: js/widgets/help.js:338 -msgid "About" + +#: js/utils/musicutils.js:1083 +#: js/utils/musicutils.js:1579 +#.TRANS: lowpass filter +msgid "lowpass" msgstr "" -#: js/turtledefs.js:817 -msgid "Turtle Blocks is an open source collection of tools for exploring musical concepts." +#: js/utils/musicutils.js:1085 +#: js/utils/musicutils.js:1580 +#.TRANS: bandpass filter +msgid "bandpass" msgstr "" -#: js/turtledefs.js:819 -msgid "A full list of contributors can be found in the Turtle Blocks GitHub repository." +#: js/utils/musicutils.js:1087 +#: js/utils/musicutils.js:1581 +#.TRANS: high-shelf filter +msgid "highshelf" msgstr "" -#: js/turtledefs.js:821 -msgid "Turtle Blocks is licensed under the AGPL." +#: js/utils/musicutils.js:1089 +#: js/utils/musicutils.js:1582 +#.TRANS: low-shelf filter +msgid "lowshelf" msgstr "" -#: js/turtledefs.js:829 -msgid "Turtle Blocks GitHub repository" +#: js/utils/musicutils.js:1091 +#: js/utils/musicutils.js:1583 +#.TRANS: notch-shelf filter +msgid "notch" msgstr "" -#: js/turtledefs.js:832 -#: js/widgets/help.js:339 -#: js/widgets/help.js:361 -msgid "Congratulations." +#: js/utils/musicutils.js:1093 +#: js/utils/musicutils.js:1584 +#.TRANS: all-pass filter +msgid "allpass" msgstr "" -#: js/turtledefs.js:833 -msgid "You have finished the tour. Please enjoy Turtle Blocks!" +#: js/utils/musicutils.js:1095 +#: js/utils/musicutils.js:1585 +#.TRANS: peaking filter +msgid "peaking" msgstr "" -#: js/turtledefs.js:840 -msgid "Music Blocks is an open source collection of tools for exploring musical concepts." +#: js/utils/musicutils.js:1096 +#: js/utils/musicutils.js:1593 +#: js/utils/synthutils.js:138 +#: js/blocks/PitchBlocks.js:85 +#.TRANS: sine wave +msgid "sine" msgstr "" -#: js/turtledefs.js:842 -msgid "A full list of contributors can be found in the Music Blocks GitHub repository." +#: js/utils/musicutils.js:1097 +#: js/utils/musicutils.js:1594 +#: js/utils/synthutils.js:140 +#: js/blocks/PitchBlocks.js:39 +#.TRANS: square wave +msgid "square" msgstr "" -#: js/turtledefs.js:844 -msgid "Music Blocks is licensed under the AGPL." +#: js/utils/musicutils.js:1098 +#: js/utils/musicutils.js:1595 +#: js/utils/synthutils.js:144 +#: js/blocks/ToneBlocks.js:39 +#: js/blocks/PitchBlocks.js:62 +#.TRANS: triangle wave +msgid "triangle" msgstr "" -#: js/turtledefs.js:852 -msgid "Music Blocks GitHub repository" +#: js/utils/musicutils.js:1099 +#: js/utils/musicutils.js:1596 +#: js/utils/synthutils.js:142 +#: js/blocks/PitchBlocks.js:108 +#.TRANS: sawtooth wave +msgid "sawtooth" msgstr "" -#: js/turtledefs.js:855 -msgid "Congratulations!" +#: js/utils/musicutils.js:1101 +#: js/utils/musicutils.js:1359 +#: js/blocks/PitchBlocks.js:931 +#: js/blocks/PitchBlocks.js:937 +#: js/turtleactions/PitchActions.js:469 +#.TRANS: even numbers +#.TRANS: invert based on even or odd number or musical scale +msgid "even" msgstr "" -#: js/turtledefs.js:856 -msgid "You have finished the tour. Please enjoy Music Blocks!" +#: js/utils/musicutils.js:1103 +#: js/utils/musicutils.js:1360 +#: js/blocks/PitchBlocks.js:937 +#: js/turtleactions/PitchActions.js:471 +#.TRANS: odd numbers +msgid "odd" msgstr "" -#: js/turtles.js:1052 -msgid "Expand" +#: js/utils/musicutils.js:1104 +#: js/utils/musicutils.js:1361 +#: js/blocks/PitchBlocks.js:937 +#: js/turtleactions/PitchActions.js:473 +msgid "scalar" msgstr "" -#: js/utils/musicutils.js:504 -#: js/utils/musicutils.js:644 -#: js/widgets/pitchdrummatrix.js:228 -#: js/widgets/musickeyboard.js:2962 -msgid "rest" +#: js/utils/musicutils.js:1105 +#: js/utils/synthutils.js:78 +#: js/blocks/VolumeBlocks.js:47 +#.TRANS: musical instrument +msgid "piano" msgstr "" -#: js/utils/musicutils.js:687 -msgid "Perfect unison" +#: js/utils/musicutils.js:1106 +#: js/utils/synthutils.js:80 +#.TRANS: musical instrument +msgid "violin" msgstr "" -#: js/utils/musicutils.js:687 -msgid "Diminished second" +#: js/utils/musicutils.js:1107 +#: js/utils/synthutils.js:82 +#.TRANS: viola musical instrument +msgid "viola" msgstr "" -#: js/utils/musicutils.js:688 -msgid "Minor second" +#: js/utils/musicutils.js:1108 +#: js/utils/synthutils.js:126 +#.TRANS: xylophone musical instrument +msgid "xylophone" msgstr "" -#: js/utils/musicutils.js:688 -msgid "Augmented unison" +#: js/utils/musicutils.js:1109 +#: js/utils/synthutils.js:148 +#.TRANS: vibraphone musical instrument +msgid "vibraphone" msgstr "" -#: js/utils/musicutils.js:689 -msgid "Major second" +#: js/utils/musicutils.js:1110 +#: js/utils/synthutils.js:84 +#.TRANS: musical instrument +msgid "cello" msgstr "" -#: js/utils/musicutils.js:689 -msgid "Diminished third" +#: js/utils/musicutils.js:1112 +#: js/utils/synthutils.js:88 +#.TRANS: viola musical instrument +msgid "double bass" msgstr "" -#: js/utils/musicutils.js:690 -msgid "Minor third" +#: js/utils/musicutils.js:1113 +#: js/utils/synthutils.js:96 +#: js/widgets/rhythmruler.js:2501 +#.TRANS: musical instrument +msgid "guitar" msgstr "" -#: js/utils/musicutils.js:690 -msgid "Augmented second" +#: js/utils/musicutils.js:1114 +#: js/utils/synthutils.js:90 +#.TRANS: sitar musical instrument +msgid "sitar" msgstr "" -#: js/utils/musicutils.js:691 -msgid "Major third" +#: js/utils/musicutils.js:1115 +msgid "harmoiunm" msgstr "" -#: js/utils/musicutils.js:691 -msgid "Diminished fourth" +#: js/utils/musicutils.js:1116 +#: js/utils/synthutils.js:94 +#.TRANS: mandolin musical instrument +msgid "mandolin" msgstr "" -#: js/utils/musicutils.js:692 -msgid "Perfect fourth" +#: js/utils/musicutils.js:1117 +#: js/utils/synthutils.js:98 +#.TRANS: musical instrument +msgid "acoustic guitar" msgstr "" -#: js/utils/musicutils.js:692 -msgid "Augmented third" +#: js/utils/musicutils.js:1118 +#: js/utils/synthutils.js:100 +#.TRANS: musical instrument +msgid "flute" msgstr "" -#: js/utils/musicutils.js:693 -msgid "Diminished fifth" +#: js/utils/musicutils.js:1119 +#: js/utils/synthutils.js:102 +#.TRANS: musical instrument +msgid "clarinet" msgstr "" -#: js/utils/musicutils.js:693 -msgid "Augmented fourth" +#: js/utils/musicutils.js:1120 +#: js/utils/synthutils.js:104 +#.TRANS: musical instrument +msgid "saxophone" msgstr "" -#: js/utils/musicutils.js:694 -msgid "Perfect fifth" +#: js/utils/musicutils.js:1121 +#: js/utils/synthutils.js:106 +#.TRANS: musical instrument +msgid "tuba" msgstr "" -#: js/utils/musicutils.js:694 -msgid "Diminished sixth" +#: js/utils/musicutils.js:1122 +#: js/utils/synthutils.js:108 +#.TRANS: musical instrument +msgid "trumpet" msgstr "" -#: js/utils/musicutils.js:695 -msgid "Minor sixth" +#: js/utils/musicutils.js:1123 +#: js/utils/synthutils.js:110 +#.TRANS: musical instrument +msgid "oboe" msgstr "" -#: js/utils/musicutils.js:695 -msgid "Augmented fifth" +#: js/utils/musicutils.js:1124 +#: js/utils/synthutils.js:112 +#.TRANS: musical instrument +msgid "trombone" msgstr "" -#: js/utils/musicutils.js:696 -msgid "Major sixth" +#: js/utils/musicutils.js:1125 +#: js/utils/synthutils.js:128 +#.TRANS: polytone synthesizer +msgid "electronic synth" msgstr "" -#: js/utils/musicutils.js:696 -msgid "Diminished seventh" +#: js/utils/musicutils.js:1126 +#: js/utils/synthutils.js:130 +#.TRANS: simple monotone synthesizer +msgid "simple 1" msgstr "" -#: js/utils/musicutils.js:697 -msgid "Minor seventh" +#: js/utils/musicutils.js:1127 +msgid "simple 2" msgstr "" -#: js/utils/musicutils.js:697 -msgid "Augmented sixth" +#: js/utils/musicutils.js:1128 +msgid "simple 3" msgstr "" -#: js/utils/musicutils.js:698 -msgid "Major seventh" +#: js/utils/musicutils.js:1129 +msgid "simple 4" msgstr "" -#: js/utils/musicutils.js:698 -msgid "Diminished octave" +#: js/utils/musicutils.js:1130 +#: js/utils/synthutils.js:64 +#: js/blocks/DrumBlocks.js:191 +#.TRANS: white noise synthesizer +msgid "white noise" msgstr "" -#: js/utils/musicutils.js:699 -msgid "Perfect octave" +#: js/utils/musicutils.js:1131 +#: js/utils/synthutils.js:66 +#.TRANS: brown noise synthesizer +msgid "brown noise" msgstr "" -#: js/utils/musicutils.js:699 -msgid "Augmented seventh" +#: js/utils/musicutils.js:1132 +#: js/utils/synthutils.js:68 +#.TRANS: pink noise synthesizer +msgid "pink noise" msgstr "" -#: js/utils/musicutils.js:700 -msgid "Minor ninth" +#: js/utils/musicutils.js:1134 +#: js/utils/synthutils.js:160 +#: js/widgets/rhythmruler.js:2047 +#: js/widgets/rhythmruler.js:2309 +#.TRANS: musical instrument +msgid "snare drum" msgstr "" -#: js/utils/musicutils.js:700 -msgid "Augmented octave" +#: js/utils/musicutils.js:1135 +#: js/utils/synthutils.js:162 +#.TRANS: musical instrument +msgid "kick drum" msgstr "" -#: js/utils/musicutils.js:701 -msgid "Major ninth" +#: js/utils/musicutils.js:1136 +#: js/utils/synthutils.js:164 +#.TRANS: musical instrument +msgid "tom tom" msgstr "" -#: js/utils/musicutils.js:701 -msgid "Diminished tenth" +#: js/utils/musicutils.js:1137 +#: js/utils/synthutils.js:166 +#.TRANS: musical instrument +msgid "floor tom" msgstr "" -#: js/utils/musicutils.js:702 -msgid "Minor tenth" +#: js/utils/musicutils.js:1138 +#: js/utils/synthutils.js:168 +#.TRANS: musical instrument +msgid "bass drum" msgstr "" -#: js/utils/musicutils.js:702 -msgid "Augmented ninth" +#: js/utils/musicutils.js:1139 +#: js/utils/synthutils.js:170 +#.TRANS: a drum made from an inverted cup +msgid "cup drum" msgstr "" -#: js/utils/musicutils.js:703 -msgid "Major tenth" +#: js/utils/musicutils.js:1140 +#: js/utils/synthutils.js:172 +#.TRANS: musical instrument +msgid "darbuka drum" msgstr "" -#: js/utils/musicutils.js:703 -msgid "Diminished eleventh" +#: js/utils/musicutils.js:1141 +#: js/utils/synthutils.js:176 +#.TRANS: musical instrument +msgid "hi hat" msgstr "" -#: js/utils/musicutils.js:704 -msgid "Perfect eleventh" +#: js/utils/musicutils.js:1142 +#: js/utils/synthutils.js:178 +#.TRANS: a small metal bell +msgid "ride bell" msgstr "" -#: js/utils/musicutils.js:704 -msgid "Augmented tenth" +#: js/utils/musicutils.js:1143 +#: js/utils/synthutils.js:180 +#.TRANS: musical instrument +msgid "cow bell" msgstr "" -#: js/utils/musicutils.js:705 -msgid "Diminished twelfth" +#: js/utils/musicutils.js:1144 +msgid "japanese drum" msgstr "" -#: js/utils/musicutils.js:705 -msgid "Augmented eleventh" +#: js/utils/musicutils.js:1145 +#: js/utils/synthutils.js:186 +#.TRANS: musical instrument +msgid "japanese bell" msgstr "" -#: js/utils/musicutils.js:706 -msgid "Perfect twelfth" +#: js/utils/musicutils.js:1146 +#: js/utils/synthutils.js:182 +#.TRANS: musical instrument +msgid "triangle bell" msgstr "" -#: js/utils/musicutils.js:706 -msgid "Diminished thirteenth" +#: js/utils/musicutils.js:1147 +#: js/utils/synthutils.js:184 +#.TRANS: musical instrument +msgid "finger cymbals" msgstr "" -#: js/utils/musicutils.js:707 -msgid "Minor thirteenth" +#: js/utils/musicutils.js:1148 +#: js/utils/synthutils.js:188 +#.TRANS: a musically tuned set of bells +msgid "chime" msgstr "" -#: js/utils/musicutils.js:707 -msgid "Augmented fifth, plus an octave" +#: js/utils/musicutils.js:1149 +#: js/utils/synthutils.js:190 +#.TRANS: a musical instrument +msgid "gong" msgstr "" -#: js/utils/musicutils.js:708 -msgid "Major thirteenth" +#: js/utils/musicutils.js:1150 +#: js/utils/synthutils.js:192 +#.TRANS: sound effect +msgid "clang" msgstr "" -#: js/utils/musicutils.js:708 -msgid "Diminished seventh, plus an octave" +#: js/utils/musicutils.js:1151 +#: js/utils/synthutils.js:194 +#.TRANS: sound effect +msgid "crash" msgstr "" -#: js/utils/musicutils.js:838 -#.TRANS: ordinal number. Please keep exactly one space between each number. -msgid "1st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th" +#: js/utils/musicutils.js:1152 +#: js/utils/synthutils.js:196 +#.TRANS: sound effect +msgid "bottle" msgstr "" -#: js/utils/musicutils.js:1004 -#: js/utils/musicutils.js:1189 -#: js/utils/musicutils.js:1371 -#.TRANS: augmented is a music term related to intervals -msgid "augmented" +#: js/utils/musicutils.js:1153 +#: js/utils/synthutils.js:198 +#.TRANS: sound effect +msgid "clap" msgstr "" -#: js/utils/musicutils.js:1006 -#: js/utils/musicutils.js:1190 -#: js/utils/musicutils.js:1370 -#.TRANS: diminished is a music term related to intervals and mode -msgid "diminished" +#: js/utils/musicutils.js:1154 +#: js/utils/synthutils.js:200 +#.TRANS: sound effect +msgid "slap" msgstr "" -#: js/utils/musicutils.js:1012 -#: js/utils/musicutils.js:1368 -#: js/blocks/IntervalsBlocks.js:649 -#: js/turtleactions/IntervalsActions.js:120 -#: js/turtleactions/IntervalsActions.js:124 -#.TRANS: perfect is a music term related to intervals -msgid "perfect" +#: js/utils/musicutils.js:1155 +#: js/utils/synthutils.js:202 +#.TRANS: sound effect +msgid "splash" msgstr "" -#: js/utils/musicutils.js:1014 -#.TRANS: twelve semi-tone scale for music -msgid "chromatic" +#: js/utils/musicutils.js:1156 +#: js/utils/synthutils.js:204 +#.TRANS: sound effect +msgid "bubbles" msgstr "" -#: js/utils/musicutils.js:1015 -msgid "algerian" +#: js/utils/musicutils.js:1157 +#: js/utils/synthutils.js:206 +#.TRANS: sound effect +msgid "raindrop" msgstr "" -#: js/utils/musicutils.js:1016 -msgid "spanish" +#: js/utils/musicutils.js:1158 +#: js/utils/synthutils.js:208 +#.TRANS: animal sound effect +msgid "cat" msgstr "" -#: js/utils/musicutils.js:1018 -#.TRANS: modal scale in music -msgid "octatonic" +#: js/utils/musicutils.js:1159 +#: js/utils/synthutils.js:210 +#.TRANS: animal sound effect +msgid "cricket" msgstr "" -#: js/utils/musicutils.js:1020 -#.TRANS: harmonic major scale in music -msgid "harmonic major" +#: js/utils/musicutils.js:1160 +#: js/utils/synthutils.js:212 +#.TRANS: animal sound effect +msgid "dog" msgstr "" -#: js/utils/musicutils.js:1022 -#.TRANS: natural minor scales in music -msgid "natural minor" +#: js/utils/musicutils.js:1162 +#: js/utils/synthutils.js:114 +#.TRANS: musical instrument +msgid "banjo" msgstr "" -#: js/utils/musicutils.js:1024 -#.TRANS: harmonic minor scale in music -msgid "harmonic minor" +#: js/utils/musicutils.js:1163 +#: js/utils/synthutils.js:116 +#.TRANS: musical instrument +msgid "koto" msgstr "" -#: js/utils/musicutils.js:1026 -#.TRANS: melodic minor scale in music -msgid "melodic minor" +#: js/utils/musicutils.js:1164 +#: js/utils/synthutils.js:118 +#.TRANS: musical instrument +msgid "dulcimer" msgstr "" -#: js/utils/musicutils.js:1030 -#.TRANS: modal scale for music -msgid "dorian" +#: js/utils/musicutils.js:1165 +#: js/utils/synthutils.js:120 +#.TRANS: musical instrument +msgid "electric guitar" msgstr "" -#: js/utils/musicutils.js:1032 -#.TRANS: modal scale for music -msgid "phrygian" +#: js/utils/musicutils.js:1166 +#: js/utils/synthutils.js:122 +#.TRANS: musical instrument +msgid "bassoon" msgstr "" -#: js/utils/musicutils.js:1034 -#.TRANS: modal scale for music -msgid "lydian" +#: js/utils/musicutils.js:1167 +#: js/utils/synthutils.js:124 +#.TRANS: musical instrument +msgid "celeste" msgstr "" -#: js/utils/musicutils.js:1036 -#.TRANS: modal scale for music -msgid "mixolydian" +#: js/utils/musicutils.js:1169 +#: js/widgets/temperament.js:757 +#.TRANS: musical temperament +msgid "equal" msgstr "" -#: js/utils/musicutils.js:1040 -#.TRANS: modal scale for music -msgid "locrian" +#: js/utils/musicutils.js:1171 +#.TRANS: musical temperament +msgid "Pythagorean" msgstr "" -#: js/utils/musicutils.js:1042 -#.TRANS: minor jazz scale for music -msgid "jazz minor" +#: js/utils/musicutils.js:1173 +#.TRANS: musical temperament +msgid "just intonation" msgstr "" -#: js/utils/musicutils.js:1044 -#.TRANS: bebop scale for music -msgid "bebop" +#: js/utils/musicutils.js:1175 +#: js/utils/musicutils.js:1611 +#: js/utils/musicutils.js:1612 +#: js/utils/musicutils.js:1627 +#: js/utils/musicutils.js:1628 +#.TRANS: musical temperament +msgid "Meantone" msgstr "" -#: js/utils/musicutils.js:1045 -msgid "arabic" +#: js/utils/musicutils.js:1192 +msgid "major 7th" msgstr "" -#: js/utils/musicutils.js:1046 -msgid "byzantine" +#: js/utils/musicutils.js:1193 +msgid "minor 7th" msgstr "" -#: js/utils/musicutils.js:1048 -#.TRANS: musical scale for music by Verdi -msgid "enigmatic" +#: js/utils/musicutils.js:1194 +msgid "dominant 7th" msgstr "" -#: js/utils/musicutils.js:1049 -msgid "ethiopian" +#: js/utils/musicutils.js:1195 +msgid "minor-major 7th" msgstr "" -#: js/utils/musicutils.js:1051 -#.TRANS: Ethiopic scale for music -msgid "geez" +#: js/utils/musicutils.js:1196 +msgid "fully-diminished 7th" msgstr "" -#: js/utils/musicutils.js:1052 -msgid "hindu" +#: js/utils/musicutils.js:1197 +msgid "half-diminished 7th" msgstr "" -#: js/utils/musicutils.js:1053 -msgid "hungarian" +#: js/utils/musicutils.js:1604 +#: js/utils/musicutils.js:1620 +msgid "Equal (12EDO)" msgstr "" -#: js/utils/musicutils.js:1055 -#.TRANS: minor Romanian scale for music -msgid "romanian minor" +#: js/utils/musicutils.js:1605 +#: js/utils/musicutils.js:1621 +msgid "Equal (5EDO)" msgstr "" -#: js/utils/musicutils.js:1056 -msgid "spanish gypsy" +#: js/utils/musicutils.js:1606 +#: js/utils/musicutils.js:1622 +msgid "Equal (7EDO)" msgstr "" -#: js/utils/musicutils.js:1058 -#.TRANS: musical scale for Mid-Eastern music -msgid "maqam" +#: js/utils/musicutils.js:1607 +#: js/utils/musicutils.js:1623 +msgid "Equal (19EDO)" msgstr "" -#: js/utils/musicutils.js:1060 -#.TRANS: minor blues scale for music -msgid "minor blues" +#: js/utils/musicutils.js:1608 +#: js/utils/musicutils.js:1624 +msgid "Equal (31EDO)" msgstr "" -#: js/utils/musicutils.js:1062 -#.TRANS: major blues scale for music -msgid "major blues" +#: js/utils/musicutils.js:1609 +#: js/utils/musicutils.js:1625 +msgid "5-limit Just Intonation" msgstr "" -#: js/utils/musicutils.js:1063 -msgid "whole tone" +#: js/utils/musicutils.js:1610 +#: js/utils/musicutils.js:1626 +msgid "Pythagorean (3-limit JI)" msgstr "" -#: js/utils/musicutils.js:1065 -#.TRANS: pentatonic is a general term that means "five note scale". This scale is typically known as "minor pentatonic" -msgid "minor pentatonic" +#: js/utils/musicutils.js:5901 +#: js/utils/musicutils.js:5944 +msgid "current" msgstr "" -#: js/utils/musicutils.js:1067 -#.TRANS: pentatonic is a general term that means "five note scale". This scale is typically known as "major pentatonic" -msgid "major pentatonic" +#: js/utils/musicutils.js:5904 +#: js/utils/musicutils.js:5935 +msgid "next" msgstr "" -#: js/utils/musicutils.js:1068 -msgid "chinese" +#: js/utils/musicutils.js:5907 +#: js/utils/musicutils.js:5940 +msgid "previous" msgstr "" -#: js/utils/musicutils.js:1069 -msgid "egyptian" +#: js/utils/synthutils.js:92 +#.TRANS: harmonium musical instrument +msgid "harmonium" msgstr "" -#: js/utils/musicutils.js:1071 -#.TRANS: https://en.wikipedia.org/wiki/Hirajoshi_scale NOTE: There are three different versions of this scale -msgid "hirajoshi" +#: js/utils/synthutils.js:132 +#.TRANS: simple monotone synthesizer +msgid "simple-2" msgstr "" -#: js/utils/musicutils.js:1072 -msgid "Japan" +#: js/utils/synthutils.js:134 +#.TRANS: simple monotone synthesizer +msgid "simple-3" msgstr "" -#: js/utils/musicutils.js:1074 -#.TRANS: https://en.wikipedia.org/wiki/In_scale and https://en.wikipedia.org/wiki/Sakura_Sakura -msgid "in" +#: js/utils/synthutils.js:136 +#.TRANS: simple monotone synthesizer +msgid "simple-4" msgstr "" -#: js/utils/musicutils.js:1076 -#.TRANS: https://en.wikipedia.org/wiki/Miny%C5%8D_scale -msgid "minyo" +#: js/utils/synthutils.js:174 +#.TRANS: musical instrument +msgid "taiko" msgstr "" -#: js/utils/musicutils.js:1078 -#.TRANS: Italian mathematician -msgid "fibonacci" +#: js/utils/synthutils.js:3141 +#: js/widgets/sampler.js:814 +msgid "Cents Adjustment" msgstr "" -#: js/utils/musicutils.js:1079 -#: js/utils/musicutils.js:1132 -#: js/utils/musicutils.js:1175 -#: js/utils/musicutils.js:1197 -#: js/utils/musicutils.js:1628 -#: js/utils/synthutils.js:138 -#: js/blocks/IntervalsBlocks.js:1124 -#: js/blocks/ToneBlocks.js:946 -#: js/blocks/VolumeBlocks.js:411 -#: js/blocks/WidgetBlocks.js:399 -#: js/blocks/WidgetBlocks.js:404 -#: js/turtleactions/VolumeActions.js:224 -#: js/widgets/modewidget.js:913 -#.TRANS: customize voice -msgid "custom" +#: js/utils/synthutils.js:3170 +#: js/widgets/sampler.js:1565 +#.TRANS: The reference tone is a sound used for comparison. +msgid "reference tone" msgstr "" -#: js/utils/musicutils.js:1081 -#: js/utils/musicutils.js:1577 -#: js/blocks/WidgetBlocks.js:176 -#.TRANS: highpass filter -msgid "highpass" +#: js/blocks/ActionBlocks.js:58 +msgid "The Return block will return a value from an action." msgstr "" -#: js/utils/musicutils.js:1083 -#: js/utils/musicutils.js:1578 -#.TRANS: lowpass filter -msgid "lowpass" +#: js/blocks/ActionBlocks.js:75 +msgid "return" msgstr "" -#: js/utils/musicutils.js:1085 -#: js/utils/musicutils.js:1579 -#.TRANS: bandpass filter -msgid "bandpass" +#: js/blocks/ActionBlocks.js:128 +msgid "The Return to URL block will return a value to a webpage." msgstr "" -#: js/utils/musicutils.js:1087 -#: js/utils/musicutils.js:1580 -#.TRANS: high-shelf filter -msgid "highshelf" +#: js/blocks/ActionBlocks.js:145 +msgid "return to URL" msgstr "" -#: js/utils/musicutils.js:1089 -#: js/utils/musicutils.js:1581 -#.TRANS: low-shelf filter -msgid "lowshelf" +#: js/blocks/ActionBlocks.js:233 +#: js/blocks/ActionBlocks.js:290 +#: js/blocks/ActionBlocks.js:501 +#: js/blocks/ActionBlocks.js:688 +msgid "The Calculate block returns a value calculated by an action." msgstr "" -#: js/utils/musicutils.js:1091 -#: js/utils/musicutils.js:1582 -#.TRANS: notch-shelf filter -msgid "notch" +#: js/blocks/ActionBlocks.js:251 +#: js/blocks/ActionBlocks.js:517 +#: js/blocks/ActionBlocks.js:707 +msgid "calculate" msgstr "" -#: js/utils/musicutils.js:1093 -#: js/utils/musicutils.js:1583 -#.TRANS: all-pass filter -msgid "allpass" +#: js/blocks/ActionBlocks.js:376 +#: js/blocks/ActionBlocks.js:593 +#: js/blocks/ActionBlocks.js:942 +#: js/blocks/ActionBlocks.js:1385 +#.TRANS: do is the do something or take an action. +msgid "The Do block is used to initiate an action." msgstr "" -#: js/utils/musicutils.js:1095 -#: js/utils/musicutils.js:1584 -#.TRANS: peaking filter -msgid "peaking" +#: js/blocks/ActionBlocks.js:390 +#: js/blocks/ActionBlocks.js:610 +#: js/blocks/ActionBlocks.js:959 +#: js/blocks/ActionBlocks.js:1048 +#: js/blocks/MeterBlocks.js:770 +msgid "do1" msgstr "" -#: js/utils/musicutils.js:1096 -#: js/utils/musicutils.js:1592 -#: js/utils/synthutils.js:130 -#: js/blocks/PitchBlocks.js:85 -#.TRANS: sine wave -msgid "sine" +#: js/blocks/ActionBlocks.js:390 +#: js/blocks/ActionBlocks.js:610 +#: js/blocks/ActionBlocks.js:959 +#: js/blocks/ActionBlocks.js:1048 +#: js/blocks/FlowBlocks.js:740 +#: js/blocks/FlowBlocks.js:820 +#: js/blocks/MeterBlocks.js:770 +msgid "do" msgstr "" -#: js/utils/musicutils.js:1097 -#: js/utils/musicutils.js:1593 -#: js/utils/synthutils.js:132 -#: js/blocks/PitchBlocks.js:39 -#.TRANS: square wave -msgid "square" +#: js/blocks/ActionBlocks.js:791 +#: js/blocks/ActionBlocks.js:865 +msgid "The Arg block contains the value of an argument passed to an action." msgstr "" -#: js/utils/musicutils.js:1098 -#: js/utils/musicutils.js:1594 -#: js/utils/synthutils.js:136 -#: js/blocks/PitchBlocks.js:62 -#: js/blocks/ToneBlocks.js:39 -#.TRANS: triangle wave -msgid "triangle" +#: js/blocks/ActionBlocks.js:806 +#: js/blocks/ActionBlocks.js:878 +msgid "arg" msgstr "" -#: js/utils/musicutils.js:1099 -#: js/utils/musicutils.js:1595 -#: js/utils/synthutils.js:134 -#: js/blocks/PitchBlocks.js:108 -#.TRANS: sawtooth wave -msgid "sawtooth" +#: js/blocks/ActionBlocks.js:836 +#: js/blocks/ActionBlocks.js:900 +#: js/blocks/ActionBlocks.js:908 +msgid "Invalid argument" msgstr "" -#: js/utils/musicutils.js:1101 -#: js/utils/musicutils.js:1358 -#: js/blocks/PitchBlocks.js:931 -#: js/blocks/PitchBlocks.js:937 -#: js/turtleactions/PitchActions.js:469 -#.TRANS: even numbers -#.TRANS: invert based on even or odd number or musical scale -msgid "even" +#: js/blocks/ActionBlocks.js:944 +msgid "In the example, it is used with the One of block to choose a random phase." msgstr "" -#: js/utils/musicutils.js:1103 -#: js/utils/musicutils.js:1359 -#: js/blocks/PitchBlocks.js:937 -#: js/turtleactions/PitchActions.js:471 -#.TRANS: odd numbers -msgid "odd" +#: js/blocks/ActionBlocks.js:1019 +#: js/blocks/ActionBlocks.js:1026 +msgid "The Listen block is used to listen for an event such as a mouse click." msgstr "" -#: js/utils/musicutils.js:1104 -#: js/utils/musicutils.js:1360 -#: js/blocks/PitchBlocks.js:937 -#: js/turtleactions/PitchActions.js:473 -msgid "scalar" +#: js/blocks/ActionBlocks.js:1028 +msgid "When the event happens, an action is taken." msgstr "" -#: js/utils/musicutils.js:1105 -#: js/utils/synthutils.js:72 -#: js/blocks/VolumeBlocks.js:47 -#.TRANS: musical instrument -msgid "piano" +#: js/blocks/ActionBlocks.js:1045 +msgid "on" msgstr "" -#: js/utils/musicutils.js:1106 -#: js/utils/synthutils.js:74 -#.TRANS: musical instrument -msgid "violin" +#: js/blocks/ActionBlocks.js:1048 +#: js/blocks/ActionBlocks.js:1049 +#: js/blocks/ActionBlocks.js:1153 +msgid "event" msgstr "" -#: js/utils/musicutils.js:1107 -#: js/utils/synthutils.js:76 -#.TRANS: viola musical instrument -msgid "viola" +#: js/blocks/ActionBlocks.js:1133 +msgid "The Broadcast block is used to trigger an event." msgstr "" -#: js/utils/musicutils.js:1108 -#: js/utils/synthutils.js:118 -#.TRANS: xylophone musical instrument -msgid "xylophone" +#: js/blocks/ActionBlocks.js:1151 +msgid "broadcast" msgstr "" -#: js/utils/musicutils.js:1109 -#: js/utils/synthutils.js:140 -#.TRANS: vibraphone musical instrument -msgid "vibraphone" +#: js/blocks/ActionBlocks.js:1208 +msgid "Each Start block is a separate voice." msgstr "" -#: js/utils/musicutils.js:1110 -#: js/utils/synthutils.js:78 -#.TRANS: musical instrument -msgid "cello" +#: js/blocks/ActionBlocks.js:1210 +msgid "All of the Start blocks run at the same time when the Play button is pressed." +msgstr "" + +#: js/blocks/ActionBlocks.js:1298 +msgid "The Action block is used to group together blocks so that they can be used more than once." msgstr "" -#: js/utils/musicutils.js:1112 -#: js/utils/synthutils.js:82 -#.TRANS: viola musical instrument -msgid "double bass" +#: js/blocks/ActionBlocks.js:1300 +msgid "It is often used for storing a phrase of music that is repeated." msgstr "" -#: js/utils/musicutils.js:1113 -#: js/utils/synthutils.js:88 -#: js/widgets/rhythmruler.js:2501 -#.TRANS: musical instrument -msgid "guitar" +#: js/blocks/ActionBlocks.js:1491 +msgid "define temperament" msgstr "" -#: js/utils/musicutils.js:1114 -#: js/utils/synthutils.js:84 -#.TRANS: sitar musical instrument -msgid "sitar" +#: js/blocks/BooleanBlocks.js:44 +msgid "The Not block is the logical not operator." msgstr "" -#: js/utils/musicutils.js:1115 -msgid "harmoiunm" +#: js/blocks/BooleanBlocks.js:62 +msgid "not" msgstr "" -#: js/utils/musicutils.js:1116 -#: js/utils/synthutils.js:90 -#.TRANS: musical instrument -msgid "acoustic guitar" +#: js/blocks/BooleanBlocks.js:134 +msgid "The And block is the logical and operator." msgstr "" -#: js/utils/musicutils.js:1117 -#: js/utils/synthutils.js:92 -#.TRANS: musical instrument -msgid "flute" +#: js/blocks/BooleanBlocks.js:152 +msgid "and" msgstr "" -#: js/utils/musicutils.js:1118 -#: js/utils/synthutils.js:94 -#.TRANS: musical instrument -msgid "clarinet" +#: js/blocks/BooleanBlocks.js:218 +msgid "The Or block is the logical or operator." msgstr "" -#: js/utils/musicutils.js:1119 -#: js/utils/synthutils.js:96 -#.TRANS: musical instrument -msgid "saxophone" +#: js/blocks/BooleanBlocks.js:236 +msgid "or" msgstr "" -#: js/utils/musicutils.js:1120 -#: js/utils/synthutils.js:98 -#.TRANS: musical instrument -msgid "tuba" +#: js/blocks/BooleanBlocks.js:302 +msgid "The XOR block is the logical XOR operator." msgstr "" -#: js/utils/musicutils.js:1121 -#: js/utils/synthutils.js:100 -#.TRANS: musical instrument -msgid "trumpet" +#: js/blocks/BooleanBlocks.js:320 +msgid "xor" msgstr "" -#: js/utils/musicutils.js:1122 -#: js/utils/synthutils.js:102 -#.TRANS: musical instrument -msgid "oboe" +#: js/blocks/BooleanBlocks.js:392 +msgid "The Greater-than block returns True if the top number is greater than the bottom number." msgstr "" -#: js/utils/musicutils.js:1123 -#: js/utils/synthutils.js:104 -#.TRANS: musical instrument -msgid "trombone" +#: js/blocks/BooleanBlocks.js:496 +msgid "The Less-than block returns True if the top number is less than the bottom number." msgstr "" -#: js/utils/musicutils.js:1124 -#: js/utils/synthutils.js:120 -#.TRANS: polytone synthesizer -msgid "electronic synth" +#: js/blocks/BooleanBlocks.js:595 +msgid "The Less-than-or-equal-to block returns True if the top number is less than or equal to the bottom number." msgstr "" -#: js/utils/musicutils.js:1125 -#: js/utils/synthutils.js:122 -#.TRANS: simple monotone synthesizer -msgid "simple 1" +#: js/blocks/BooleanBlocks.js:694 +msgid "The Greater-than-or-equal-to block returns True if the top number is greater than or equal to the bottom number." msgstr "" -#: js/utils/musicutils.js:1126 -msgid "simple 2" +#: js/blocks/BooleanBlocks.js:800 +msgid "The Equal block returns True if the two numbers are equal." msgstr "" -#: js/utils/musicutils.js:1127 -msgid "simple 3" +#: js/blocks/BooleanBlocks.js:901 +msgid "The Not-equal-to block returns True if the two numbers are not equal to each other." msgstr "" -#: js/utils/musicutils.js:1128 -msgid "simple 4" +#: js/blocks/BooleanBlocks.js:1000 +msgid "The Boolean block is used to specify true or false." msgstr "" -#: js/utils/musicutils.js:1129 -#: js/utils/synthutils.js:58 -#: js/blocks/DrumBlocks.js:191 -#.TRANS: white noise synthesizer -msgid "white noise" +#: js/blocks/BoxesBlocks.js:53 +#: js/blocks/BoxesBlocks.js:59 +msgid "The Add-to block is used to add to the value stored in a box." msgstr "" -#: js/utils/musicutils.js:1130 -#: js/utils/synthutils.js:60 -#.TRANS: brown noise synthesizer -msgid "brown noise" +#: js/blocks/BoxesBlocks.js:61 +msgid "It can also be used with other blocks such as Color and Pen size." msgstr "" -#: js/utils/musicutils.js:1131 -#: js/utils/synthutils.js:62 -#.TRANS: pink noise synthesizer -msgid "pink noise" +#: js/blocks/BoxesBlocks.js:73 +msgid "add" msgstr "" -#: js/utils/musicutils.js:1133 -#: js/utils/synthutils.js:152 -#: js/widgets/rhythmruler.js:2047 -#: js/widgets/rhythmruler.js:2309 -#.TRANS: musical instrument -msgid "snare drum" +#: js/blocks/BoxesBlocks.js:75 +#: js/widgets/temperament.js:825 +msgid "to" msgstr "" -#: js/utils/musicutils.js:1134 -#: js/utils/synthutils.js:154 -#.TRANS: musical instrument -msgid "kick drum" +#: js/blocks/BoxesBlocks.js:75 +#: js/blocks/BoxesBlocks.js:595 +#: js/blocks/HeapBlocks.js:542 +msgid "value1" msgstr "" -#: js/utils/musicutils.js:1135 -#: js/utils/synthutils.js:156 -#.TRANS: musical instrument -msgid "tom tom" +#: js/blocks/BoxesBlocks.js:118 +msgid "Block does not support incrementing." msgstr "" -#: js/utils/musicutils.js:1136 -#: js/utils/synthutils.js:158 -#.TRANS: musical instrument -msgid "floor tom" +#: js/blocks/BoxesBlocks.js:152 +msgid "The Add-1-to block adds one to the value stored in a box." msgstr "" -#: js/utils/musicutils.js:1137 -#: js/utils/synthutils.js:160 -#.TRANS: musical instrument -msgid "bass drum" +#: js/blocks/BoxesBlocks.js:163 +msgid "add 1 to" msgstr "" -#: js/utils/musicutils.js:1138 -#: js/utils/synthutils.js:162 -#.TRANS: a drum made from an inverted cup -msgid "cup drum" +#: js/blocks/BoxesBlocks.js:211 +msgid "The Subtract-1-from block subtracts one from the value stored in a box." msgstr "" -#: js/utils/musicutils.js:1139 -#: js/utils/synthutils.js:164 -#.TRANS: musical instrument -msgid "darbuka drum" +#: js/blocks/BoxesBlocks.js:222 +msgid "subtract 1 from" msgstr "" -#: js/utils/musicutils.js:1140 -#: js/utils/synthutils.js:168 -#.TRANS: musical instrument -msgid "hi hat" +#: js/blocks/BoxesBlocks.js:270 +#: js/blocks/BoxesBlocks.js:387 +msgid "The Box block returns the value stored in a box." msgstr "" -#: js/utils/musicutils.js:1141 -#: js/utils/synthutils.js:170 -#.TRANS: a small metal bell -msgid "ride bell" +#: js/blocks/BoxesBlocks.js:500 +#: js/blocks/BoxesBlocks.js:576 +msgid "The Store in block will store a value in a box." msgstr "" -#: js/utils/musicutils.js:1142 -#: js/utils/synthutils.js:172 -#.TRANS: musical instrument -msgid "cow bell" +#: js/blocks/BoxesBlocks.js:595 +#: js/blocks/EnsembleBlocks.js:393 +#: js/blocks/EnsembleBlocks.js:404 +msgid "name1" msgstr "" -#: js/utils/musicutils.js:1143 -msgid "japanese drum" +#: js/blocks/BoxesBlocks.js:652 +msgid "The Box2 block returns the value stored in Box2." msgstr "" -#: js/utils/musicutils.js:1144 -#: js/utils/synthutils.js:178 -#.TRANS: musical instrument -msgid "japanese bell" +#: js/blocks/BoxesBlocks.js:703 +msgid "The Store in Box2 block is used to store a value in Box2." msgstr "" -#: js/utils/musicutils.js:1145 -#: js/utils/synthutils.js:174 -#.TRANS: musical instrument -msgid "triangle bell" +#: js/blocks/BoxesBlocks.js:715 +msgid "store in box2" msgstr "" -#: js/utils/musicutils.js:1146 -#: js/utils/synthutils.js:176 -#.TRANS: musical instrument -msgid "finger cymbals" +#: js/blocks/BoxesBlocks.js:761 +msgid "The Box1 block returns the value stored in Box1." msgstr "" -#: js/utils/musicutils.js:1147 -#: js/utils/synthutils.js:180 -#.TRANS: a musically tuned set of bells -msgid "chime" +#: js/blocks/BoxesBlocks.js:812 +msgid "The Store in Box1 block is used to store a value in Box1." msgstr "" -#: js/utils/musicutils.js:1148 -#: js/utils/synthutils.js:182 -#.TRANS: a musical instrument -msgid "gong" +#: js/blocks/BoxesBlocks.js:826 +msgid "store in box1" msgstr "" -#: js/utils/musicutils.js:1149 -#: js/utils/synthutils.js:184 -#.TRANS: sound effect -msgid "clang" +#: js/blocks/DictBlocks.js:62 +msgid "The Show-dictionary block displays the contents of the dictionary at the top of the screen." msgstr "" -#: js/utils/musicutils.js:1150 -#: js/utils/synthutils.js:186 -#.TRANS: sound effect -msgid "crash" +#: js/blocks/DictBlocks.js:75 +msgid "show dictionary" msgstr "" -#: js/utils/musicutils.js:1151 -#: js/utils/synthutils.js:188 -#.TRANS: sound effect -msgid "bottle" +#: js/blocks/DictBlocks.js:78 +#: js/blocks/DictBlocks.js:143 +#: js/blocks/DictBlocks.js:214 +#: js/blocks/DictBlocks.js:288 +#: js/blocks/ProgramBlocks.js:396 +#: js/blocks/ProgramBlocks.js:501 +#: js/blocks/ProgramBlocks.js:664 +msgid "My Dictionary" msgstr "" -#: js/utils/musicutils.js:1152 -#: js/utils/synthutils.js:190 -#.TRANS: sound effect -msgid "clap" +#: js/blocks/DictBlocks.js:127 +msgid "The Dictionary block returns a dictionary." msgstr "" -#: js/utils/musicutils.js:1153 -#: js/utils/synthutils.js:192 -#.TRANS: sound effect -msgid "slap" +#: js/blocks/DictBlocks.js:195 +#: js/blocks/DictBlocks.js:337 +msgid "The Get-dict block returns a value in the dictionary for a specified key." msgstr "" -#: js/utils/musicutils.js:1154 -#: js/utils/synthutils.js:194 -#.TRANS: sound effect -msgid "splash" +#: js/blocks/DictBlocks.js:210 +#: js/blocks/DictBlocks.js:352 +#.TRANS: retrieve a value from the dictionary with a given key +msgid "get value" msgstr "" -#: js/utils/musicutils.js:1155 -#: js/utils/synthutils.js:196 -#.TRANS: sound effect -msgid "bubbles" +#: js/blocks/DictBlocks.js:213 +#: js/blocks/DictBlocks.js:214 +#: js/blocks/DictBlocks.js:287 +#: js/blocks/DictBlocks.js:288 +#: js/blocks/DictBlocks.js:355 +#: js/blocks/DictBlocks.js:428 +#: js/blocks/DictBlocks.js:429 +msgid "key2" msgstr "" -#: js/utils/musicutils.js:1156 -#: js/utils/synthutils.js:198 -#.TRANS: sound effect -msgid "raindrop" +#: js/blocks/DictBlocks.js:213 +#: js/blocks/DictBlocks.js:214 +#: js/blocks/DictBlocks.js:287 +#: js/blocks/DictBlocks.js:288 +#: js/blocks/DictBlocks.js:355 +#: js/blocks/DictBlocks.js:428 +#: js/blocks/DictBlocks.js:429 +#: js/blocks/IntervalsBlocks.js:1442 +#.TRANS: key, e.g., C in C Major +msgid "key" msgstr "" -#: js/utils/musicutils.js:1157 -#: js/utils/synthutils.js:200 -#.TRANS: animal sound effect -msgid "cat" +#: js/blocks/DictBlocks.js:269 +#: js/blocks/DictBlocks.js:409 +msgid "The Set-dict block sets a value in the dictionary for a specified key." msgstr "" -#: js/utils/musicutils.js:1158 -#: js/utils/synthutils.js:202 -#.TRANS: animal sound effect -msgid "cricket" +#: js/blocks/DictBlocks.js:284 +#: js/blocks/DictBlocks.js:425 +#.TRANS: set a value in the dictionary for a given key +msgid "set value" +msgstr "" + +#: js/blocks/DrumBlocks.js:59 +msgid "The Noise name block is used to select a noise synthesizer." msgstr "" -#: js/utils/musicutils.js:1159 -#: js/utils/synthutils.js:204 -#.TRANS: animal sound effect -msgid "dog" +#: js/blocks/DrumBlocks.js:102 +msgid "The Drum name block is used to select a drum." msgstr "" -#: js/utils/musicutils.js:1161 -#: js/utils/synthutils.js:106 -#.TRANS: musical instrument -msgid "banjo" +#: js/blocks/DrumBlocks.js:146 +msgid "The Effects name block is used to select a sound effect." msgstr "" -#: js/utils/musicutils.js:1162 -#: js/utils/synthutils.js:108 -#.TRANS: musical instrument -msgid "koto" +#: js/blocks/DrumBlocks.js:163 +msgid "noise" msgstr "" -#: js/utils/musicutils.js:1163 -#: js/utils/synthutils.js:110 -#.TRANS: musical instrument -msgid "dulcimer" +#: js/blocks/DrumBlocks.js:177 +msgid "The Play noise block will generate white, pink, or brown noise." msgstr "" -#: js/utils/musicutils.js:1164 -#: js/utils/synthutils.js:112 -#.TRANS: musical instrument -msgid "electric guitar" +#: js/blocks/DrumBlocks.js:317 +msgid "Replace every instance of a pitch with a drum sound." msgstr "" -#: js/utils/musicutils.js:1165 -#: js/utils/synthutils.js:114 -#.TRANS: musical instrument -msgid "bassoon" +#: js/blocks/DrumBlocks.js:328 +#.TRANS: map a pitch to a drum sound +msgid "map pitch to drum" msgstr "" -#: js/utils/musicutils.js:1166 -#: js/utils/synthutils.js:116 -#.TRANS: musical instrument -msgid "celeste" +#: js/blocks/DrumBlocks.js:382 +#: js/blocks/DrumBlocks.js:389 +msgid "The Set drum block will select a drum sound to replace the pitch of any contained notes." msgstr "" -#: js/utils/musicutils.js:1168 -#: js/widgets/temperament.js:757 -#.TRANS: musical temperament -msgid "equal" +#: js/blocks/DrumBlocks.js:391 +msgid "In the example above, a kick drum sound will be played instead of sol." msgstr "" -#: js/utils/musicutils.js:1170 -#.TRANS: musical temperament -msgid "Pythagorean" +#: js/blocks/DrumBlocks.js:403 +#.TRANS: set the current drum sound for playback +msgid "set drum" msgstr "" -#: js/utils/musicutils.js:1172 -#.TRANS: musical temperament -msgid "just intonation" +#: js/blocks/DrumBlocks.js:447 +msgid "sound effect" msgstr "" -#: js/utils/musicutils.js:1174 -#: js/utils/musicutils.js:1610 -#: js/utils/musicutils.js:1611 -#: js/utils/musicutils.js:1626 -#: js/utils/musicutils.js:1627 -#.TRANS: musical temperament -msgid "Meantone" +#: js/blocks/DrumBlocks.js:485 +msgid "You can use multiple Drum blocks within a Note block." msgstr "" -#: js/utils/musicutils.js:1191 -msgid "major 7th" +#: js/blocks/EnsembleBlocks.js:87 +msgid "mouse index heap" msgstr "" -#: js/utils/musicutils.js:1192 -msgid "minor 7th" +#: js/blocks/EnsembleBlocks.js:87 +msgid "turtle index heap" msgstr "" -#: js/utils/musicutils.js:1193 -msgid "dominant 7th" +#: js/blocks/EnsembleBlocks.js:89 +msgid "The Mouse index heap block returns a value in the heap at a specified location for a specified mouse." msgstr "" -#: js/utils/musicutils.js:1194 -msgid "minor-major 7th" +#: js/blocks/EnsembleBlocks.js:90 +msgid "The Turtle index heap block returns a value in the heap at a specified location for a specified turtle." msgstr "" -#: js/utils/musicutils.js:1195 -msgid "fully-diminished 7th" +#: js/blocks/EnsembleBlocks.js:94 +#: js/blocks/EnsembleBlocks.js:169 +#: js/blocks/EnsembleBlocks.js:232 +#: js/blocks/EnsembleBlocks.js:318 +#: js/blocks/EnsembleBlocks.js:364 +#: js/blocks/EnsembleBlocks.js:402 +#: js/blocks/EnsembleBlocks.js:456 +#: js/blocks/EnsembleBlocks.js:506 +#: js/blocks/EnsembleBlocks.js:552 +#: js/blocks/EnsembleBlocks.js:599 +#: js/blocks/EnsembleBlocks.js:653 +#: js/blocks/EnsembleBlocks.js:765 +#: js/blocks/EnsembleBlocks.js:856 +#: js/blocks/EnsembleBlocks.js:917 +#: js/blocks/EnsembleBlocks.js:957 +#: js/blocks/EnsembleBlocks.js:1222 +#: js/blocks/EnsembleBlocks.js:1296 +msgid "Yertle" msgstr "" -#: js/utils/musicutils.js:1196 -msgid "half-diminished 7th" +#: js/blocks/EnsembleBlocks.js:96 +#: js/blocks/EnsembleBlocks.js:1083 +msgid "mouse name" msgstr "" -#: js/utils/musicutils.js:1603 -#: js/utils/musicutils.js:1619 -msgid "Equal (12EDO)" +#: js/blocks/EnsembleBlocks.js:96 +#: js/blocks/EnsembleBlocks.js:1092 +msgid "turtle name" msgstr "" -#: js/utils/musicutils.js:1604 -#: js/utils/musicutils.js:1620 -msgid "Equal (5EDO)" +#: js/blocks/EnsembleBlocks.js:96 +#: js/blocks/HeapBlocks.js:542 +#.TRANS: value1 is a numeric value (JAPANESE ONLY) +msgid "index" msgstr "" -#: js/utils/musicutils.js:1605 -#: js/utils/musicutils.js:1621 -msgid "Equal (7EDO)" +#: js/blocks/EnsembleBlocks.js:124 +#: js/blocks/EnsembleBlocks.js:1200 +#: js/blocks/HeapBlocks.js:472 +#: js/blocks/HeapBlocks.js:570 +msgid "Index must be > 0." msgstr "" -#: js/utils/musicutils.js:1606 -#: js/utils/musicutils.js:1622 -msgid "Equal (19EDO)" +#: js/blocks/EnsembleBlocks.js:129 +#: js/blocks/HeapBlocks.js:477 +#: js/blocks/HeapBlocks.js:575 +msgid "Maximum heap size is 1000." msgstr "" -#: js/utils/musicutils.js:1607 -#: js/utils/musicutils.js:1623 -msgid "Equal (31EDO)" +#: js/blocks/EnsembleBlocks.js:147 +msgid "stop mouse" msgstr "" -#: js/utils/musicutils.js:1608 -#: js/utils/musicutils.js:1624 -msgid "5-limit Just Intonation" +#: js/blocks/EnsembleBlocks.js:149 +msgid "The Stop mouse block stops the specified mouse." msgstr "" -#: js/utils/musicutils.js:1609 -#: js/utils/musicutils.js:1625 -msgid "Pythagorean (3-limit JI)" +#: js/blocks/EnsembleBlocks.js:160 +msgid "stop turtle" msgstr "" -#: js/utils/musicutils.js:5737 -#: js/utils/musicutils.js:5780 -msgid "current" +#: js/blocks/EnsembleBlocks.js:162 +msgid "The Stop turtle block stops the specified turtle." msgstr "" -#: js/utils/musicutils.js:5740 -#: js/utils/musicutils.js:5771 -msgid "next" +#: js/blocks/EnsembleBlocks.js:186 +#: js/blocks/EnsembleBlocks.js:249 +#: js/blocks/EnsembleBlocks.js:415 +#: js/blocks/EnsembleBlocks.js:470 +#: js/blocks/EnsembleBlocks.js:708 +#: js/blocks/EnsembleBlocks.js:810 +#: js/blocks/EnsembleBlocks.js:872 +#: js/blocks/EnsembleBlocks.js:1193 +#: js/blocks/EnsembleBlocks.js:1256 +msgid "Cannot find mouse" msgstr "" -#: js/utils/musicutils.js:5743 -#: js/utils/musicutils.js:5776 -msgid "previous" +#: js/blocks/EnsembleBlocks.js:188 +#: js/blocks/EnsembleBlocks.js:251 +#: js/blocks/EnsembleBlocks.js:417 +#: js/blocks/EnsembleBlocks.js:472 +#: js/blocks/EnsembleBlocks.js:710 +#: js/blocks/EnsembleBlocks.js:812 +#: js/blocks/EnsembleBlocks.js:874 +#: js/blocks/EnsembleBlocks.js:1195 +#: js/blocks/EnsembleBlocks.js:1258 +msgid "Cannot find turtle" msgstr "" -#: js/utils/synthutils.js:86 -#.TRANS: harmonium musical instrument -msgid "harmonium" +#: js/blocks/EnsembleBlocks.js:208 +msgid "start mouse" msgstr "" -#: js/utils/synthutils.js:124 -#.TRANS: simple monotone synthesizer -msgid "simple-2" +#: js/blocks/EnsembleBlocks.js:211 +msgid "The Start mouse block starts the specified mouse." msgstr "" -#: js/utils/synthutils.js:126 -#.TRANS: simple monotone synthesizer -msgid "simple-3" +#: js/blocks/EnsembleBlocks.js:222 +msgid "start turtle" msgstr "" -#: js/utils/synthutils.js:128 -#.TRANS: simple monotone synthesizer -msgid "simple-4" +#: js/blocks/EnsembleBlocks.js:225 +msgid "The Start turtle block starts the specified turtle." msgstr "" -#: js/utils/synthutils.js:166 -#.TRANS: musical instrument -msgid "taiko" +#: js/blocks/EnsembleBlocks.js:258 +msgid "Mouse is already running." msgstr "" -#: js/blocks/BooleanBlocks.js:44 -msgid "The Not block is the logical not operator." +#: js/blocks/EnsembleBlocks.js:260 +msgid "Turtle is already running." msgstr "" -#: js/blocks/BooleanBlocks.js:62 -msgid "not" +#: js/blocks/EnsembleBlocks.js:284 +msgid "Cannot find start block" msgstr "" -#: js/blocks/BooleanBlocks.js:134 -msgid "The And block is the logical and operator." +#: js/blocks/EnsembleBlocks.js:294 +#.TRANS: pen color for this mouse +msgid "mouse color" msgstr "" -#: js/blocks/BooleanBlocks.js:152 -msgid "and" +#: js/blocks/EnsembleBlocks.js:296 +msgid "The Mouse color block returns the pen color of the specified mouse." msgstr "" -#: js/blocks/BooleanBlocks.js:218 -msgid "The Or block is the logical or operator." +#: js/blocks/EnsembleBlocks.js:308 +#.TRANS: pen color for this turtle +msgid "turtle color" msgstr "" -#: js/blocks/BooleanBlocks.js:236 -msgid "or" +#: js/blocks/EnsembleBlocks.js:310 +msgid "The Turtle color block returns the pen color of the specified turtle." msgstr "" -#: js/blocks/BooleanBlocks.js:302 -msgid "The XOR block is the logical XOR operator." +#: js/blocks/EnsembleBlocks.js:340 +#.TRANS: heading (compass direction) for this mouse +msgid "mouse heading" msgstr "" -#: js/blocks/BooleanBlocks.js:320 -msgid "xor" +#: js/blocks/EnsembleBlocks.js:342 +msgid "The Mouse heading block returns the heading of the specified mouse." msgstr "" -#: js/blocks/BooleanBlocks.js:808 -msgid "The Equal block returns True if the two numbers are equal." +#: js/blocks/EnsembleBlocks.js:354 +#.TRANS: heading (compass direction) for this turtle +msgid "turtle heading" msgstr "" -#: js/blocks/BooleanBlocks.js:909 -msgid "The Not-equal-to block returns True if the two numbers are not equal to each other." +#: js/blocks/EnsembleBlocks.js:356 +msgid "The Turtle heading block returns the heading of the specified turtle." msgstr "" -#: js/blocks/BooleanBlocks.js:1008 -msgid "The Boolean block is used to specify true or false." +#: js/blocks/EnsembleBlocks.js:386 +#: js/blocks/EnsembleBlocks.js:441 +#.TRANS: set xy position for this mouse +msgid "set mouse" msgstr "" -#: js/blocks/BoxesBlocks.js:53 -#: js/blocks/BoxesBlocks.js:59 -msgid "The Add-to block is used to add to the value stored in a box." +#: js/blocks/EnsembleBlocks.js:393 +#: js/blocks/EnsembleBlocks.js:404 +#: js/blocks/GraphicsBlocks.js:235 +#: js/blocks/GraphicsBlocks.js:313 +#: js/blocks/GraphicsBlocks.js:427 +#: js/blocks/GraphicsBlocks.js:478 +#: js/blocks/GraphicsBlocks.js:525 +#: js/blocks/GraphicsBlocks.js:741 +#: js/blocks/ProgramBlocks.js:881 +msgid "x" msgstr "" -#: js/blocks/BoxesBlocks.js:61 -msgid "It can also be used with other blocks such as Color and Pen size." +#: js/blocks/EnsembleBlocks.js:393 +#: js/blocks/EnsembleBlocks.js:404 +#: js/blocks/GraphicsBlocks.js:149 +#: js/blocks/GraphicsBlocks.js:313 +#: js/blocks/GraphicsBlocks.js:427 +#: js/blocks/GraphicsBlocks.js:478 +#: js/blocks/GraphicsBlocks.js:525 +#: js/blocks/GraphicsBlocks.js:741 +#: js/blocks/ProgramBlocks.js:881 +msgid "y" msgstr "" -#: js/blocks/BoxesBlocks.js:73 -msgid "add" +#: js/blocks/EnsembleBlocks.js:397 +#: js/blocks/EnsembleBlocks.js:454 +#.TRANS: set xy position for this turtle +msgid "set turtle" msgstr "" -#: js/blocks/BoxesBlocks.js:75 -#: js/widgets/temperament.js:825 -msgid "to" +#: js/blocks/EnsembleBlocks.js:435 +msgid "The Set mouse block sends a stack of blocks to be run by the specified mouse." msgstr "" -#: js/blocks/BoxesBlocks.js:75 -#: js/blocks/BoxesBlocks.js:595 -#: js/blocks/HeapBlocks.js:544 -msgid "value1" +#: js/blocks/EnsembleBlocks.js:448 +msgid "The Set turtle block sends a stack of blocks to be run by the specified turtle." msgstr "" -#: js/blocks/BoxesBlocks.js:118 -msgid "Block does not support incrementing." +#: js/blocks/EnsembleBlocks.js:482 +#.TRANS: y position for this mouse +msgid "mouse y" msgstr "" -#: js/blocks/BoxesBlocks.js:152 -msgid "The Add-1-to block adds one to the value stored in a box." +#: js/blocks/EnsembleBlocks.js:484 +msgid "The Y mouse block returns the Y position of the specified mouse." msgstr "" -#: js/blocks/BoxesBlocks.js:163 -msgid "add 1 to" +#: js/blocks/EnsembleBlocks.js:496 +#.TRANS: y position for this turtle +msgid "turtle y" msgstr "" -#: js/blocks/BoxesBlocks.js:211 -msgid "The Subtract-1-from block subtracts one from the value stored in a box." +#: js/blocks/EnsembleBlocks.js:498 +msgid "The Y turtle block returns the Y position of the specified turtle." msgstr "" -#: js/blocks/BoxesBlocks.js:222 -msgid "subtract 1 from" +#: js/blocks/EnsembleBlocks.js:528 +#.TRANS: x position for this mouse +msgid "mouse x" msgstr "" -#: js/blocks/BoxesBlocks.js:270 -#: js/blocks/BoxesBlocks.js:387 -msgid "The Box block returns the value stored in a box." +#: js/blocks/EnsembleBlocks.js:530 +msgid "The X mouse block returns the X position of the specified mouse." msgstr "" -#: js/blocks/BoxesBlocks.js:500 -#: js/blocks/BoxesBlocks.js:576 -msgid "The Store in block will store a value in a box." +#: js/blocks/EnsembleBlocks.js:542 +#.TRANS: x position for this turtle +msgid "turtle x" msgstr "" -#: js/blocks/BoxesBlocks.js:595 -#: js/blocks/EnsembleBlocks.js:393 -#: js/blocks/EnsembleBlocks.js:404 -msgid "name1" +#: js/blocks/EnsembleBlocks.js:544 +msgid "The X turtle block returns the X position of the specified turtle." msgstr "" -#: js/blocks/BoxesBlocks.js:652 -msgid "The Box2 block returns the value stored in Box2." +#: js/blocks/EnsembleBlocks.js:575 +#.TRANS: notes played by this mouse +msgid "mouse notes played" msgstr "" -#: js/blocks/BoxesBlocks.js:703 -msgid "The Store in Box2 block is used to store a value in Box2." +#: js/blocks/EnsembleBlocks.js:577 +msgid "The Mouse elapse notes block returns the number of notes played by the specified mouse." msgstr "" -#: js/blocks/BoxesBlocks.js:715 -msgid "store in box2" +#: js/blocks/EnsembleBlocks.js:589 +#.TRANS: notes played by this turtle +msgid "turtle notes played" msgstr "" -#: js/blocks/BoxesBlocks.js:761 -msgid "The Box1 block returns the value stored in Box1." +#: js/blocks/EnsembleBlocks.js:591 +msgid "The Turtle elapse notes block returns the number of notes played by the specified turtle." msgstr "" -#: js/blocks/BoxesBlocks.js:812 -msgid "The Store in Box1 block is used to store a value in Box1." +#: js/blocks/EnsembleBlocks.js:629 +#.TRANS: convert current note for this turtle to piano key (1-88) +msgid "mouse pitch number" msgstr "" -#: js/blocks/BoxesBlocks.js:826 -msgid "store in box1" +#: js/blocks/EnsembleBlocks.js:631 +msgid "The Mouse pitch block returns the current pitch number being played by the specified mouse." msgstr "" -#: js/blocks/DictBlocks.js:77 -msgid "show dictionary" +#: js/blocks/EnsembleBlocks.js:643 +#.TRANS: convert current note for this turtle to piano key (1-88) +msgid "turtle pitch number" msgstr "" -#: js/blocks/DictBlocks.js:80 -#: js/blocks/DictBlocks.js:145 -#: js/blocks/DictBlocks.js:216 -#: js/blocks/DictBlocks.js:290 -#: js/blocks/ProgramBlocks.js:396 -#: js/blocks/ProgramBlocks.js:501 -#: js/blocks/ProgramBlocks.js:664 -msgid "My Dictionary" +#: js/blocks/EnsembleBlocks.js:645 +msgid "The Turtle pitch block returns the current pitch number being played by the specified turtle." msgstr "" -#: js/blocks/DictBlocks.js:129 -msgid "The Dictionary block returns a dictionary." +#: js/blocks/EnsembleBlocks.js:749 +#: js/blocks/EnsembleBlocks.js:821 +#.TRANS: note value is the duration of the note played by this mouse +msgid "mouse note value" msgstr "" -#: js/blocks/DictBlocks.js:197 -#: js/blocks/DictBlocks.js:339 -msgid "The Get-dict block returns a value in the dictionary for a specified key." +#: js/blocks/EnsembleBlocks.js:759 +#.TRANS: note value is the duration of the note played by this turtle +msgid "turtle note value" msgstr "" -#: js/blocks/DictBlocks.js:212 -#: js/blocks/DictBlocks.js:354 -#.TRANS: retrieve a value from the dictionary with a given key -msgid "get value" +#: js/blocks/EnsembleBlocks.js:832 +#.TRANS: sync is short for synchronization +msgid "mouse sync" msgstr "" -#: js/blocks/DictBlocks.js:215 -#: js/blocks/DictBlocks.js:216 -#: js/blocks/DictBlocks.js:289 -#: js/blocks/DictBlocks.js:290 -#: js/blocks/DictBlocks.js:357 -#: js/blocks/DictBlocks.js:430 -#: js/blocks/DictBlocks.js:431 -msgid "key2" +#: js/blocks/EnsembleBlocks.js:834 +msgid "The Mouse sync block aligns the beat count between mice." msgstr "" -#: js/blocks/DictBlocks.js:215 -#: js/blocks/DictBlocks.js:216 -#: js/blocks/DictBlocks.js:289 -#: js/blocks/DictBlocks.js:290 -#: js/blocks/DictBlocks.js:357 -#: js/blocks/DictBlocks.js:430 -#: js/blocks/DictBlocks.js:431 -#: js/blocks/IntervalsBlocks.js:1462 -#.TRANS: key, e.g., C in C Major -msgid "key" +#: js/blocks/EnsembleBlocks.js:846 +#.TRANS: sync is short for synchronization +msgid "turtle sync" msgstr "" -#: js/blocks/DictBlocks.js:271 -#: js/blocks/DictBlocks.js:411 -msgid "The Set-dict block sets a value in the dictionary for a specified key." +#: js/blocks/EnsembleBlocks.js:848 +msgid "The Turtle sync block aligns the beat count between turtles." msgstr "" -#: js/blocks/DictBlocks.js:286 -#: js/blocks/DictBlocks.js:427 -#.TRANS: set a value in the dictionary for a given key -msgid "set value" +#: js/blocks/EnsembleBlocks.js:889 +msgid "The Found mouse block will return true if the specified mouse can be found." msgstr "" -#: js/blocks/DrumBlocks.js:59 -msgid "The Noise name block is used to select a noise synthesizer." +#: js/blocks/EnsembleBlocks.js:895 +msgid "found mouse" msgstr "" -#: js/blocks/DrumBlocks.js:102 -msgid "The Drum name block is used to select a drum." +#: js/blocks/EnsembleBlocks.js:905 +msgid "The Found turtle block will return true if the specified turtle can be found." msgstr "" -#: js/blocks/DrumBlocks.js:146 -msgid "The Effects name block is used to select a sound effect." +#: js/blocks/EnsembleBlocks.js:911 +msgid "found turtle" msgstr "" -#: js/blocks/DrumBlocks.js:163 -msgid "noise" +#: js/blocks/EnsembleBlocks.js:934 +msgid "new mouse" msgstr "" -#: js/blocks/DrumBlocks.js:177 -msgid "The Play noise block will generate white, pink, or brown noise." +#: js/blocks/EnsembleBlocks.js:936 +msgid "The New mouse block will create a new mouse." msgstr "" -#: js/blocks/DrumBlocks.js:317 -msgid "Replace every instance of a pitch with a drum sound." +#: js/blocks/EnsembleBlocks.js:947 +msgid "new turtle" msgstr "" -#: js/blocks/DrumBlocks.js:328 -#.TRANS: map a pitch to a drum sound -msgid "map pitch to drum" +#: js/blocks/EnsembleBlocks.js:949 +msgid "The New turtle block will create a new turtle." msgstr "" -#: js/blocks/DrumBlocks.js:395 -msgid "In the example above, a kick drum sound will be played instead of sol." +#: js/blocks/EnsembleBlocks.js:1013 +msgid "set mouse color" msgstr "" -#: js/blocks/DrumBlocks.js:407 -#.TRANS: set the current drum sound for playback -msgid "set drum" +#: js/blocks/EnsembleBlocks.js:1016 +msgid "The Set-mouse-color block is used to set the color of a mouse." msgstr "" -#: js/blocks/DrumBlocks.js:451 -msgid "sound effect" +#: js/blocks/EnsembleBlocks.js:1022 +msgid "set turtle color" msgstr "" -#: js/blocks/DrumBlocks.js:489 -msgid "You can use multiple Drum blocks within a Note block." +#: js/blocks/EnsembleBlocks.js:1025 +msgid "The Set-turtle-color block is used to set the color of a turtle." msgstr "" -#: js/blocks/HeapBlocks.js:49 -msgid "The Heap block returns the heap." +#: js/blocks/EnsembleBlocks.js:1086 +msgid "The Mouse-name block returns the name of a mouse." msgstr "" -#: js/blocks/HeapBlocks.js:133 -msgid "show heap" +#: js/blocks/EnsembleBlocks.js:1095 +msgid "The Turtle-name block returns the name of a turtle." msgstr "" -#: js/blocks/HeapBlocks.js:181 -msgid "The Heap-length block returns the length of the heap." +#: js/blocks/EnsembleBlocks.js:1118 +msgid "mouse count" msgstr "" -#: js/blocks/HeapBlocks.js:195 -msgid "heap length" +#: js/blocks/EnsembleBlocks.js:1121 +msgid "The Mouse-count block returns the number of mice." msgstr "" -#: js/blocks/HeapBlocks.js:254 -msgid "The Heap-empty? block returns true if the heap is empty." +#: js/blocks/EnsembleBlocks.js:1127 +msgid "turtle count" msgstr "" -#: js/blocks/HeapBlocks.js:268 -#.TRANS: Is the heap empty? -msgid "heap empty?" +#: js/blocks/EnsembleBlocks.js:1130 +msgid "The Turtle-count block returns the number of turtles." msgstr "" -#: js/blocks/HeapBlocks.js:317 -msgid "The Empty-heap block empties the heap." +#: js/blocks/EnsembleBlocks.js:1152 +msgid "nth mouse name" msgstr "" -#: js/blocks/HeapBlocks.js:327 -#: js/blocks/HeapBlocks.js:647 -#.TRANS: empty the heap -msgid "empty heap" +#: js/blocks/EnsembleBlocks.js:1155 +msgid "The Nth-Mouse name block returns the name of the nth mouse." msgstr "" -#: js/blocks/HeapBlocks.js:371 -msgid "The Reverse-heap block reverses the order of the heap." +#: js/blocks/EnsembleBlocks.js:1161 +msgid "nth turtle name" msgstr "" -#: js/blocks/HeapBlocks.js:384 -#.TRANS: reverse the order of the heap -msgid "reverse heap" +#: js/blocks/EnsembleBlocks.js:1164 +msgid "The Nth-Turtle name block returns the name of the nth turtle." msgstr "" -#: js/blocks/HeapBlocks.js:428 -msgid "The Index-heap block returns a value in the heap at a specified location." +#: js/blocks/EnsembleBlocks.js:1208 +#: js/blocks/EnsembleBlocks.js:1268 +msgid "set name" msgstr "" -#: js/blocks/HeapBlocks.js:443 -#.TRANS: retrieve a value from the heap at index position in the heap -msgid "index heap" +#: js/blocks/EnsembleBlocks.js:1217 +#: js/blocks/EnsembleBlocks.js:1224 +msgid "source" msgstr "" -#: js/blocks/HeapBlocks.js:474 -#: js/blocks/HeapBlocks.js:572 -#: js/blocks/EnsembleBlocks.js:124 -#: js/blocks/EnsembleBlocks.js:1200 -msgid "Index must be > 0." +#: js/blocks/EnsembleBlocks.js:1217 +#: js/blocks/EnsembleBlocks.js:1224 +msgid "target" msgstr "" -#: js/blocks/HeapBlocks.js:479 -#: js/blocks/HeapBlocks.js:577 -#: js/blocks/EnsembleBlocks.js:129 -msgid "Maximum heap size is 1000." +#: js/blocks/EnsembleBlocks.js:1274 +msgid "The Set-name block is used to name a mouse." msgstr "" -#: js/blocks/HeapBlocks.js:523 -msgid "The Set-heap entry block sets a value in he heap at the specified location." +#: js/blocks/EnsembleBlocks.js:1287 +msgid "The Set-name block is used to name a turtle." msgstr "" -#: js/blocks/HeapBlocks.js:539 -#: js/blocks/ProgramBlocks.js:299 -#.TRANS: load the heap from a JSON encoding -msgid "set heap" +#: js/blocks/FlowBlocks.js:41 +msgid "The Backward block runs code in reverse order (Musical retrograde)." msgstr "" -#: js/blocks/HeapBlocks.js:544 -#: js/blocks/EnsembleBlocks.js:96 -#.TRANS: value1 is a numeric value (JAPANESE ONLY) -msgid "index" +#: js/blocks/FlowBlocks.js:48 +msgid "backward" msgstr "" -#: js/blocks/HeapBlocks.js:619 -msgid "The Pop block removes the value at the top of the heap." +#: js/blocks/FlowBlocks.js:124 +msgid "The Duplicate block will run each block multiple times." msgstr "" -#: js/blocks/HeapBlocks.js:633 -#.TRANS: pop a value off the top of the heap -msgid "pop" +#: js/blocks/FlowBlocks.js:126 +msgid "The output of the example is: Sol, Sol, Sol, Sol, Re, Re, Re, Re, Sol, Sol, Sol, Sol." msgstr "" -#: js/blocks/HeapBlocks.js:680 -msgid "The Push block adds a value to the top of the heap." +#: js/blocks/FlowBlocks.js:332 +msgid "The Default block is used inside of a Switch to define the default action." msgstr "" -#: js/blocks/HeapBlocks.js:696 -#.TRANS: push a value onto the top of the heap -msgid "push" +#: js/blocks/FlowBlocks.js:340 +msgid "default" msgstr "" -#: js/blocks/IntervalsBlocks.js:45 -msgid "set temperament" +#: js/blocks/FlowBlocks.js:359 +#: js/blocks/FlowBlocks.js:416 +msgid "The Case Block must be used inside of a Switch Block." msgstr "" -#: js/blocks/IntervalsBlocks.js:63 -#: js/blocks/PitchBlocks.js:657 -#: js/blocks/PitchBlocks.js:935 -#: js/blocks/PitchBlocks.js:974 -#: js/blocks/PitchBlocks.js:1007 -#: js/blocks/PitchBlocks.js:1194 -#: js/blocks/PitchBlocks.js:1717 -#: js/blocks/PitchBlocks.js:1758 -#: js/blocks/PitchBlocks.js:1866 -#: js/blocks/ToneBlocks.js:1025 -#: js/blocks/MediaBlocks.js:746 -#: js/turtleactions/IntervalsActions.js:114 -#.TRANS: adjusts the shift up or down by one octave (twelve half-steps in the interval between two notes, one having twice or half the frequency in Hz of the other.) -msgid "octave" +#: js/blocks/FlowBlocks.js:387 +msgid "The Case block is used inside of a Switch to define matches." msgstr "" -#: js/blocks/IntervalsBlocks.js:99 -msgid "The Temperament name block is used to select a tuning method." +#: js/blocks/FlowBlocks.js:395 +msgid "case" msgstr "" -#: js/blocks/IntervalsBlocks.js:161 -msgid "doubly" +#: js/blocks/FlowBlocks.js:444 +msgid "The Switch block will run the code in the matching Case." msgstr "" -#: js/blocks/IntervalsBlocks.js:166 -msgid "The Doubly block will double the size of an interval." +#: js/blocks/FlowBlocks.js:452 +msgid "switch" msgstr "" -#: js/blocks/IntervalsBlocks.js:262 -msgid "interval number" +#: js/blocks/FlowBlocks.js:593 +msgid "The Stop block will stop a loop" msgstr "" -#: js/blocks/IntervalsBlocks.js:317 -msgid "current interval" +#: js/blocks/FlowBlocks.js:595 +msgid "Forever, Repeat, While, or Until." msgstr "" -#: js/blocks/IntervalsBlocks.js:387 -#.TRANS: measure the distance between two pitches in semi-tones -msgid "semi-tone interval measure" +#: js/blocks/FlowBlocks.js:651 +msgid "The Waitfor block will wait until the condition is true." msgstr "" -#: js/blocks/IntervalsBlocks.js:454 -#: js/blocks/IntervalsBlocks.js:570 -msgid "You must use two pitch blocks when measuring an interval." +#: js/blocks/FlowBlocks.js:659 +msgid "wait for" msgstr "" -#: js/blocks/IntervalsBlocks.js:496 -msgid "The Scalar interval block measures the distance between two notes in the current key and mode." +#: js/blocks/FlowBlocks.js:730 +msgid "The Until block will repeat until the condition is true." msgstr "" -#: js/blocks/IntervalsBlocks.js:502 -#.TRANS: measure the distance between two pitches in steps of musical scale -msgid "scalar interval measure" +#: js/blocks/FlowBlocks.js:738 +msgid "until" msgstr "" -#: js/blocks/IntervalsBlocks.js:678 -msgid "In the figure, we add sol# to sol." +#: js/blocks/FlowBlocks.js:740 +#: js/blocks/FlowBlocks.js:820 +msgid "do2" msgstr "" -#: js/blocks/IntervalsBlocks.js:684 -#: js/blocks/OrnamentBlocks.js:220 -#.TRANS: calculate a relative step between notes based on semi-tones -msgid "semi-tone interval" +#: js/blocks/FlowBlocks.js:810 +msgid "The While block will repeat while the condition is true." msgstr "" -#: js/blocks/IntervalsBlocks.js:733 -msgid "The output of the example is: do, mi, sol, sol, ti, mi" +#: js/blocks/FlowBlocks.js:818 +msgid "while" msgstr "" -#: js/blocks/IntervalsBlocks.js:740 -#: js/blocks/WidgetBlocks.js:768 -msgid "arpeggio" +#: js/blocks/FlowBlocks.js:897 +#: js/blocks/FlowBlocks.js:906 +#: js/blocks/FlowBlocks.js:956 +#: js/blocks/FlowBlocks.js:965 +msgid "Conditionals lets your program take different actions depending on the condition." msgstr "" -#: js/blocks/IntervalsBlocks.js:931 -msgid "The Chord block calculates common chords." +#: js/blocks/FlowBlocks.js:899 +#: js/blocks/FlowBlocks.js:958 +#: js/blocks/FlowBlocks.js:967 +msgid "In this example if the mouse button is pressed a snare drum will play." msgstr "" -#: js/blocks/IntervalsBlocks.js:933 -msgid "In the figure, we generate a C-major chord." +#: js/blocks/FlowBlocks.js:908 +msgid "In this example if the mouse button is pressed a snare drum will play, else a kick drum will play." msgstr "" -#: js/blocks/IntervalsBlocks.js:938 -msgid "chord" +#: js/blocks/FlowBlocks.js:917 +#: js/blocks/FlowBlocks.js:976 +msgid "if" msgstr "" -#: js/blocks/IntervalsBlocks.js:990 -msgid "The Ratio Interval block calculates an interval based on a ratio." +#: js/blocks/FlowBlocks.js:919 +#: js/blocks/FlowBlocks.js:978 +msgid "then" msgstr "" -#: js/blocks/IntervalsBlocks.js:995 -msgid "ratio interval" +#: js/blocks/FlowBlocks.js:919 +msgid "else" msgstr "" -#: js/blocks/IntervalsBlocks.js:1064 -msgid "In the figure, we add la to sol." +#: js/blocks/FlowBlocks.js:1013 +msgid "The Forever block will repeat the contained blocks forever." msgstr "" -#: js/blocks/IntervalsBlocks.js:1120 -#.TRANS: define a custom mode -msgid "define mode" +#: js/blocks/FlowBlocks.js:1015 +msgid "In this example of a simple drum machine a kick drum will play 1/4 notes forever." msgstr "" -#: js/blocks/IntervalsBlocks.js:1173 -msgid "movable Do" +#: js/blocks/FlowBlocks.js:1023 +msgid "forever" msgstr "" -#: js/blocks/IntervalsBlocks.js:1224 -#.TRANS: mode length is the number of notes in the mode, e.g., 7 for major and minor scales; 12 for chromatic scales -msgid "mode length" +#: js/blocks/FlowBlocks.js:1059 +msgid "The Repeat block will repeat the contained blocks." msgstr "" -#: js/blocks/IntervalsBlocks.js:1233 -msgid "The Mode length block is the number of notes in the current scale." +#: js/blocks/FlowBlocks.js:1061 +msgid "In this example the note will be played 4 times." msgstr "" -#: js/blocks/IntervalsBlocks.js:1235 -msgid "Most Western scales have 7 notes." +#: js/blocks/FlowBlocks.js:1069 +msgid "repeat" msgstr "" -#: js/blocks/IntervalsBlocks.js:1284 -#.TRANS: the mode in music is 'major', 'minor', etc. -msgid "current mode" +#: js/blocks/FlowBlocks.js:1109 +msgid "duplicate factor" msgstr "" -#: js/blocks/IntervalsBlocks.js:1337 -#.TRANS: the key is a group of pitches with which a music composition is created -msgid "current key" +#: js/blocks/GraphicsBlocks.js:46 +#: js/turtleactions/DictActions.js:77 +#: js/turtleactions/DictActions.js:144 +#: js/turtleactions/DictActions.js:173 +msgid "heading" msgstr "" -#: js/blocks/IntervalsBlocks.js:1389 -#: js/blocks/IntervalsBlocks.js:1434 -#.TRANS: set the key and mode, e.g. C Major -msgid "set key" +#: js/blocks/GraphicsBlocks.js:56 +msgid "The Heading block returns the orientation of the mouse." msgstr "" -#: js/blocks/IntervalsBlocks.js:1443 -#: js/blocks/IntervalsBlocks.js:1449 -msgid "The Set key block is used to set the key and mode," +#: js/blocks/GraphicsBlocks.js:62 +msgid "The Heading block returns the orientation of the turtle." msgstr "" -#: js/blocks/IntervalsBlocks.js:1449 -msgid "eg C Major" +#: js/blocks/GraphicsBlocks.js:133 +msgid "The Y block returns the vertical position of the mouse." msgstr "" -#: js/blocks/NumberBlocks.js:28 -msgid "The Int block returns an integer." +#: js/blocks/GraphicsBlocks.js:140 +msgid "The Y block returns the vertical position of the turtle." msgstr "" -#: js/blocks/NumberBlocks.js:34 -msgid "int" +#: js/blocks/GraphicsBlocks.js:149 +msgid "y3" msgstr "" -#: js/blocks/NumberBlocks.js:73 -msgid "The Mod block returns the remainder from a division." +#: js/blocks/GraphicsBlocks.js:219 +msgid "The X block returns the horizontal position of the mouse." msgstr "" -#: js/blocks/NumberBlocks.js:79 -msgid "mod" +#: js/blocks/GraphicsBlocks.js:226 +msgid "The X block returns the horizontal position of the turtle." msgstr "" -#: js/blocks/NumberBlocks.js:141 -msgid "The Power block calculates a power function." +#: js/blocks/GraphicsBlocks.js:235 +msgid "x3" msgstr "" -#: js/blocks/NumberBlocks.js:196 -msgid "The Sqrt block returns the square root." +#: js/blocks/GraphicsBlocks.js:295 +msgid "scroll xy" msgstr "" -#: js/blocks/NumberBlocks.js:202 -msgid "sqrt" +#: js/blocks/GraphicsBlocks.js:303 +msgid "The Scroll XY block moves the canvas." msgstr "" -#: js/blocks/NumberBlocks.js:248 -msgid "The Abs block returns the absolute value." +#: js/blocks/GraphicsBlocks.js:313 +msgid "x2" msgstr "" -#: js/blocks/NumberBlocks.js:254 -msgid "abs" +#: js/blocks/GraphicsBlocks.js:313 +msgid "y2" msgstr "" -#: js/blocks/NumberBlocks.js:295 -msgid "The Distance block returns the distance between two points. For example, between the mouse and the center of the screen." +#: js/blocks/GraphicsBlocks.js:417 +msgid "The Control-point 2 block sets the second control point for the Bezier curve." msgstr "" -#: js/blocks/NumberBlocks.js:301 -#: plugins/rodi.rtp:310 -msgid "distance" +#: js/blocks/GraphicsBlocks.js:424 +msgid "control point 2" msgstr "" -#: js/blocks/NumberBlocks.js:361 -msgid "The Divide block is used to divide." +#: js/blocks/GraphicsBlocks.js:427 +#: js/blocks/GraphicsBlocks.js:478 +#: js/blocks/GraphicsBlocks.js:525 +#: js/blocks/GraphicsBlocks.js:741 +msgid "x1" msgstr "" -#: js/blocks/NumberBlocks.js:441 -msgid "The Multiply block is used to multiply." +#: js/blocks/GraphicsBlocks.js:427 +#: js/blocks/GraphicsBlocks.js:478 +#: js/blocks/GraphicsBlocks.js:525 +#: js/blocks/GraphicsBlocks.js:741 +msgid "y1" msgstr "" -#: js/blocks/NumberBlocks.js:612 -msgid "The Minus block is used to subtract." +#: js/blocks/GraphicsBlocks.js:468 +msgid "The Control-point 1 block sets the first control point for the Bezier curve." msgstr "" -#: js/blocks/NumberBlocks.js:723 -msgid "The Plus block is used to add." +#: js/blocks/GraphicsBlocks.js:475 +msgid "control point 1" msgstr "" -#: js/blocks/NumberBlocks.js:849 -msgid "The One-of block returns one of two choices." +#: js/blocks/GraphicsBlocks.js:518 +msgid "The Bezier block draws a Bezier curve." msgstr "" -#: js/blocks/NumberBlocks.js:856 -#: js/blocks/PitchBlocks.js:616 -msgid "one of" +#: js/blocks/GraphicsBlocks.js:522 +msgid "bezier" msgstr "" -#: js/blocks/NumberBlocks.js:858 -msgid "this" +#: js/blocks/GraphicsBlocks.js:583 +msgid "The Arc block moves the turtle in an arc." msgstr "" -#: js/blocks/NumberBlocks.js:858 -msgid "that" +#: js/blocks/GraphicsBlocks.js:591 +msgid "arc" msgstr "" -#: js/blocks/NumberBlocks.js:913 -msgid "The Random block returns a random number." +#: js/blocks/GraphicsBlocks.js:594 +msgid "angle" msgstr "" -#: js/blocks/NumberBlocks.js:920 -msgid "random" +#: js/blocks/GraphicsBlocks.js:594 +msgid "radius" msgstr "" -#: js/blocks/NumberBlocks.js:922 -msgid "min" +#: js/blocks/GraphicsBlocks.js:611 +#: js/blocks/GraphicsBlocks.js:758 +#: js/blocks/GraphicsBlocks.js:1001 +#: js/blocks/GraphicsBlocks.js:1084 +msgid "Value must be within -5000 to 5000 when Wrap Mode is off." msgstr "" -#: js/blocks/NumberBlocks.js:922 -msgid "max" +#: js/blocks/GraphicsBlocks.js:613 +#: js/blocks/GraphicsBlocks.js:760 +#: js/blocks/GraphicsBlocks.js:1003 +#: js/blocks/GraphicsBlocks.js:1086 +msgid "Value must be within -20000 to 20000 when Wrap Mode is on." msgstr "" -#: js/blocks/NumberBlocks.js:986 -msgid "The Number block holds a number." +#: js/blocks/GraphicsBlocks.js:651 +msgid "set heading" msgstr "" -#: js/blocks/OrnamentBlocks.js:32 -msgid "staccato factor" +#: js/blocks/GraphicsBlocks.js:664 +msgid "The Set heading block sets the heading of the turtle." msgstr "" -#: js/blocks/OrnamentBlocks.js:108 -msgid "slur factor" +#: js/blocks/GraphicsBlocks.js:724 +msgid "The Set XY block moves the mouse to a specific position on the screen." msgstr "" -#: js/blocks/OrnamentBlocks.js:217 -#: js/blocks/OrnamentBlocks.js:309 -#.TRANS: the neighbor refers to a neighboring note, e.g., D is a neighbor of C -msgid "neighbor" +#: js/blocks/GraphicsBlocks.js:730 +msgid "The Set XY block moves the turtle to a specific position on the screen." msgstr "" -#: js/blocks/OrnamentBlocks.js:293 -msgid "The Neighbor block rapidly switches between neighboring pitches." +#: js/blocks/GraphicsBlocks.js:738 +msgid "set xy" msgstr "" -#: js/blocks/OrnamentBlocks.js:364 -msgid "glide" +#: js/blocks/GraphicsBlocks.js:810 +msgid "The Right block turns the mouse to the right." msgstr "" -#: js/blocks/OrnamentBlocks.js:479 -#: js/blocks/OrnamentBlocks.js:643 -msgid "slur" +#: js/blocks/GraphicsBlocks.js:817 +msgid "The Right block turns the turtle to the right." msgstr "" -#: js/blocks/OrnamentBlocks.js:558 -#: js/blocks/OrnamentBlocks.js:710 -#.TRANS: play each note sharply detached from the others -msgid "staccato" +#: js/blocks/GraphicsBlocks.js:826 +msgid "right1" msgstr "" -#: js/blocks/ProgramBlocks.js:33 -msgid "The Load-heap-from-app block loads the heap from a web page." +#: js/blocks/GraphicsBlocks.js:826 +#: plugins/rodi.rtp:77 +#: plugins/rodi.rtp:340 +#: plugins/rodi.rtp:375 +msgid "right" msgstr "" -#: js/blocks/ProgramBlocks.js:44 -#.TRANS: load the heap contents from a URL -msgid "load heap from App" +#: js/blocks/GraphicsBlocks.js:890 +msgid "The Left block turns the mouse to the left." msgstr "" -#: js/blocks/ProgramBlocks.js:95 -msgid "Error parsing JSON data:" +#: js/blocks/GraphicsBlocks.js:897 +msgid "The Left block turns the turtle to the left." msgstr "" -#: js/blocks/ProgramBlocks.js:100 -msgid "404: Page not found" +#: js/blocks/GraphicsBlocks.js:906 +msgid "left1" msgstr "" -#: js/blocks/ProgramBlocks.js:133 -msgid "The Save-heap-to-app block saves the heap to a web page." +#: js/blocks/GraphicsBlocks.js:906 +#: plugins/rodi.rtp:79 +#: plugins/rodi.rtp:339 +#: plugins/rodi.rtp:362 +msgid "left" msgstr "" -#: js/blocks/ProgramBlocks.js:144 -#.TRANS: save the heap contents to a URL -msgid "save heap to App" +#: js/blocks/GraphicsBlocks.js:958 +#: js/widgets/temperament.js:839 +#: js/widgets/temperament.js:1033 +#: plugins/rodi.rtp:69 +#: plugins/rodi.rtp:387 +msgid "back" +msgstr "" + +#: js/blocks/GraphicsBlocks.js:967 +msgid "The Back block moves the mouse backward." +msgstr "" + +#: js/blocks/GraphicsBlocks.js:974 +msgid "The Back block moves the turtle backward." msgstr "" -#: js/blocks/ProgramBlocks.js:189 -msgid "Cannot find a valid heap for" +#: js/blocks/GraphicsBlocks.js:1041 +#: plugins/rodi.rtp:71 +#: plugins/rodi.rtp:400 +msgid "forward" msgstr "" -#: js/blocks/ProgramBlocks.js:206 -msgid "The Load-heap block loads the heap from a file." +#: js/blocks/GraphicsBlocks.js:1050 +msgid "The Forward block moves the mouse forward." msgstr "" -#: js/blocks/ProgramBlocks.js:217 -#.TRANS: load the heap from a file -msgid "load heap" +#: js/blocks/GraphicsBlocks.js:1057 +msgid "The Forward block moves the turtle forward." msgstr "" -#: js/blocks/ProgramBlocks.js:270 -msgid "The file you selected does not contain a valid heap." +#: js/blocks/GraphicsBlocks.js:1145 +#: js/blocks/GraphicsBlocks.js:1161 +msgid "wrap" msgstr "" -#: js/blocks/ProgramBlocks.js:275 -msgid "The loadHeap block needs a loadFile block." +#: js/blocks/GraphicsBlocks.js:1153 +msgid "The Wrap block enables or disables screen wrapping for the graphics actions within it." msgstr "" -#: js/blocks/ProgramBlocks.js:291 -msgid "The Set-heap block loads the heap." +#: js/blocks/HeapBlocks.js:49 +msgid "The Heap block returns the heap." msgstr "" -#: js/blocks/ProgramBlocks.js:340 -msgid "The block you selected does not contain a valid heap." +#: js/blocks/HeapBlocks.js:118 +msgid "The Show-heap block displays the contents of the heap at the top of the screen." msgstr "" -#: js/blocks/ProgramBlocks.js:343 -msgid "The Set heap block needs a heap." +#: js/blocks/HeapBlocks.js:131 +msgid "show heap" msgstr "" -#: js/blocks/ProgramBlocks.js:360 -msgid "The Load-dictionary block loads a dictionary from a file." +#: js/blocks/HeapBlocks.js:179 +msgid "The Heap-length block returns the length of the heap." msgstr "" -#: js/blocks/ProgramBlocks.js:372 -#.TRANS: load a dictionary from a file -msgid "load dictionary" +#: js/blocks/HeapBlocks.js:193 +msgid "heap length" msgstr "" -#: js/blocks/ProgramBlocks.js:390 -#: js/blocks/ProgramBlocks.js:658 -#: js/blocks/ToneBlocks.js:1025 -msgid "file" +#: js/blocks/HeapBlocks.js:252 +msgid "The Heap-empty? block returns true if the heap is empty." msgstr "" -#: js/blocks/ProgramBlocks.js:444 -msgid "The file you selected does not contain a valid dictionary." +#: js/blocks/HeapBlocks.js:266 +#.TRANS: Is the heap empty? +msgid "heap empty?" msgstr "" -#: js/blocks/ProgramBlocks.js:449 -msgid "The load dictionary block needs a load file block." +#: js/blocks/HeapBlocks.js:315 +msgid "The Empty-heap block empties the heap." msgstr "" -#: js/blocks/ProgramBlocks.js:466 -msgid "The Set-dictionary block loads a dictionary." +#: js/blocks/HeapBlocks.js:325 +#: js/blocks/HeapBlocks.js:645 +#.TRANS: empty the heap +msgid "empty heap" msgstr "" -#: js/blocks/ProgramBlocks.js:477 -#.TRANS: load a dictionary from a JSON -msgid "set dictionary" +#: js/blocks/HeapBlocks.js:369 +msgid "The Reverse-heap block reverses the order of the heap." msgstr "" -#: js/blocks/ProgramBlocks.js:546 -msgid "The block you selected does not contain a valid dictionary." +#: js/blocks/HeapBlocks.js:382 +#.TRANS: reverse the order of the heap +msgid "reverse heap" msgstr "" -#: js/blocks/ProgramBlocks.js:550 -msgid "The set dictionary block needs a dictionary." +#: js/blocks/HeapBlocks.js:426 +msgid "The Index-heap block returns a value in the heap at a specified location." msgstr "" -#: js/blocks/ProgramBlocks.js:567 -msgid "The Save-heap block saves the heap to a file." +#: js/blocks/HeapBlocks.js:441 +#.TRANS: retrieve a value from the heap at index position in the heap +msgid "index heap" msgstr "" -#: js/blocks/ProgramBlocks.js:578 -#.TRANS: save the heap to a file -msgid "save heap" +#: js/blocks/HeapBlocks.js:521 +msgid "The Set-heap entry block sets a value in he heap at the specified location." msgstr "" -#: js/blocks/ProgramBlocks.js:629 -msgid "The Save-dictionary block saves a dictionary to a file." +#: js/blocks/HeapBlocks.js:537 +#: js/blocks/ProgramBlocks.js:299 +#.TRANS: load the heap from a JSON encoding +msgid "set heap" msgstr "" -#: js/blocks/ProgramBlocks.js:640 -#.TRANS: save a dictionary to a file -msgid "save dictionary" +#: js/blocks/HeapBlocks.js:617 +msgid "The Pop block removes the value at the top of the heap." msgstr "" -#: js/blocks/ProgramBlocks.js:720 -msgid "The Open palette block opens a palette." +#: js/blocks/HeapBlocks.js:631 +#.TRANS: pop a value off the top of the heap +msgid "pop" msgstr "" -#: js/blocks/ProgramBlocks.js:727 -msgid "open palette" +#: js/blocks/HeapBlocks.js:678 +msgid "The Push block adds a value to the top of the heap." msgstr "" -#: js/blocks/ProgramBlocks.js:785 -msgid "The Delete block block removes a block." +#: js/blocks/HeapBlocks.js:694 +#.TRANS: push a value onto the top of the heap +msgid "push" msgstr "" -#: js/blocks/ProgramBlocks.js:797 -#.TRANS: Move this block to the trash. -msgid "delete block" +#: js/blocks/IntervalsBlocks.js:45 +msgid "set temperament" msgstr "" -#: js/blocks/ProgramBlocks.js:861 -msgid "The Move block block moves a block." +#: js/blocks/IntervalsBlocks.js:53 +msgid "The Set temperament block is used to choose the tuning system used by Music Blocks." msgstr "" -#: js/blocks/ProgramBlocks.js:869 -#.TRANS: Move the position of a block on the screen. -msgid "move block" +#: js/blocks/IntervalsBlocks.js:61 +#: js/blocks/MediaBlocks.js:730 +#: js/blocks/ToneBlocks.js:1021 +#: js/blocks/PitchBlocks.js:657 +#: js/blocks/PitchBlocks.js:935 +#: js/blocks/PitchBlocks.js:974 +#: js/blocks/PitchBlocks.js:1007 +#: js/blocks/PitchBlocks.js:1194 +#: js/blocks/PitchBlocks.js:1728 +#: js/blocks/PitchBlocks.js:1769 +#: js/blocks/PitchBlocks.js:1877 +#: js/turtleactions/IntervalsActions.js:114 +#.TRANS: adjusts the shift up or down by one octave (twelve half-steps in the interval between two notes, one having twice or half the frequency in Hz of the other.) +msgid "octave" msgstr "" -#: js/blocks/ProgramBlocks.js:881 -#: js/blocks/ProgramBlocks.js:1048 -msgid "block number" +#: js/blocks/IntervalsBlocks.js:97 +msgid "The Temperament name block is used to select a tuning method." msgstr "" -#: js/blocks/ProgramBlocks.js:881 -#: js/blocks/EnsembleBlocks.js:393 -#: js/blocks/EnsembleBlocks.js:404 -#: js/blocks/GraphicsBlocks.js:235 -#: js/blocks/GraphicsBlocks.js:313 -#: js/blocks/GraphicsBlocks.js:427 -#: js/blocks/GraphicsBlocks.js:478 -#: js/blocks/GraphicsBlocks.js:525 -#: js/blocks/GraphicsBlocks.js:741 -msgid "x" +#: js/blocks/IntervalsBlocks.js:159 +msgid "doubly" msgstr "" -#: js/blocks/ProgramBlocks.js:881 -#: js/blocks/EnsembleBlocks.js:393 -#: js/blocks/EnsembleBlocks.js:404 -#: js/blocks/GraphicsBlocks.js:149 -#: js/blocks/GraphicsBlocks.js:313 -#: js/blocks/GraphicsBlocks.js:427 -#: js/blocks/GraphicsBlocks.js:478 -#: js/blocks/GraphicsBlocks.js:525 -#: js/blocks/GraphicsBlocks.js:741 -msgid "y" +#: js/blocks/IntervalsBlocks.js:164 +msgid "The Doubly block will double the size of an interval." msgstr "" -#: js/blocks/ProgramBlocks.js:935 -#.TRANS: Run program beginning at this block. -msgid "run block" +#: js/blocks/IntervalsBlocks.js:260 +msgid "interval number" msgstr "" -#: js/blocks/ProgramBlocks.js:1025 -msgid "The Dock block block connections two blocks." +#: js/blocks/IntervalsBlocks.js:265 +msgid "The Interval number block returns the number of scalar steps in the current interval." msgstr "" -#: js/blocks/ProgramBlocks.js:1036 -#.TRANS: We can connect a block to another block. -msgid "connect blocks" +#: js/blocks/IntervalsBlocks.js:313 +msgid "current interval" msgstr "" -#: js/blocks/ProgramBlocks.js:1048 -msgid "target block" +#: js/blocks/IntervalsBlocks.js:318 +msgid "The Current interval block returns the name of scalar steps in the current interval." msgstr "" -#: js/blocks/ProgramBlocks.js:1048 -msgid "connection number" +#: js/blocks/IntervalsBlocks.js:373 +msgid "The Semi-tone interval block measures the distance between two notes in semi-tones." msgstr "" -#: js/blocks/ProgramBlocks.js:1140 -msgid "The Make block block creates a new block." +#: js/blocks/IntervalsBlocks.js:379 +#.TRANS: measure the distance between two pitches in semi-tones +msgid "semi-tone interval measure" msgstr "" -#: js/blocks/ProgramBlocks.js:1152 -#.TRANS: Create a new block -msgid "make block" +#: js/blocks/IntervalsBlocks.js:446 +#: js/blocks/IntervalsBlocks.js:562 +msgid "You must use two pitch blocks when measuring an interval." msgstr "" -#: js/blocks/ProgramBlocks.js:1186 -#: js/blocks/ProgramBlocks.js:1227 -#: js/blocks/RhythmBlocks.js:1128 -#: js/blocks/PitchBlocks.js:974 -#: js/blocks/PitchBlocks.js:1007 -#: js/widgets/status.js:186 -#: js/widgets/temperament.js:463 -#: js/widgets/temperament.js:481 -#: js/widgets/temperament.js:484 -#: js/widgets/temperament.js:589 -#: plugins/rodi.rtp:192 -#.TRANS: a musical note consisting of pitch and duration -msgid "note" +#: js/blocks/IntervalsBlocks.js:488 +msgid "The Scalar interval block measures the distance between two notes in the current key and mode." msgstr "" -#: js/blocks/ProgramBlocks.js:1285 -msgid "Cannot find block" +#: js/blocks/IntervalsBlocks.js:494 +#.TRANS: measure the distance between two pitches in steps of musical scale +msgid "scalar interval measure" msgstr "" -#: js/blocks/ProgramBlocks.js:1304 -#: js/blocks/ProgramBlocks.js:1313 -msgid "Warning: block argument type mismatch" +#: js/blocks/IntervalsBlocks.js:666 +msgid "The Semi-tone interval block calculates a relative interval based on half steps." msgstr "" -#: js/blocks/ProgramBlocks.js:1347 -msgid "The Open project block is used to open a project from a web page." +#: js/blocks/IntervalsBlocks.js:668 +msgid "In the figure, we add sol# to sol." msgstr "" -#: js/blocks/ProgramBlocks.js:1357 -msgid "open project" +#: js/blocks/IntervalsBlocks.js:674 +#: js/blocks/OrnamentBlocks.js:220 +#.TRANS: calculate a relative step between notes based on semi-tones +msgid "semi-tone interval" msgstr "" -#: js/blocks/ProgramBlocks.js:1410 -msgid "Please enter a valid URL." +#: js/blocks/IntervalsBlocks.js:719 +msgid "The Arpeggio block will run each note block multiple times, adding a transposition based on the specified chord." msgstr "" -#: js/blocks/RhythmBlocks.js:182 -#: js/blocks/RhythmBlocks.js:1086 -#: js/blocks/RhythmBlocks.js:1162 -msgid "Note value must be greater than 0." +#: js/blocks/IntervalsBlocks.js:721 +msgid "The output of the example is: do, mi, sol, sol, ti, mi" msgstr "" -#: js/blocks/RhythmBlocks.js:215 -#: js/blocks/RhythmBlocks.js:278 -#: js/blocks/RhythmBlocks.js:350 -#.TRANS: swing is a rhythmic variation that emphasises the offbeat -msgid "swing" +#: js/blocks/IntervalsBlocks.js:728 +#: js/blocks/WidgetBlocks.js:773 +msgid "arpeggio" msgstr "" -#: js/blocks/RhythmBlocks.js:355 -#.TRANS: the amount to shift to the offbeat note -msgid "swing value" +#: js/blocks/IntervalsBlocks.js:919 +msgid "The Chord block calculates common chords." msgstr "" -#: js/blocks/RhythmBlocks.js:419 -msgid "The Skip notes block will cause notes to be skipped." +#: js/blocks/IntervalsBlocks.js:921 +msgid "In the figure, we generate a C-major chord." msgstr "" -#: js/blocks/RhythmBlocks.js:427 -#.TRANS: substitute rests on notes being skipped -msgid "skip notes" +#: js/blocks/IntervalsBlocks.js:926 +msgid "chord" msgstr "" -#: js/blocks/RhythmBlocks.js:489 -#.TRANS: speed up note duration by some factor, e.g. convert 1/4 to 1/8 notes by using a factor of 2 -msgid "multiply note value" +#: js/blocks/IntervalsBlocks.js:978 +msgid "The Ratio Interval block calculates an interval based on a ratio." msgstr "" -#: js/blocks/RhythmBlocks.js:542 -msgid "The Tie block works on pairs of notes, combining them into one note." +#: js/blocks/IntervalsBlocks.js:983 +msgid "ratio interval" msgstr "" -#: js/blocks/RhythmBlocks.js:550 -#.TRANS: tie notes together into one longer note -msgid "tie" +#: js/blocks/IntervalsBlocks.js:1048 +msgid "The Scalar interval block calculates a relative interval based on the current mode, skipping all notes outside of the mode." msgstr "" -#: js/blocks/RhythmBlocks.js:591 -#: js/blocks/RhythmBlocks.js:671 -#.TRANS: a dotted note is played for 1.5x its value, e.g., 1/8. --> 3/16 -msgid "dot" +#: js/blocks/IntervalsBlocks.js:1050 +msgid "In the figure, we add la to sol." msgstr "" -#: js/blocks/RhythmBlocks.js:619 -#: js/turtleactions/RhythmActions.js:221 -msgid "An argument of -1 results in a note value of 0." +#: js/blocks/IntervalsBlocks.js:1097 +msgid "The Define mode block allows you to define a custom mode by specifying pitch numbers." msgstr "" -#: js/blocks/RhythmBlocks.js:661 -msgid "The Dot block extends the duration of a note by 50%." +#: js/blocks/IntervalsBlocks.js:1104 +#.TRANS: define a custom mode +msgid "define mode" msgstr "" -#: js/blocks/RhythmBlocks.js:663 -msgid "Eg a dotted quarter note will play for 3/8 (1/4 + 1/8) of a beat." +#: js/blocks/IntervalsBlocks.js:1157 +msgid "movable Do" msgstr "" -#: js/blocks/RhythmBlocks.js:765 -#.TRANS: Japanese only: note value block for drum -msgid "note value drum" +#: js/blocks/IntervalsBlocks.js:1161 +msgid "When Movable do is false, the solfege note names are always tied to specific pitches," msgstr "" -#: js/blocks/RhythmBlocks.js:829 -msgid "392 hertz" +#: js/blocks/IntervalsBlocks.js:1163 +msgid "eg \"do\" is always \"C-natural\" when Movable do is true, the solfege note names are assigned to scale degrees \"do\" is always the first degree of the major scale." msgstr "" -#: js/blocks/RhythmBlocks.js:1119 -msgid "The Note block is a container for one or more Pitch blocks." +#: js/blocks/IntervalsBlocks.js:1204 +#.TRANS: mode length is the number of notes in the mode, e.g., 7 for major and minor scales; 12 for chromatic scales +msgid "mode length" msgstr "" -#: js/blocks/RhythmBlocks.js:1121 -msgid "The Note block specifies the duration (note value) of its contents." +#: js/blocks/IntervalsBlocks.js:1213 +msgid "The Mode length block is the number of notes in the current scale." msgstr "" -#: js/blocks/RhythmBlocks.js:1130 -msgid "value2" +#: js/blocks/IntervalsBlocks.js:1215 +msgid "Most Western scales have 7 notes." msgstr "" -#: js/blocks/RhythmBlocks.js:1200 -msgid "define frequency" +#: js/blocks/IntervalsBlocks.js:1264 +#.TRANS: the mode in music is 'major', 'minor', etc. +msgid "current mode" msgstr "" -#: js/blocks/RhythmBlocks.js:1218 -#: js/widgets/temperament.js:757 -#: js/widgets/temperament.js:1522 -msgid "octave space" +#: js/blocks/IntervalsBlocks.js:1317 +#.TRANS: the key is a group of pitches with which a music composition is created +msgid "current key" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:50 -#: js/blocks/RhythmBlockPaletteBlocks.js:233 -#.TRANS: rhythm block -#.TRANS: translate "rhythm1" as rhythm -msgid "rhythm1" +#: js/blocks/IntervalsBlocks.js:1369 +#: js/blocks/IntervalsBlocks.js:1414 +#.TRANS: set the key and mode, e.g. C Major +msgid "set key" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:70 -#: js/blocks/RhythmBlockPaletteBlocks.js:252 -#: js/blocks/RhythmBlockPaletteBlocks.js:517 -#: js/blocks/RhythmBlockPaletteBlocks.js:586 -#: js/blocks/RhythmBlockPaletteBlocks.js:907 -msgid "number of notes" +#: js/blocks/IntervalsBlocks.js:1423 +#: js/blocks/IntervalsBlocks.js:1429 +msgid "The Set key block is used to set the key and mode," msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:126 -msgid "polyphonic rhythm" +#: js/blocks/IntervalsBlocks.js:1429 +msgid "eg C Major" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:219 -msgid "The Rhythm block is used to generate rhythm patterns." +#: js/blocks/MediaBlocks.js:35 +#.TRANS: right side of the screen +msgid "right (screen)" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:281 -#: js/blocks/RhythmBlockPaletteBlocks.js:286 -msgid "1/64 note" +#: js/blocks/MediaBlocks.js:45 +#: js/blocks/MediaBlocks.js:54 +msgid "The Right block returns the position of the right of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:312 -#: js/blocks/RhythmBlockPaletteBlocks.js:317 -msgid "1/32 note" +#: js/blocks/MediaBlocks.js:47 +#: js/blocks/MediaBlocks.js:105 +msgid "In this example, the mouse moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:346 -#: js/blocks/RhythmBlockPaletteBlocks.js:351 -msgid "1/16 note" +#: js/blocks/MediaBlocks.js:56 +#: js/blocks/MediaBlocks.js:114 +msgid "In this example, the turtle moves right until it reaches the right edge of the canvas; then it reappears at the left of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:380 -msgid "eighth note" +#: js/blocks/MediaBlocks.js:93 +#.TRANS: left side of the screen +msgid "left (screen)" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:408 -msgid "quarter note" +#: js/blocks/MediaBlocks.js:103 +#: js/blocks/MediaBlocks.js:112 +msgid "The Left block returns the position of the left of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:436 -#: js/blocks/RhythmBlockPaletteBlocks.js:441 -msgid "half note" +#: js/blocks/MediaBlocks.js:150 +msgid "top (screen)" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:470 -#: js/blocks/RhythmBlockPaletteBlocks.js:475 -msgid "whole note" +#: js/blocks/MediaBlocks.js:160 +#: js/blocks/MediaBlocks.js:169 +msgid "The Top block returns the position of the top of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:514 -#: js/blocks/RhythmBlockPaletteBlocks.js:583 -#: js/blocks/RhythmBlockPaletteBlocks.js:634 -#.TRANS: A tuplet is a note value divided into irregular time values. -msgid "tuplet" +#: js/blocks/MediaBlocks.js:162 +#: js/blocks/MediaBlocks.js:219 +msgid "In this example, the mouse moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:800 -msgid "septuplet" +#: js/blocks/MediaBlocks.js:171 +#: js/blocks/MediaBlocks.js:228 +msgid "In this example, the turtle moves upward until it reaches the top edge of the canvas; then it reappears at the bottom of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:828 -msgid "quintuplet" +#: js/blocks/MediaBlocks.js:207 +msgid "bottom (screen)" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:856 -msgid "triplet" +#: js/blocks/MediaBlocks.js:217 +#: js/blocks/MediaBlocks.js:226 +msgid "The Bottom block returns the position of the bottom of the canvas." msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:883 -msgid "simple tuplet" +#: js/blocks/MediaBlocks.js:266 +msgid "width" msgstr "" -#: js/blocks/RhythmBlockPaletteBlocks.js:893 -msgid "Tuplets are a collection of notes that get scaled to a specific duration." +#: js/blocks/MediaBlocks.js:275 +msgid "The Width block returns the width of the canvas." msgstr "" -#: js/blocks/FlowBlocks.js:41 -msgid "The Backward block runs code in reverse order (Musical retrograde)." +#: js/blocks/MediaBlocks.js:309 +msgid "height" msgstr "" -#: js/blocks/FlowBlocks.js:48 -msgid "backward" +#: js/blocks/MediaBlocks.js:318 +msgid "The Height block returns the height of the canvas." msgstr "" -#: js/blocks/FlowBlocks.js:124 -msgid "The Duplicate block will run each block multiple times." +#: js/blocks/MediaBlocks.js:353 +#.TRANS: stops playback of an audio recording +msgid "stop play" msgstr "" -#: js/blocks/FlowBlocks.js:334 -msgid "The Default block is used inside of a Switch to define the default action." +#: js/blocks/MediaBlocks.js:388 +#.TRANS: Erases the images and text +msgid "erase media" msgstr "" -#: js/blocks/FlowBlocks.js:342 -msgid "default" +#: js/blocks/MediaBlocks.js:393 +msgid "The Erase Media block erases text and images." msgstr "" -#: js/blocks/FlowBlocks.js:361 -#: js/blocks/FlowBlocks.js:418 -msgid "The Case Block must be used inside of a Switch Block." +#: js/blocks/MediaBlocks.js:423 +#.TRANS: play an audio recording +msgid "play back" msgstr "" -#: js/blocks/FlowBlocks.js:389 -msgid "The Case block is used inside of a Switch to define matches." +#: js/blocks/MediaBlocks.js:471 +msgid "speak" msgstr "" -#: js/blocks/FlowBlocks.js:397 -msgid "case" +#: js/blocks/MediaBlocks.js:479 +msgid "The Speak block outputs to the text-to-speech synthesizer" msgstr "" -#: js/blocks/FlowBlocks.js:446 -msgid "The Switch block will run the code in the matching Case." +#: js/blocks/MediaBlocks.js:530 +msgid "camera" msgstr "" -#: js/blocks/FlowBlocks.js:454 -msgid "switch" +#: js/blocks/MediaBlocks.js:535 +msgid "The Camera block connects a webcam to the Show block." msgstr "" -#: js/blocks/FlowBlocks.js:595 -msgid "The Stop block will stop a loop" +#: js/blocks/MediaBlocks.js:558 +msgid "video" msgstr "" -#: js/blocks/FlowBlocks.js:597 -msgid "Forever, Repeat, While, or Until." +#: js/blocks/MediaBlocks.js:563 +msgid "The Video block selects video for use with the Show block." msgstr "" -#: js/blocks/FlowBlocks.js:653 -msgid "The Waitfor block will wait until the condition is true." +#: js/blocks/MediaBlocks.js:591 +msgid "The Open file block opens a file for use with the Show block." msgstr "" -#: js/blocks/FlowBlocks.js:661 -msgid "wait for" +#: js/blocks/MediaBlocks.js:629 +msgid "stop media" msgstr "" -#: js/blocks/FlowBlocks.js:732 -msgid "The Until block will repeat until the condition is true." +#: js/blocks/MediaBlocks.js:634 +msgid "The Stop media block stops audio or video playback." msgstr "" -#: js/blocks/FlowBlocks.js:740 -msgid "until" +#: js/blocks/MediaBlocks.js:663 +#: js/blocks/PitchBlocks.js:1577 +#: js/widgets/musickeyboard.js:2061 +#: js/widgets/phrasemaker.js:1134 +#.TRANS: a measure of frequency: one cycle per second +msgid "hertz" msgstr "" -#: js/blocks/FlowBlocks.js:742 -#: js/blocks/FlowBlocks.js:822 -msgid "do2" +#: js/blocks/MediaBlocks.js:676 +#: js/blocks/WidgetBlocks.js:187 +#: js/widgets/temperament.js:488 +#: js/widgets/temperament.js:523 +#: js/widgets/temperament.js:582 +#: js/widgets/temperament.js:590 +#: js/widgets/temperament.js:1446 +#: js/widgets/timbre.js:1851 +msgid "frequency" msgstr "" -#: js/blocks/FlowBlocks.js:742 -#: js/blocks/FlowBlocks.js:822 -#: js/blocks/MeterBlocks.js:770 -#: js/blocks/ActionBlocks.js:390 -#: js/blocks/ActionBlocks.js:610 -#: js/blocks/ActionBlocks.js:959 -#: js/blocks/ActionBlocks.js:1048 -msgid "do" +#: js/blocks/MediaBlocks.js:676 +#: plugins/rodi.rtp:193 +msgid "duration (MS)" msgstr "" -#: js/blocks/FlowBlocks.js:812 -msgid "The While block will repeat while the condition is true." +#: js/blocks/MediaBlocks.js:712 +#.TRANS: translate a note into hertz, e.g., A4 -> 440HZ +msgid "note to frequency" msgstr "" -#: js/blocks/FlowBlocks.js:820 -msgid "while" +#: js/blocks/MediaBlocks.js:720 +msgid "The To frequency block converts a pitch name and octave to Hertz." msgstr "" -#: js/blocks/FlowBlocks.js:903 -#: js/blocks/FlowBlocks.js:968 -#: js/blocks/FlowBlocks.js:979 -msgid "In this example if the mouse button is pressed a snare drum will play." +#: js/blocks/MediaBlocks.js:730 +#: js/blocks/PitchBlocks.js:656 +#: js/blocks/PitchBlocks.js:934 +#: js/blocks/PitchBlocks.js:1877 +#.TRANS: name2 is name as in name of pitch (JAPANESE ONLY) +msgid "name2" msgstr "" -#: js/blocks/FlowBlocks.js:925 -#: js/blocks/FlowBlocks.js:988 -msgid "if" +#: js/blocks/MediaBlocks.js:796 +msgid "The Avatar block is used to change the appearance of the mouse." msgstr "" -#: js/blocks/FlowBlocks.js:927 -#: js/blocks/FlowBlocks.js:990 -msgid "then" +#: js/blocks/MediaBlocks.js:803 +msgid "The Avatar block is used to change the appearance of the turtle." msgstr "" -#: js/blocks/FlowBlocks.js:927 -msgid "else" +#: js/blocks/MediaBlocks.js:815 +#: js/blocks/MediaBlocks.js:875 +#.TRANS: a media object +msgid "size" msgstr "" -#: js/blocks/FlowBlocks.js:1025 -msgid "The Forever block will repeat the contained blocks forever." +#: js/blocks/MediaBlocks.js:815 +msgid "image" msgstr "" -#: js/blocks/FlowBlocks.js:1037 -msgid "forever" +#: js/blocks/MediaBlocks.js:864 +msgid "The Show block is used to display text or images on the canvas." msgstr "" -#: js/blocks/FlowBlocks.js:1073 -msgid "The Repeat block will repeat the contained blocks." +#: js/blocks/MediaBlocks.js:872 +#.TRANS: show1 is show as in display an image or text on the screen. +msgid "show1" msgstr "" -#: js/blocks/FlowBlocks.js:1075 -msgid "In this example the note will be played 4 times." +#: js/blocks/MediaBlocks.js:875 +msgid "obj" msgstr "" -#: js/blocks/FlowBlocks.js:1083 -msgid "repeat" +#: js/blocks/MediaBlocks.js:922 +msgid "The Media block is used to import an image." msgstr "" -#: js/blocks/FlowBlocks.js:1123 -msgid "duplicate factor" +#: js/blocks/MediaBlocks.js:957 +msgid "The Text block holds a text string." msgstr "" #: js/blocks/MeterBlocks.js:34 @@ -4597,14 +5146,6 @@ msgstr "" msgid "beat" msgstr "" -#: js/blocks/MeterBlocks.js:770 -#: js/blocks/ActionBlocks.js:390 -#: js/blocks/ActionBlocks.js:610 -#: js/blocks/ActionBlocks.js:959 -#: js/blocks/ActionBlocks.js:1048 -msgid "do1" -msgstr "" - #: js/blocks/MeterBlocks.js:814 msgid "on every beat do" msgstr "" @@ -4664,1078 +5205,1177 @@ msgstr "" msgid "number of beats" msgstr "" -#: js/blocks/PitchBlocks.js:141 -#.TRANS: musical transposition (adjustment of pitch up or down) -msgid "transposition" +#: js/blocks/NumberBlocks.js:28 +msgid "The Int block returns an integer." +msgstr "" + +#: js/blocks/NumberBlocks.js:34 +msgid "int" +msgstr "" + +#: js/blocks/NumberBlocks.js:73 +msgid "The Mod block returns the remainder from a division." +msgstr "" + +#: js/blocks/NumberBlocks.js:79 +msgid "mod" +msgstr "" + +#: js/blocks/NumberBlocks.js:141 +msgid "The Power block calculates a power function." +msgstr "" + +#: js/blocks/NumberBlocks.js:196 +msgid "The Sqrt block returns the square root." +msgstr "" + +#: js/blocks/NumberBlocks.js:202 +msgid "sqrt" +msgstr "" + +#: js/blocks/NumberBlocks.js:248 +msgid "The Abs block returns the absolute value." +msgstr "" + +#: js/blocks/NumberBlocks.js:254 +msgid "abs" +msgstr "" + +#: js/blocks/NumberBlocks.js:295 +msgid "The Distance block returns the distance between two points. For example, between the mouse and the center of the screen." +msgstr "" + +#: js/blocks/NumberBlocks.js:301 +#: plugins/rodi.rtp:310 +msgid "distance" +msgstr "" + +#: js/blocks/NumberBlocks.js:361 +msgid "The Divide block is used to divide." +msgstr "" + +#: js/blocks/NumberBlocks.js:441 +msgid "The Multiply block is used to multiply." +msgstr "" + +#: js/blocks/NumberBlocks.js:612 +msgid "The Minus block is used to subtract." +msgstr "" + +#: js/blocks/NumberBlocks.js:723 +msgid "The Plus block is used to add." +msgstr "" + +#: js/blocks/NumberBlocks.js:849 +msgid "The One-of block returns one of two choices." +msgstr "" + +#: js/blocks/NumberBlocks.js:856 +#: js/blocks/PitchBlocks.js:616 +msgid "one of" +msgstr "" + +#: js/blocks/NumberBlocks.js:858 +msgid "this" +msgstr "" + +#: js/blocks/NumberBlocks.js:858 +msgid "that" +msgstr "" + +#: js/blocks/NumberBlocks.js:913 +msgid "The Random block returns a random number." +msgstr "" + +#: js/blocks/NumberBlocks.js:920 +msgid "random" +msgstr "" + +#: js/blocks/NumberBlocks.js:922 +msgid "min" +msgstr "" + +#: js/blocks/NumberBlocks.js:922 +msgid "max" +msgstr "" + +#: js/blocks/NumberBlocks.js:986 +msgid "The Number block holds a number." +msgstr "" + +#: js/blocks/OrnamentBlocks.js:32 +msgid "staccato factor" +msgstr "" + +#: js/blocks/OrnamentBlocks.js:108 +msgid "slur factor" +msgstr "" + +#: js/blocks/OrnamentBlocks.js:217 +#: js/blocks/OrnamentBlocks.js:309 +#.TRANS: the neighbor refers to a neighboring note, e.g., D is a neighbor of C +msgid "neighbor" +msgstr "" + +#: js/blocks/OrnamentBlocks.js:293 +msgid "The Neighbor block rapidly switches between neighboring pitches." +msgstr "" + +#: js/blocks/OrnamentBlocks.js:364 +msgid "glide" +msgstr "" + +#: js/blocks/OrnamentBlocks.js:479 +#: js/blocks/OrnamentBlocks.js:641 +msgid "slur" +msgstr "" + +#: js/blocks/OrnamentBlocks.js:558 +#: js/blocks/OrnamentBlocks.js:706 +#.TRANS: play each note sharply detached from the others +msgid "staccato" +msgstr "" + +#: js/blocks/OrnamentBlocks.js:626 +msgid "The Slur block lengthens the sustain of notes while maintaining the specified rhythmic value of the notes." +msgstr "" + +#: js/blocks/OrnamentBlocks.js:690 +msgid "The Staccato block shortens the length of the actual note while maintaining the specified rhythmic value of the notes." +msgstr "" + +#: js/blocks/PenBlocks.js:30 +msgid "purple" +msgstr "" + +#: js/blocks/PenBlocks.js:48 +#: js/blocks/SensorsBlocks.js:505 +#: plugins/rodi.rtp:219 +msgid "blue" msgstr "" -#: js/blocks/PitchBlocks.js:168 -#.TRANS: step down one note in current musical scale -msgid "scalar step down" +#: js/blocks/PenBlocks.js:64 +#: js/blocks/SensorsBlocks.js:557 +#: plugins/rodi.rtp:218 +msgid "green" msgstr "" -#: js/blocks/PitchBlocks.js:172 -msgid "The Scalar step down block returns the number of semi-tones down to the previous note in the current key and mode." +#: js/blocks/PenBlocks.js:80 +msgid "yellow" msgstr "" -#: js/blocks/PitchBlocks.js:190 -#.TRANS: step up one note in current musical scale -msgid "scalar step up" +#: js/blocks/PenBlocks.js:96 +#: plugins/nutrition.rtp:164 +msgid "orange" msgstr "" -#: js/blocks/PitchBlocks.js:194 -msgid "The Scalar step up block returns the number of semi-tones up to the next note in the current key and mode." +#: js/blocks/PenBlocks.js:112 +#: js/blocks/SensorsBlocks.js:609 +#: plugins/rodi.rtp:217 +msgid "red" msgstr "" -#: js/blocks/PitchBlocks.js:212 -#.TRANS: the change measured in half-steps between the current pitch and the previous pitch -msgid "change in pitch" +#: js/blocks/PenBlocks.js:128 +msgid "white" msgstr "" -#: js/blocks/PitchBlocks.js:216 -msgid "The Change in pitch block is the difference (in half steps) between the current pitch being played and the previous pitch played." +#: js/blocks/PenBlocks.js:144 +msgid "black" msgstr "" -#: js/blocks/PitchBlocks.js:243 -#.TRANS: the change measured in scale-steps between the current pitch and the previous pitch -msgid "scalar change in pitch" +#: js/blocks/PenBlocks.js:163 +msgid "begin fill" msgstr "" -#: js/blocks/PitchBlocks.js:250 -#: js/blocks/PitchBlocks.js:432 -#: js/blocks/PitchBlocks.js:1667 -#: js/turtleactions/DictActions.js:89 -#: js/widgets/temperament.js:582 -#: js/widgets/temperament.js:586 -#: js/widgets/temperament.js:824 -#.TRANS: convert current note to piano key (1-88) -#.TRANS: a mapping of pitch to the 88 piano keys -msgid "pitch number" +#: js/blocks/PenBlocks.js:188 +msgid "end fill" msgstr "" -#: js/blocks/PitchBlocks.js:256 -msgid "The Pitch number block is the value of the pitch of the note currently being played." +#: js/blocks/PenBlocks.js:208 +#: js/blocks/PenBlocks.js:537 +#.TRANS: set the background color +msgid "background" msgstr "" -#: js/blocks/PitchBlocks.js:329 -#: js/blocks/PitchBlocks.js:433 -#.TRANS: the current pitch expressed in Hertz -msgid "pitch in hertz" +#: js/blocks/PenBlocks.js:253 +#: js/turtleactions/DictActions.js:71 +#: js/turtleactions/DictActions.js:138 +#: js/turtleactions/DictActions.js:170 +msgid "grey" msgstr "" -#: js/blocks/PitchBlocks.js:334 -msgid "The Pitch in Hertz block is the value in Hertz of the pitch of the note currently being played." +#: js/blocks/PenBlocks.js:261 +msgid "The Grey block returns the current pen grey value." msgstr "" -#: js/blocks/PitchBlocks.js:367 -#: js/turtleactions/DictActions.js:87 -msgid "current pitch" +#: js/blocks/PenBlocks.js:319 +#: js/turtleactions/DictActions.js:69 +#: js/turtleactions/DictActions.js:136 +#: js/turtleactions/DictActions.js:169 +msgid "shade" msgstr "" -#: js/blocks/PitchBlocks.js:373 -msgid "The Current Pitch block is used with the Pitch Converter block. In the example above, current pitch, sol 4, is displayed as 392 hertz." +#: js/blocks/PenBlocks.js:326 +msgid "The Shade block returns the current pen shade value." msgstr "" -#: js/blocks/PitchBlocks.js:410 -msgid "This block converts the pitch value of the last note played into different formats such as hertz, letter name, pitch number, et al." +#: js/blocks/PenBlocks.js:384 +#: js/turtleactions/DictActions.js:67 +#: js/turtleactions/DictActions.js:134 +#: js/turtleactions/DictActions.js:168 +msgid "color" msgstr "" -#: js/blocks/PitchBlocks.js:434 -msgid "alphabet" +#: js/blocks/PenBlocks.js:394 +msgid "The Color block returns the current pen color." msgstr "" -#: js/blocks/PitchBlocks.js:436 -#.TRANS: Translate as "alphabet class" -msgid "letter class" +#: js/blocks/PenBlocks.js:449 +#: js/turtleactions/DictActions.js:73 +#: js/turtleactions/DictActions.js:140 +#: js/turtleactions/DictActions.js:171 +msgid "pen size" msgstr "" -#: js/blocks/PitchBlocks.js:437 -msgid "solfege class" +#: js/blocks/PenBlocks.js:453 +msgid "The Pen size block returns the current pen size value." msgstr "" -#: js/blocks/PitchBlocks.js:438 -msgid "staff y" +#: js/blocks/PenBlocks.js:492 +msgid "set font" msgstr "" -#: js/blocks/PitchBlocks.js:439 -msgid "solfege syllable" +#: js/blocks/PenBlocks.js:497 +msgid "The Set font block sets the font used by the Show block." msgstr "" -#: js/blocks/PitchBlocks.js:440 -msgid "pitch class" +#: js/blocks/PenBlocks.js:544 +msgid "The Background block sets the window background color." msgstr "" -#: js/blocks/PitchBlocks.js:441 -msgid "scalar class" +#: js/blocks/PenBlocks.js:575 +msgid "The Hollow line block creates a line with a hollow center." msgstr "" -#: js/blocks/PitchBlocks.js:443 -msgid "nth degree" +#: js/blocks/PenBlocks.js:583 +#.TRANS: draw a line logo has a hollow space down its center +msgid "hollow line" msgstr "" -#: js/blocks/PitchBlocks.js:444 -msgid "pitch to shade" +#: js/blocks/PenBlocks.js:652 +msgid "The Fill block fills in a shape with a color." msgstr "" -#: js/blocks/PitchBlocks.js:445 -msgid "pitch to color" +#: js/blocks/PenBlocks.js:661 +#.TRANS: fill in as a solid color +msgid "fill" msgstr "" -#: js/blocks/PitchBlocks.js:629 -#: js/widgets/musickeyboard.js:759 -#.TRANS: MIDI is a technical standard for electronic music -msgid "MIDI" +#: js/blocks/PenBlocks.js:738 +#.TRANS: raise up the pen so logo it does not draw when it is moved +msgid "pen up" msgstr "" -#: js/blocks/PitchBlocks.js:642 -#.TRANS: set an offset associated with the numeric piano keyboard mapping -msgid "set pitch number offset" +#: js/blocks/PenBlocks.js:745 +msgid "The Pen-up block raises the pen so that it does not draw." msgstr "" -#: js/blocks/PitchBlocks.js:645 -msgid "The Set pitch number offset block is used to set the offset for mapping pitch numbers to pitch and octave." +#: js/blocks/PenBlocks.js:779 +#.TRANS: put down the pen so logo it draws when it is moved +msgid "pen down" msgstr "" -#: js/blocks/PitchBlocks.js:656 -#: js/blocks/PitchBlocks.js:934 -#: js/blocks/PitchBlocks.js:1866 -#: js/blocks/MediaBlocks.js:746 -#.TRANS: name2 is name as in name of pitch (JAPANESE ONLY) -msgid "name2" +#: js/blocks/PenBlocks.js:787 +msgid "The Pen-down block lowers the pen so that it draws." msgstr "" -#: js/blocks/PitchBlocks.js:679 -#.TRANS: convert piano key number (1-88) to pitch -msgid "number to pitch" +#: js/blocks/PenBlocks.js:821 +#.TRANS: set the width of the line drawn by the pen +msgid "set pen size" msgstr "" -#: js/blocks/PitchBlocks.js:682 -msgid "The Number to pitch block will convert a pitch number to a pich name." +#: js/blocks/PenBlocks.js:831 +msgid "The Set-pen-size block changes the size of the pen." msgstr "" -#: js/blocks/PitchBlocks.js:715 -#.TRANS: convert piano key number (1-88) to octave -msgid "number to octave" +#: js/blocks/PenBlocks.js:890 +#.TRANS: set degree of translucence of the pen color +msgid "set translucency" msgstr "" -#: js/blocks/PitchBlocks.js:717 -msgid "The Number to octave block will convert a pitch number to an octave." +#: js/blocks/PenBlocks.js:898 +msgid "The Set translucency block changes the opacity of the pen." msgstr "" -#: js/blocks/PitchBlocks.js:726 -msgid "y to pitch" +#: js/blocks/PenBlocks.js:958 +msgid "set hue" msgstr "" -#: js/blocks/PitchBlocks.js:729 -msgid "Y to pitch block will convert a staff y position to corresponding pitch notation." +#: js/blocks/PenBlocks.js:966 +msgid "The Set hue block changes the color of the pen." msgstr "" -#: js/blocks/PitchBlocks.js:841 -msgid "accidental selector" +#: js/blocks/PenBlocks.js:1024 +msgid "set shade" msgstr "" -#: js/blocks/PitchBlocks.js:844 -msgid "The Accidental selector block is used to choose between double-sharp, sharp, natural, flat, and double-flat." +#: js/blocks/PenBlocks.js:1034 +msgid "The Set-shade block changes the pen color from dark to light." msgstr "" -#: js/blocks/PitchBlocks.js:858 -msgid "Pitch can be specified in terms of ni dha pa ma ga re sa." +#: js/blocks/PenBlocks.js:1088 +#.TRANS: set the level of vividness of the pen color +msgid "set grey" msgstr "" -#: js/blocks/PitchBlocks.js:872 -msgid "Pitch can be specified in terms of C D E F G A B." +#: js/blocks/PenBlocks.js:1096 +msgid "The Set grey block changes the vividness of the pen color." msgstr "" -#: js/blocks/PitchBlocks.js:884 -msgid "solfege" +#: js/blocks/PenBlocks.js:1149 +msgid "set color" msgstr "" -#: js/blocks/PitchBlocks.js:887 -msgid "Pitch can be specified in terms of do re mi fa sol la ti." +#: js/blocks/PenBlocks.js:1159 +msgid "The Set-color block changes the pen color." msgstr "" -#: js/blocks/PitchBlocks.js:922 -msgid "The Invert block rotates any contained notes around a target note." +#: js/blocks/ProgramBlocks.js:33 +msgid "The Load-heap-from-app block loads the heap from a web page." msgstr "" -#: js/blocks/PitchBlocks.js:929 -#: js/widgets/modewidget.js:137 -#.TRANS: pitch inversion rotates a pitch around another pitch -msgid "Invert" +#: js/blocks/ProgramBlocks.js:44 +#.TRANS: load the heap contents from a URL +msgid "load heap from App" msgstr "" -#: js/blocks/PitchBlocks.js:968 -#.TRANS: pitch inversion rotates a pitch around another pitch (odd number) -msgid "invert (odd)" +#: js/blocks/ProgramBlocks.js:95 +msgid "Error parsing JSON data:" msgstr "" -#: js/blocks/PitchBlocks.js:1001 -#.TRANS: pitch inversion rotates a pitch around another pitch (even number) -msgid "invert (even)" +#: js/blocks/ProgramBlocks.js:100 +msgid "404: Page not found" msgstr "" -#: js/blocks/PitchBlocks.js:1022 -#.TRANS: register is the octave of the current pitch -msgid "register" +#: js/blocks/ProgramBlocks.js:133 +msgid "The Save-heap-to-app block saves the heap to a web page." msgstr "" -#: js/blocks/PitchBlocks.js:1026 -msgid "The Register block provides an easy way to modify the register (octave) of the notes that follow it." +#: js/blocks/ProgramBlocks.js:144 +#.TRANS: save the heap contents to a URL +msgid "save heap to App" msgstr "" -#: js/blocks/PitchBlocks.js:1047 -#.TRANS: cents are units used to specify the ratio between pitches. There are 100 cents between successive notes. -msgid "50 cents" +#: js/blocks/ProgramBlocks.js:189 +msgid "Cannot find a valid heap for" msgstr "" -#: js/blocks/PitchBlocks.js:1102 -msgid "The Semi-tone transposition block will shift the pitches contained inside Note blocks up (or down) by half steps." +#: js/blocks/ProgramBlocks.js:206 +msgid "The Load-heap block loads the heap from a file." msgstr "" -#: js/blocks/PitchBlocks.js:1104 -msgid "In the example shown above, sol is shifted up to sol#." +#: js/blocks/ProgramBlocks.js:217 +#.TRANS: load the heap from a file +msgid "load heap" msgstr "" -#: js/blocks/PitchBlocks.js:1110 -#.TRANS: adjust the amount of shift (up or down) of a pitch -msgid "semi-tone transpose" +#: js/blocks/ProgramBlocks.js:270 +msgid "The file you selected does not contain a valid heap." msgstr "" -#: js/blocks/PitchBlocks.js:1143 -msgid "The Transpose by Ratio block will shift the pitches contained inside Note blocks up (or down) by a ratio" +#: js/blocks/ProgramBlocks.js:275 +msgid "The loadHeap block needs a loadFile block." msgstr "" -#: js/blocks/PitchBlocks.js:1149 -#.TRANS: adjust the amount of shift (up or down) of a pitch -msgid "transpose by ratio" +#: js/blocks/ProgramBlocks.js:291 +msgid "The Set-heap block loads the heap." msgstr "" -#: js/blocks/PitchBlocks.js:1232 -#.TRANS: down sixth means the note is five scale degrees below current note -msgid "down sixth" +#: js/blocks/ProgramBlocks.js:340 +msgid "The block you selected does not contain a valid heap." msgstr "" -#: js/blocks/PitchBlocks.js:1251 -#.TRANS: down third means the note is two scale degrees below current note -msgid "down third" +#: js/blocks/ProgramBlocks.js:343 +msgid "The Set heap block needs a heap." msgstr "" -#: js/blocks/PitchBlocks.js:1270 -#.TRANS: seventh means the note is the six scale degrees above current note -msgid "seventh" +#: js/blocks/ProgramBlocks.js:360 +msgid "The Load-dictionary block loads a dictionary from a file." msgstr "" -#: js/blocks/PitchBlocks.js:1289 -#.TRANS: sixth means the note is the five scale degrees above current note -msgid "sixth" +#: js/blocks/ProgramBlocks.js:372 +#.TRANS: load a dictionary from a file +msgid "load dictionary" msgstr "" -#: js/blocks/PitchBlocks.js:1308 -#.TRANS: fifth means the note is the four scale degrees above current note -msgid "fifth" +#: js/blocks/ProgramBlocks.js:390 +#: js/blocks/ProgramBlocks.js:658 +#: js/blocks/ToneBlocks.js:1021 +msgid "file" msgstr "" -#: js/blocks/PitchBlocks.js:1328 -#.TRANS: fourth means the note is three scale degrees above current note -msgid "fourth" +#: js/blocks/ProgramBlocks.js:444 +msgid "The file you selected does not contain a valid dictionary." msgstr "" -#: js/blocks/PitchBlocks.js:1347 -#.TRANS: third means the note is two scale degrees above current note -msgid "third" +#: js/blocks/ProgramBlocks.js:449 +msgid "The load dictionary block needs a load file block." msgstr "" -#: js/blocks/PitchBlocks.js:1366 -#.TRANS: second means the note is one scale degree above current note -msgid "second" +#: js/blocks/ProgramBlocks.js:466 +msgid "The Set-dictionary block loads a dictionary." msgstr "" -#: js/blocks/PitchBlocks.js:1407 -msgid "The Scalar transposition block will shift the pitches contained inside Note blocks up (or down) the scale." +#: js/blocks/ProgramBlocks.js:477 +#.TRANS: load a dictionary from a JSON +msgid "set dictionary" msgstr "" -#: js/blocks/PitchBlocks.js:1409 -msgid "In the example shown above, sol is shifted up to la." +#: js/blocks/ProgramBlocks.js:546 +msgid "The block you selected does not contain a valid dictionary." msgstr "" -#: js/blocks/PitchBlocks.js:1416 -#.TRANS: adjust the amount of shift (up or down) of a pitch by musical scale (scalar) steps -msgid "scalar transpose" +#: js/blocks/ProgramBlocks.js:550 +msgid "The set dictionary block needs a dictionary." msgstr "" -#: js/blocks/PitchBlocks.js:1451 -msgid "The Accidental block is used to create sharps and flats" +#: js/blocks/ProgramBlocks.js:567 +msgid "The Save-heap block saves the heap to a file." msgstr "" -#: js/blocks/PitchBlocks.js:1458 -#.TRANS: An accidental is a modification to a pitch, e.g., sharp or flat. -msgid "accidental override" +#: js/blocks/ProgramBlocks.js:578 +#.TRANS: save the heap to a file +msgid "save heap" msgstr "" -#: js/blocks/PitchBlocks.js:1577 -#: js/blocks/MediaBlocks.js:679 -#: js/widgets/musickeyboard.js:2018 -#: js/widgets/phrasemaker.js:1134 -#.TRANS: a measure of frequency: one cycle per second -msgid "hertz" +#: js/blocks/ProgramBlocks.js:629 +msgid "The Save-dictionary block saves a dictionary to a file." msgstr "" -#: js/blocks/PitchBlocks.js:1581 -msgid "The Hertz block (in combination with a Number block) will play a sound at the specified frequency." +#: js/blocks/ProgramBlocks.js:640 +#.TRANS: save a dictionary to a file +msgid "save dictionary" msgstr "" -#: js/blocks/PitchBlocks.js:1671 -msgid "The Pitch Number block will play a pitch associated by its number, e.g. 0 for C and 7 for G." +#: js/blocks/ProgramBlocks.js:720 +msgid "The Open palette block opens a palette." msgstr "" -#: js/blocks/PitchBlocks.js:1703 -#: js/blocks/PitchBlocks.js:1745 -#.TRANS: a numeric mapping of the notes in an octave based on the musical mode -#.TRANS: a numeric mapping of the notes in an octave based on the musical mode -msgid "nth modal pitch" +#: js/blocks/ProgramBlocks.js:727 +msgid "open palette" msgstr "" -#: js/blocks/PitchBlocks.js:1706 -msgid "nth Modal Pitch takes the pattern of pitches in semitones for a mode and makes each point a degree of the mode," +#: js/blocks/ProgramBlocks.js:785 +msgid "The Delete block block removes a block." msgstr "" -#: js/blocks/PitchBlocks.js:1708 -msgid "starting from 1 and regardless of tonal framework (i.e. not always 8 notes in the octave)" +#: js/blocks/ProgramBlocks.js:797 +#.TRANS: Move this block to the trash. +msgid "delete block" msgstr "" -#: js/blocks/PitchBlocks.js:1749 -msgid "Nth Modal Pitch takes a number as an input as the nth degree for the given mode. 0 is the first position, 1 is the second, -1 is the note before the first etc." +#: js/blocks/ProgramBlocks.js:861 +msgid "The Move block block moves a block." msgstr "" -#: js/blocks/PitchBlocks.js:1751 -msgid "The pitches change according to the mode specified without any need for respellings." +#: js/blocks/ProgramBlocks.js:869 +#.TRANS: Move the position of a block on the screen. +msgid "move block" msgstr "" -#: js/blocks/PitchBlocks.js:1790 -msgid "Scale Degree is a common convention in music. Scale Degree offers seven possible positions in the scale (1-7) and can be modified via accidentals." +#: js/blocks/ProgramBlocks.js:881 +#: js/blocks/ProgramBlocks.js:1046 +msgid "block number" msgstr "" -#: js/blocks/PitchBlocks.js:1792 -msgid "Scale Degree 1 is always the first pitch in a given scale, regardless of octave." +#: js/blocks/ProgramBlocks.js:922 +msgid "The Run block block runs a block. It accepts two types of arguments: block number or block name." msgstr "" -#: js/blocks/PitchBlocks.js:1814 -#.TRANS: step some number of notes in current musical scale -msgid "scalar step" +#: js/blocks/ProgramBlocks.js:933 +#.TRANS: Run program beginning at this block. +msgid "run block" msgstr "" -#: js/blocks/PitchBlocks.js:1819 -msgid "The Scalar Step block (in combination with a Number block) will play the next pitch in a scale," +#: js/blocks/ProgramBlocks.js:1023 +msgid "The Dock block block connections two blocks." msgstr "" -#: js/blocks/PitchBlocks.js:1821 -msgid "eg if the last note played was sol, Scalar Step 1 will play la." +#: js/blocks/ProgramBlocks.js:1034 +#.TRANS: We can connect a block to another block. +msgid "connect blocks" msgstr "" -#: js/blocks/PitchBlocks.js:1857 -msgid "The Pitch block specifies the pitch name and octave of a note that together determine the frequency of the note." +#: js/blocks/ProgramBlocks.js:1046 +msgid "target block" msgstr "" -#: js/blocks/ToneBlocks.js:34 -#: js/widgets/timbre.js:783 -msgid "Oscillator" +#: js/blocks/ProgramBlocks.js:1046 +msgid "connection number" msgstr "" -#: js/blocks/ToneBlocks.js:42 -#: js/blocks/WidgetBlocks.js:179 -#: js/widgets/timbre.js:1550 -#: js/widgets/timbre.js:1800 -#.TRANS: there are different types (sine, triangle, square...) of oscillators. -#.TRANS: type of filter, e.g., lowpass, highpass, etc. -msgid "type" +#: js/blocks/ProgramBlocks.js:1138 +msgid "The Make block block creates a new block." msgstr "" -#: js/blocks/ToneBlocks.js:44 -#: js/widgets/timbre.js:1554 -#.TRANS: Partials refers to the number of sine waves combined into the sound. -msgid "partials" +#: js/blocks/ProgramBlocks.js:1150 +#.TRANS: Create a new block +msgid "make block" msgstr "" -#: js/blocks/ToneBlocks.js:76 -msgid "You are adding multiple oscillator blocks." +#: js/blocks/ProgramBlocks.js:1184 +#: js/blocks/ProgramBlocks.js:1225 +#: js/blocks/RhythmBlocks.js:1118 +#: js/blocks/PitchBlocks.js:974 +#: js/blocks/PitchBlocks.js:1007 +#: js/widgets/status.js:186 +#: js/widgets/temperament.js:463 +#: js/widgets/temperament.js:481 +#: js/widgets/temperament.js:484 +#: js/widgets/temperament.js:589 +#: plugins/rodi.rtp:192 +#.TRANS: a musical note consisting of pitch and duration +msgid "note" msgstr "" -#: js/blocks/ToneBlocks.js:144 -#: js/widgets/timbre.js:1217 -#.TRANS: a duo synthesizer combines a synth with a sequencer -msgid "duo synth" +#: js/blocks/ProgramBlocks.js:1283 +msgid "Cannot find block" msgstr "" -#: js/blocks/ToneBlocks.js:149 -msgid "The Duo synth block is a duo-frequency modulator used to define a timbre." +#: js/blocks/ProgramBlocks.js:1302 +#: js/blocks/ProgramBlocks.js:1311 +msgid "Warning: block argument type mismatch" msgstr "" -#: js/blocks/ToneBlocks.js:157 -#: js/widgets/timbre.js:1468 -msgid "vibrato rate" +#: js/blocks/ProgramBlocks.js:1345 +msgid "The Open project block is used to open a project from a web page." msgstr "" -#: js/blocks/ToneBlocks.js:157 -msgid "vibrato intensity" +#: js/blocks/ProgramBlocks.js:1355 +msgid "open project" msgstr "" -#: js/blocks/ToneBlocks.js:185 -#: js/widgets/timbre.js:1215 -#.TRANS: AM (amplitude modulation) synthesizer -msgid "AM synth" +#: js/blocks/ProgramBlocks.js:1408 +msgid "Please enter a valid URL." msgstr "" -#: js/blocks/ToneBlocks.js:189 -msgid "The AM synth block is an amplitude modulator used to define a timbre." +#: js/blocks/RhythmBlocks.js:38 +msgid "The Note value block is the value of the duration of the note currently being played." msgstr "" -#: js/blocks/ToneBlocks.js:224 -#: js/widgets/timbre.js:1216 -#.TRANS: FM (frequency modulation) synthesizer -msgid "FM synth" +#: js/blocks/RhythmBlocks.js:137 +msgid "The Milliseconds block is similar to a Note block except that it uses time (in MS) to specify the note duration." msgstr "" -#: js/blocks/ToneBlocks.js:228 -msgid "The FM synth block is a frequency modulator used to define a timbre." +#: js/blocks/RhythmBlocks.js:178 +#: js/blocks/RhythmBlocks.js:1076 +#: js/blocks/RhythmBlocks.js:1152 +msgid "Note value must be greater than 0." msgstr "" -#: js/blocks/ToneBlocks.js:262 -msgid "partial" +#: js/blocks/RhythmBlocks.js:211 +#: js/blocks/RhythmBlocks.js:274 +#: js/blocks/RhythmBlocks.js:344 +#.TRANS: swing is a rhythmic variation that emphasises the offbeat +msgid "swing" msgstr "" -#: js/blocks/ToneBlocks.js:265 -msgid "The Partial block is used to specify a weight for a specific partial harmonic." +#: js/blocks/RhythmBlocks.js:337 +msgid "The Swing block works on pairs of notes (specified by note value), adding some duration (specified by swing value) to the first note and taking the same amount from the second note." msgstr "" -#: js/blocks/ToneBlocks.js:284 -#.TRANS: partials are weighted components in a harmonic series -msgid "Partial weight must be between 0 and 1." +#: js/blocks/RhythmBlocks.js:349 +#.TRANS: the amount to shift to the offbeat note +msgid "swing value" msgstr "" -#: js/blocks/ToneBlocks.js:297 -#.TRANS: partials are weighted components in a harmonic series -msgid "Partial block should be used inside of a Weighted-partials block." +#: js/blocks/RhythmBlocks.js:413 +msgid "The Skip notes block will cause notes to be skipped." msgstr "" -#: js/blocks/ToneBlocks.js:325 -#.TRANS: partials are weighted components in a harmonic series -msgid "weighted partials" +#: js/blocks/RhythmBlocks.js:421 +#.TRANS: substitute rests on notes being skipped +msgid "skip notes" msgstr "" -#: js/blocks/ToneBlocks.js:383 -msgid "The Harmonic block will add harmonics to the contained notes." +#: js/blocks/RhythmBlocks.js:473 +msgid "The Multiply note value block changes the duration of notes by changing their note values." msgstr "" -#: js/blocks/ToneBlocks.js:390 -#.TRANS: A harmonic is an overtone. -msgid "harmonic" +#: js/blocks/RhythmBlocks.js:481 +#.TRANS: speed up note duration by some factor, e.g. convert 1/4 to 1/8 notes by using a factor of 2 +msgid "multiply note value" msgstr "" -#: js/blocks/ToneBlocks.js:431 -msgid "The Distortion block adds distortion to the pitch." +#: js/blocks/RhythmBlocks.js:534 +msgid "The Tie block works on pairs of notes, combining them into one note." msgstr "" -#: js/blocks/ToneBlocks.js:438 -#: js/widgets/timbre.js:2088 -#.TRANS: distortion is an alteration in the sound -msgid "distortion" +#: js/blocks/RhythmBlocks.js:542 +#.TRANS: tie notes together into one longer note +msgid "tie" msgstr "" -#: js/blocks/ToneBlocks.js:487 -msgid "The Tremolo block adds a wavering effect." +#: js/blocks/RhythmBlocks.js:583 +#: js/blocks/RhythmBlocks.js:663 +#.TRANS: a dotted note is played for 1.5x its value, e.g., 1/8. --> 3/16 +msgid "dot" msgstr "" -#: js/blocks/ToneBlocks.js:495 -#: js/widgets/timbre.js:2084 -#.TRANS: a wavering effect in a musical tone -msgid "tremolo" +#: js/blocks/RhythmBlocks.js:611 +#: js/turtleactions/RhythmActions.js:221 +msgid "An argument of -1 results in a note value of 0." msgstr "" -#: js/blocks/ToneBlocks.js:500 -#: js/blocks/ToneBlocks.js:569 -#: js/blocks/ToneBlocks.js:630 -#: js/blocks/ToneBlocks.js:689 -#: js/widgets/timbre.js:2122 -#: js/widgets/timbre.js:2210 -#: js/widgets/timbre.js:2305 -#: js/widgets/timbre.js:2407 -#.TRANS: rate at which tremolo wavers -msgid "rate" +#: js/blocks/RhythmBlocks.js:653 +msgid "The Dot block extends the duration of a note by 50%." msgstr "" -#: js/blocks/ToneBlocks.js:502 -#: js/blocks/ToneBlocks.js:630 -#: js/widgets/timbre.js:2125 -#: js/widgets/timbre.js:2316 -#.TRANS: amplitude of tremolo waver -msgid "depth" +#: js/blocks/RhythmBlocks.js:655 +msgid "Eg a dotted quarter note will play for 3/8 (1/4 + 1/8) of a beat." msgstr "" -#: js/blocks/ToneBlocks.js:559 -msgid "The Phaser block adds a sweeping sound." +#: js/blocks/RhythmBlocks.js:708 +msgid "A rest of the specified note value duration can be constructed using a Silence block." msgstr "" -#: js/blocks/ToneBlocks.js:566 -#: js/widgets/timbre.js:2087 -#.TRANS: alter the phase of the sound -msgid "phaser" +#: js/blocks/RhythmBlocks.js:755 +#.TRANS: Japanese only: note value block for drum +msgid "note value drum" msgstr "" -#: js/blocks/ToneBlocks.js:569 -#: js/turtleactions/IntervalsActions.js:114 -#: js/widgets/timbre.js:2410 -msgid "octaves" +#: js/blocks/RhythmBlocks.js:819 +msgid "392 hertz" msgstr "" -#: js/blocks/ToneBlocks.js:569 -#: js/widgets/timbre.js:2413 -msgid "base frequency" +#: js/blocks/RhythmBlocks.js:1109 +msgid "The Note block is a container for one or more Pitch blocks." msgstr "" -#: js/blocks/ToneBlocks.js:619 -msgid "The Chorus block adds a chorus effect." +#: js/blocks/RhythmBlocks.js:1111 +msgid "The Note block specifies the duration (note value) of its contents." msgstr "" -#: js/blocks/ToneBlocks.js:627 -#: js/widgets/timbre.js:2086 -#.TRANS: musical effect to simulate a choral sound -msgid "chorus" +#: js/blocks/RhythmBlocks.js:1120 +msgid "value2" msgstr "" -#: js/blocks/ToneBlocks.js:630 -#: js/widgets/timbre.js:2310 -msgid "delay (MS)" +#: js/blocks/RhythmBlocks.js:1190 +msgid "define frequency" msgstr "" -#: js/blocks/ToneBlocks.js:678 -msgid "The Vibrato block adds a rapid, slight variation in pitch." +#: js/blocks/RhythmBlocks.js:1208 +#: js/widgets/temperament.js:757 +#: js/widgets/temperament.js:1522 +msgid "octave space" msgstr "" -#: js/blocks/ToneBlocks.js:686 -#: js/widgets/timbre.js:2085 -#.TRANS: a rapid, slight variation in pitch -msgid "vibrato" +#: js/blocks/SensorsBlocks.js:36 +msgid "The Input block prompts for keyboard input." msgstr "" -#: js/blocks/ToneBlocks.js:689 -#: js/widgets/timbre.js:2209 -msgid "intensity" +#: js/blocks/SensorsBlocks.js:46 +msgid "input" msgstr "" -#: js/blocks/ToneBlocks.js:733 -#.TRANS: select synthesizer -msgid "set synth" +#: js/blocks/SensorsBlocks.js:64 +msgid "Input a value" +msgstr "" + +#: js/blocks/SensorsBlocks.js:126 +msgid "input value" msgstr "" -#: js/blocks/ToneBlocks.js:804 -msgid "synth name" +#: js/blocks/SensorsBlocks.js:131 +msgid "The Input-value block stores the input." msgstr "" -#: js/blocks/ToneBlocks.js:842 -msgid "set default instrument" +#: js/blocks/SensorsBlocks.js:238 +msgid "loudness" msgstr "" -#: js/blocks/ToneBlocks.js:895 -#: js/blocks/ToneBlocks.js:943 -#.TRANS: set the characteristics of a custom instrument -msgid "set instrument" +#: js/blocks/SensorsBlocks.js:245 +msgid "The Loudness block returns the volume detected by the microphone." msgstr "" -#: js/blocks/ToneBlocks.js:898 -#: js/blocks/ToneBlocks.js:926 -#: js/blocks/ToneBlocks.js:932 -msgid "The Set instrument block selects a voice for the synthesizer," +#: js/blocks/SensorsBlocks.js:300 +msgid "click" msgstr "" -#: js/blocks/ToneBlocks.js:900 -#: js/blocks/ToneBlocks.js:934 -msgid "eg guitar piano violin or cello." +#: js/blocks/SensorsBlocks.js:306 +msgid "The Click block triggers an event if a mouse has been clicked." msgstr "" -#: js/blocks/ToneBlocks.js:1015 -msgid "Import a sound file to use as an instrument and set its pitch center." +#: js/blocks/SensorsBlocks.js:313 +msgid "The Click block triggers an event if a turtle has been clicked." msgstr "" -#: js/blocks/ToneBlocks.js:1110 -msgid "Upload a sound file to connect with the sample block." +#: js/blocks/SensorsBlocks.js:342 +msgid "cursor over" msgstr "" -#: js/blocks/ActionBlocks.js:58 -msgid "The Return block will return a value from an action." +#: js/blocks/SensorsBlocks.js:347 +msgid "The Cursor over block triggers an event when the cursor is moved over a mouse." msgstr "" -#: js/blocks/ActionBlocks.js:75 -msgid "return" +#: js/blocks/SensorsBlocks.js:354 +msgid "The Cursor over block triggers an event when the cursor is moved over a turtle." msgstr "" -#: js/blocks/ActionBlocks.js:128 -msgid "The Return to URL block will return a value to a webpage." +#: js/blocks/SensorsBlocks.js:383 +msgid "cursor out" msgstr "" -#: js/blocks/ActionBlocks.js:145 -msgid "return to URL" +#: js/blocks/SensorsBlocks.js:389 +msgid "The Cursor out block triggers an event when the cursor is moved off of a mouse." msgstr "" -#: js/blocks/ActionBlocks.js:233 -#: js/blocks/ActionBlocks.js:290 -#: js/blocks/ActionBlocks.js:501 -#: js/blocks/ActionBlocks.js:688 -msgid "The Calculate block returns a value calculated by an action." +#: js/blocks/SensorsBlocks.js:397 +msgid "The Cursor out block triggers an event when the cursor is moved off of a turtle." msgstr "" -#: js/blocks/ActionBlocks.js:251 -#: js/blocks/ActionBlocks.js:517 -#: js/blocks/ActionBlocks.js:707 -msgid "calculate" +#: js/blocks/SensorsBlocks.js:425 +msgid "cursor button down" msgstr "" -#: js/blocks/ActionBlocks.js:376 -#: js/blocks/ActionBlocks.js:593 -#: js/blocks/ActionBlocks.js:942 -#: js/blocks/ActionBlocks.js:1389 -#.TRANS: do is the do something or take an action. -msgid "The Do block is used to initiate an action." +#: js/blocks/SensorsBlocks.js:430 +msgid "The Cursor button down block triggers an event when the cursor button is pressed on a mouse." msgstr "" -#: js/blocks/ActionBlocks.js:791 -#: js/blocks/ActionBlocks.js:865 -msgid "The Arg block contains the value of an argument passed to an action." +#: js/blocks/SensorsBlocks.js:437 +msgid "The Cursor button down block triggers an event when the cursor button is pressed on a turtle." msgstr "" -#: js/blocks/ActionBlocks.js:806 -#: js/blocks/ActionBlocks.js:878 -msgid "arg" +#: js/blocks/SensorsBlocks.js:465 +msgid "cursor button up" msgstr "" -#: js/blocks/ActionBlocks.js:836 -#: js/blocks/ActionBlocks.js:900 -#: js/blocks/ActionBlocks.js:908 -msgid "Invalid argument" +#: js/blocks/SensorsBlocks.js:470 +msgid "The Cursor button up block triggers an event when the cursor button is released while over a mouse." msgstr "" -#: js/blocks/ActionBlocks.js:944 -msgid "In the example, it is used with the One of block to choose a random phase." +#: js/blocks/SensorsBlocks.js:477 +msgid "The Cursor button up block triggers an event when the cursor button is released while over a turtle." msgstr "" -#: js/blocks/ActionBlocks.js:1019 -#: js/blocks/ActionBlocks.js:1026 -msgid "The Listen block is used to listen for an event such as a mouse click." +#: js/blocks/SensorsBlocks.js:510 +msgid "The Get blue block returns the blue component of the pixel under the mouse." msgstr "" -#: js/blocks/ActionBlocks.js:1028 -msgid "When the event happens, an action is taken." +#: js/blocks/SensorsBlocks.js:516 +msgid "The Get blue block returns the blue component of the pixel under the turtle." msgstr "" -#: js/blocks/ActionBlocks.js:1045 -msgid "on" +#: js/blocks/SensorsBlocks.js:562 +msgid "The Get green block returns the green component of the pixel under the mouse." msgstr "" -#: js/blocks/ActionBlocks.js:1048 -#: js/blocks/ActionBlocks.js:1049 -#: js/blocks/ActionBlocks.js:1153 -msgid "event" +#: js/blocks/SensorsBlocks.js:568 +msgid "The Get green block returns the green component of the pixel under the turtle." msgstr "" -#: js/blocks/ActionBlocks.js:1133 -msgid "The Broadcast block is used to trigger an event." +#: js/blocks/SensorsBlocks.js:614 +msgid "The Get red block returns the red component of the pixel under the mouse." msgstr "" -#: js/blocks/ActionBlocks.js:1151 -msgid "broadcast" +#: js/blocks/SensorsBlocks.js:620 +msgid "The Get red block returns the red component of the pixel under the turtle." msgstr "" -#: js/blocks/ActionBlocks.js:1208 -msgid "Each Start block is a separate voice." +#: js/blocks/SensorsBlocks.js:661 +#: plugins/rodi.rtp:216 +msgid "pixel color" msgstr "" -#: js/blocks/ActionBlocks.js:1304 -msgid "It is often used for storing a phrase of music that is repeated." +#: js/blocks/SensorsBlocks.js:666 +msgid "The Get pixel block returns the color of the pixel under the mouse." msgstr "" -#: js/blocks/ActionBlocks.js:1495 -msgid "define temperament" +#: js/blocks/SensorsBlocks.js:672 +msgid "The Get pixel block returns the color of the pixel under the turtle." msgstr "" -#: js/blocks/EnsembleBlocks.js:87 -msgid "mouse index heap" +#: js/blocks/SensorsBlocks.js:787 +msgid "time" msgstr "" -#: js/blocks/EnsembleBlocks.js:87 -msgid "turtle index heap" +#: js/blocks/SensorsBlocks.js:794 +msgid "The Time block returns the number of seconds that the program has been running." msgstr "" -#: js/blocks/EnsembleBlocks.js:89 -msgid "The Mouse index heap block returns a value in the heap at a specified location for a specified mouse." +#: js/blocks/SensorsBlocks.js:831 +msgid "cursor y" msgstr "" -#: js/blocks/EnsembleBlocks.js:90 -msgid "The Turtle index heap block returns a value in the heap at a specified location for a specified turtle." +#: js/blocks/SensorsBlocks.js:836 +msgid "The Cursor Y block returns the vertical position of the mouse." msgstr "" -#: js/blocks/EnsembleBlocks.js:94 -#: js/blocks/EnsembleBlocks.js:169 -#: js/blocks/EnsembleBlocks.js:232 -#: js/blocks/EnsembleBlocks.js:318 -#: js/blocks/EnsembleBlocks.js:364 -#: js/blocks/EnsembleBlocks.js:402 -#: js/blocks/EnsembleBlocks.js:456 -#: js/blocks/EnsembleBlocks.js:506 -#: js/blocks/EnsembleBlocks.js:552 -#: js/blocks/EnsembleBlocks.js:599 -#: js/blocks/EnsembleBlocks.js:653 -#: js/blocks/EnsembleBlocks.js:765 -#: js/blocks/EnsembleBlocks.js:856 -#: js/blocks/EnsembleBlocks.js:917 -#: js/blocks/EnsembleBlocks.js:957 -#: js/blocks/EnsembleBlocks.js:1222 -#: js/blocks/EnsembleBlocks.js:1296 -msgid "Yertle" +#: js/blocks/SensorsBlocks.js:872 +msgid "cursor x" msgstr "" -#: js/blocks/EnsembleBlocks.js:96 -#: js/blocks/EnsembleBlocks.js:1083 -msgid "mouse name" +#: js/blocks/SensorsBlocks.js:877 +msgid "The Cursor X block returns the horizontal position of the mouse." msgstr "" -#: js/blocks/EnsembleBlocks.js:96 -#: js/blocks/EnsembleBlocks.js:1092 -msgid "turtle name" +#: js/blocks/SensorsBlocks.js:913 +msgid "mouse button" msgstr "" -#: js/blocks/EnsembleBlocks.js:147 -msgid "stop mouse" +#: js/blocks/SensorsBlocks.js:915 +msgid "The Mouse-button block returns True if the mouse button is pressed." msgstr "" -#: js/blocks/EnsembleBlocks.js:149 -msgid "The Stop mouse block stops the specified mouse." +#: js/blocks/SensorsBlocks.js:961 +msgid "to ASCII" msgstr "" -#: js/blocks/EnsembleBlocks.js:160 -msgid "stop turtle" +#: js/blocks/SensorsBlocks.js:965 +msgid "The To ASCII block converts numbers to letters." msgstr "" -#: js/blocks/EnsembleBlocks.js:162 -msgid "The Stop turtle block stops the specified turtle." +#: js/blocks/SensorsBlocks.js:1032 +msgid "The Keyboard block returns computer keyboard input." msgstr "" -#: js/blocks/EnsembleBlocks.js:186 -#: js/blocks/EnsembleBlocks.js:249 -#: js/blocks/EnsembleBlocks.js:415 -#: js/blocks/EnsembleBlocks.js:470 -#: js/blocks/EnsembleBlocks.js:708 -#: js/blocks/EnsembleBlocks.js:810 -#: js/blocks/EnsembleBlocks.js:872 -#: js/blocks/EnsembleBlocks.js:1193 -#: js/blocks/EnsembleBlocks.js:1256 -msgid "Cannot find mouse" +#: js/blocks/ToneBlocks.js:34 +#: js/widgets/timbre.js:786 +msgid "Oscillator" msgstr "" -#: js/blocks/EnsembleBlocks.js:188 -#: js/blocks/EnsembleBlocks.js:251 -#: js/blocks/EnsembleBlocks.js:417 -#: js/blocks/EnsembleBlocks.js:472 -#: js/blocks/EnsembleBlocks.js:710 -#: js/blocks/EnsembleBlocks.js:812 -#: js/blocks/EnsembleBlocks.js:874 -#: js/blocks/EnsembleBlocks.js:1195 -#: js/blocks/EnsembleBlocks.js:1258 -msgid "Cannot find turtle" +#: js/blocks/ToneBlocks.js:42 +#: js/blocks/WidgetBlocks.js:184 +#: js/widgets/timbre.js:1543 +#: js/widgets/timbre.js:1789 +#.TRANS: there are different types (sine, triangle, square...) of oscillators. +#.TRANS: type of filter, e.g., lowpass, highpass, etc. +msgid "type" msgstr "" -#: js/blocks/EnsembleBlocks.js:208 -msgid "start mouse" +#: js/blocks/ToneBlocks.js:44 +#: js/widgets/timbre.js:1547 +#.TRANS: Partials refers to the number of sine waves combined into the sound. +msgid "partials" msgstr "" -#: js/blocks/EnsembleBlocks.js:211 -msgid "The Start mouse block starts the specified mouse." +#: js/blocks/ToneBlocks.js:76 +msgid "You are adding multiple oscillator blocks." msgstr "" -#: js/blocks/EnsembleBlocks.js:222 -msgid "start turtle" +#: js/blocks/ToneBlocks.js:144 +#: js/widgets/timbre.js:1218 +#.TRANS: a duo synthesizer combines a synth with a sequencer +msgid "duo synth" msgstr "" -#: js/blocks/EnsembleBlocks.js:225 -msgid "The Start turtle block starts the specified turtle." +#: js/blocks/ToneBlocks.js:149 +msgid "The Duo synth block is a duo-frequency modulator used to define a timbre." msgstr "" -#: js/blocks/EnsembleBlocks.js:258 -msgid "Mouse is already running." +#: js/blocks/ToneBlocks.js:157 +#: js/widgets/timbre.js:1466 +msgid "vibrato rate" msgstr "" -#: js/blocks/EnsembleBlocks.js:260 -msgid "Turtle is already running." +#: js/blocks/ToneBlocks.js:157 +msgid "vibrato intensity" msgstr "" -#: js/blocks/EnsembleBlocks.js:284 -msgid "Cannot find start block" +#: js/blocks/ToneBlocks.js:185 +#: js/widgets/timbre.js:1216 +#.TRANS: AM (amplitude modulation) synthesizer +msgid "AM synth" msgstr "" -#: js/blocks/EnsembleBlocks.js:294 -#.TRANS: pen color for this mouse -msgid "mouse color" +#: js/blocks/ToneBlocks.js:189 +msgid "The AM synth block is an amplitude modulator used to define a timbre." msgstr "" -#: js/blocks/EnsembleBlocks.js:296 -msgid "The Mouse color block returns the pen color of the specified mouse." +#: js/blocks/ToneBlocks.js:224 +#: js/widgets/timbre.js:1217 +#.TRANS: FM (frequency modulation) synthesizer +msgid "FM synth" msgstr "" -#: js/blocks/EnsembleBlocks.js:308 -#.TRANS: pen color for this turtle -msgid "turtle color" +#: js/blocks/ToneBlocks.js:228 +msgid "The FM synth block is a frequency modulator used to define a timbre." msgstr "" -#: js/blocks/EnsembleBlocks.js:310 -msgid "The Turtle color block returns the pen color of the specified turtle." +#: js/blocks/ToneBlocks.js:262 +msgid "partial" msgstr "" -#: js/blocks/EnsembleBlocks.js:340 -#.TRANS: heading (compass direction) for this mouse -msgid "mouse heading" +#: js/blocks/ToneBlocks.js:265 +msgid "The Partial block is used to specify a weight for a specific partial harmonic." msgstr "" -#: js/blocks/EnsembleBlocks.js:342 -msgid "The Mouse heading block returns the heading of the specified mouse." +#: js/blocks/ToneBlocks.js:284 +#.TRANS: partials are weighted components in a harmonic series +msgid "Partial weight must be between 0 and 1." msgstr "" -#: js/blocks/EnsembleBlocks.js:354 -#.TRANS: heading (compass direction) for this turtle -msgid "turtle heading" +#: js/blocks/ToneBlocks.js:297 +#.TRANS: partials are weighted components in a harmonic series +msgid "Partial block should be used inside of a Weighted-partials block." msgstr "" -#: js/blocks/EnsembleBlocks.js:356 -msgid "The Turtle heading block returns the heading of the specified turtle." +#: js/blocks/ToneBlocks.js:317 +msgid "The Weighted partials block is used to specify the partials associated with a timbre." msgstr "" -#: js/blocks/EnsembleBlocks.js:386 -#: js/blocks/EnsembleBlocks.js:441 -#.TRANS: set xy position for this mouse -msgid "set mouse" +#: js/blocks/ToneBlocks.js:323 +#.TRANS: partials are weighted components in a harmonic series +msgid "weighted partials" msgstr "" -#: js/blocks/EnsembleBlocks.js:397 -#: js/blocks/EnsembleBlocks.js:454 -#.TRANS: set xy position for this turtle -msgid "set turtle" +#: js/blocks/ToneBlocks.js:381 +msgid "The Harmonic block will add harmonics to the contained notes." msgstr "" -#: js/blocks/EnsembleBlocks.js:435 -msgid "The Set mouse block sends a stack of blocks to be run by the specified mouse." +#: js/blocks/ToneBlocks.js:388 +#.TRANS: A harmonic is an overtone. +msgid "harmonic" msgstr "" -#: js/blocks/EnsembleBlocks.js:448 -msgid "The Set turtle block sends a stack of blocks to be run by the specified turtle." +#: js/blocks/ToneBlocks.js:429 +msgid "The Distortion block adds distortion to the pitch." msgstr "" -#: js/blocks/EnsembleBlocks.js:482 -#.TRANS: y position for this mouse -msgid "mouse y" +#: js/blocks/ToneBlocks.js:436 +#.TRANS: distortion is an alteration in the sound +msgid "distortion" msgstr "" -#: js/blocks/EnsembleBlocks.js:484 -msgid "The Y mouse block returns the Y position of the specified mouse." +#: js/blocks/ToneBlocks.js:485 +msgid "The Tremolo block adds a wavering effect." msgstr "" -#: js/blocks/EnsembleBlocks.js:496 -#.TRANS: y position for this turtle -msgid "turtle y" +#: js/blocks/ToneBlocks.js:493 +#.TRANS: a wavering effect in a musical tone +msgid "tremolo" msgstr "" -#: js/blocks/EnsembleBlocks.js:498 -msgid "The Y turtle block returns the Y position of the specified turtle." +#: js/blocks/ToneBlocks.js:498 +#: js/blocks/ToneBlocks.js:567 +#: js/blocks/ToneBlocks.js:628 +#: js/blocks/ToneBlocks.js:687 +#: js/widgets/timbre.js:2203 +#: js/widgets/timbre.js:2290 +#: js/widgets/timbre.js:2383 +#: js/widgets/timbre.js:2490 +#.TRANS: rate at which tremolo wavers +msgid "rate" msgstr "" -#: js/blocks/EnsembleBlocks.js:528 -#.TRANS: x position for this mouse -msgid "mouse x" +#: js/blocks/ToneBlocks.js:500 +#: js/blocks/ToneBlocks.js:628 +#: js/widgets/timbre.js:2206 +#: js/widgets/timbre.js:2394 +#.TRANS: amplitude of tremolo waver +msgid "depth" msgstr "" -#: js/blocks/EnsembleBlocks.js:530 -msgid "The X mouse block returns the X position of the specified mouse." +#: js/blocks/ToneBlocks.js:557 +msgid "The Phaser block adds a sweeping sound." msgstr "" -#: js/blocks/EnsembleBlocks.js:542 -#.TRANS: x position for this turtle -msgid "turtle x" +#: js/blocks/ToneBlocks.js:564 +#.TRANS: alter the phase of the sound +msgid "phaser" msgstr "" -#: js/blocks/EnsembleBlocks.js:544 -msgid "The X turtle block returns the X position of the specified turtle." +#: js/blocks/ToneBlocks.js:567 +#: js/turtleactions/IntervalsActions.js:114 +#: js/widgets/timbre.js:2493 +msgid "octaves" msgstr "" -#: js/blocks/EnsembleBlocks.js:575 -#.TRANS: notes played by this mouse -msgid "mouse notes played" +#: js/blocks/ToneBlocks.js:567 +#: js/widgets/timbre.js:2496 +msgid "base frequency" msgstr "" -#: js/blocks/EnsembleBlocks.js:577 -msgid "The Mouse elapse notes block returns the number of notes played by the specified mouse." +#: js/blocks/ToneBlocks.js:617 +msgid "The Chorus block adds a chorus effect." msgstr "" -#: js/blocks/EnsembleBlocks.js:589 -#.TRANS: notes played by this turtle -msgid "turtle notes played" +#: js/blocks/ToneBlocks.js:625 +#.TRANS: musical effect to simulate a choral sound +msgid "chorus" msgstr "" -#: js/blocks/EnsembleBlocks.js:591 -msgid "The Turtle elapse notes block returns the number of notes played by the specified turtle." +#: js/blocks/ToneBlocks.js:628 +#: js/widgets/timbre.js:2388 +msgid "delay (MS)" msgstr "" -#: js/blocks/EnsembleBlocks.js:629 -#.TRANS: convert current note for this turtle to piano key (1-88) -msgid "mouse pitch number" +#: js/blocks/ToneBlocks.js:676 +msgid "The Vibrato block adds a rapid, slight variation in pitch." msgstr "" -#: js/blocks/EnsembleBlocks.js:631 -msgid "The Mouse pitch block returns the current pitch number being played by the specified mouse." +#: js/blocks/ToneBlocks.js:684 +#.TRANS: a rapid, slight variation in pitch +msgid "vibrato" msgstr "" -#: js/blocks/EnsembleBlocks.js:643 -#.TRANS: convert current note for this turtle to piano key (1-88) -msgid "turtle pitch number" +#: js/blocks/ToneBlocks.js:687 +#: js/widgets/timbre.js:2289 +msgid "intensity" msgstr "" -#: js/blocks/EnsembleBlocks.js:645 -msgid "The Turtle pitch block returns the current pitch number being played by the specified turtle." +#: js/blocks/ToneBlocks.js:731 +#.TRANS: select synthesizer +msgid "set synth" msgstr "" -#: js/blocks/EnsembleBlocks.js:749 -#: js/blocks/EnsembleBlocks.js:821 -#.TRANS: note value is the duration of the note played by this mouse -msgid "mouse note value" +#: js/blocks/ToneBlocks.js:802 +msgid "synth name" msgstr "" -#: js/blocks/EnsembleBlocks.js:759 -#.TRANS: note value is the duration of the note played by this turtle -msgid "turtle note value" +#: js/blocks/ToneBlocks.js:840 +msgid "set default instrument" msgstr "" -#: js/blocks/EnsembleBlocks.js:832 -#.TRANS: sync is short for synchronization -msgid "mouse sync" +#: js/blocks/ToneBlocks.js:843 +msgid "The set default instrument block changes the default instrument from electronic synth to the instrument of your choice." msgstr "" -#: js/blocks/EnsembleBlocks.js:834 -msgid "The Mouse sync block aligns the beat count between mice." +#: js/blocks/ToneBlocks.js:891 +#: js/blocks/ToneBlocks.js:939 +#.TRANS: set the characteristics of a custom instrument +msgid "set instrument" msgstr "" -#: js/blocks/EnsembleBlocks.js:846 -#.TRANS: sync is short for synchronization -msgid "turtle sync" +#: js/blocks/ToneBlocks.js:894 +#: js/blocks/ToneBlocks.js:922 +#: js/blocks/ToneBlocks.js:928 +msgid "The Set instrument block selects a voice for the synthesizer," msgstr "" -#: js/blocks/EnsembleBlocks.js:848 -msgid "The Turtle sync block aligns the beat count between turtles." +#: js/blocks/ToneBlocks.js:896 +#: js/blocks/ToneBlocks.js:930 +msgid "eg guitar piano violin or cello." msgstr "" -#: js/blocks/EnsembleBlocks.js:889 -msgid "The Found mouse block will return true if the specified mouse can be found." +#: js/blocks/ToneBlocks.js:1011 +msgid "Import a sound file to use as an instrument and set its pitch center." msgstr "" -#: js/blocks/EnsembleBlocks.js:895 -msgid "found mouse" +#: js/blocks/ToneBlocks.js:1106 +msgid "Upload a sound file to connect with the sample block." msgstr "" -#: js/blocks/EnsembleBlocks.js:905 -msgid "The Found turtle block will return true if the specified turtle can be found." +#: js/blocks/VolumeBlocks.js:35 +msgid "synth volume" msgstr "" -#: js/blocks/EnsembleBlocks.js:911 -msgid "found turtle" +#: js/blocks/VolumeBlocks.js:39 +msgid "The Synth volume block returns the current volume of the current synthesizer." msgstr "" -#: js/blocks/EnsembleBlocks.js:934 -msgid "new mouse" +#: js/blocks/VolumeBlocks.js:105 +msgid "master volume" msgstr "" -#: js/blocks/EnsembleBlocks.js:936 -msgid "The New mouse block will create a new mouse." +#: js/blocks/VolumeBlocks.js:109 +msgid "The Master volume block returns the master volume." msgstr "" -#: js/blocks/EnsembleBlocks.js:947 -msgid "new turtle" +#: js/blocks/VolumeBlocks.js:355 +#: js/blocks/VolumeBlocks.js:524 +msgid "set synth volume" msgstr "" -#: js/blocks/EnsembleBlocks.js:949 -msgid "The New turtle block will create a new turtle." +#: js/blocks/VolumeBlocks.js:362 +#: js/blocks/VolumeBlocks.js:545 +msgid "synth" msgstr "" -#: js/blocks/EnsembleBlocks.js:1013 -msgid "set mouse color" +#: js/blocks/VolumeBlocks.js:403 +#: js/blocks/VolumeBlocks.js:577 +#: js/blocks/VolumeBlocks.js:740 +#: js/turtleactions/VolumeActions.js:173 +msgid "Setting volume to 0." msgstr "" -#: js/blocks/EnsembleBlocks.js:1016 -msgid "The Set-mouse-color block is used to set the color of a mouse." +#: js/blocks/VolumeBlocks.js:440 +msgid "Synth not found" msgstr "" -#: js/blocks/EnsembleBlocks.js:1022 -msgid "set turtle color" +#: js/blocks/VolumeBlocks.js:494 +msgid "set drum volume" msgstr "" -#: js/blocks/EnsembleBlocks.js:1025 -msgid "The Set-turtle-color block is used to set the color of a turtle." +#: js/blocks/VolumeBlocks.js:530 +msgid "The Set synth volume block will change the volume of a particular synth," msgstr "" -#: js/blocks/EnsembleBlocks.js:1086 -msgid "The Mouse-name block returns the name of a mouse." +#: js/blocks/VolumeBlocks.js:532 +msgid "eg guitar violin snare drum etc." msgstr "" -#: js/blocks/EnsembleBlocks.js:1095 -msgid "The Turtle-name block returns the name of a turtle." +#: js/blocks/VolumeBlocks.js:534 +msgid "The default volume is 50." msgstr "" -#: js/blocks/EnsembleBlocks.js:1118 -msgid "mouse count" +#: js/blocks/VolumeBlocks.js:536 +msgid "The range is 0 for silence to 100 for full volume." msgstr "" -#: js/blocks/EnsembleBlocks.js:1121 -msgid "The Mouse-count block returns the number of mice." +#: js/blocks/VolumeBlocks.js:597 +msgid "set panning" msgstr "" -#: js/blocks/EnsembleBlocks.js:1127 -msgid "turtle count" +#: js/blocks/VolumeBlocks.js:603 +msgid "The Set Panning block sets the panning for all synthesizers." msgstr "" -#: js/blocks/EnsembleBlocks.js:1130 -msgid "The Turtle-count block returns the number of turtles." +#: js/blocks/VolumeBlocks.js:625 +msgid "Warning: Sound is coming out from only the left or right side." msgstr "" -#: js/blocks/EnsembleBlocks.js:1152 -msgid "nth mouse name" +#: js/blocks/VolumeBlocks.js:647 +#: js/blocks/VolumeBlocks.js:695 +msgid "set master volume" msgstr "" -#: js/blocks/EnsembleBlocks.js:1155 -msgid "The Nth-Mouse name block returns the name of the nth mouse." +#: js/blocks/VolumeBlocks.js:653 +msgid "The Set master volume block sets the volume for all synthesizers." msgstr "" -#: js/blocks/EnsembleBlocks.js:1161 -msgid "nth turtle name" +#: js/blocks/VolumeBlocks.js:784 +msgid "The Set relative volume block changes the volume of the contained notes." msgstr "" -#: js/blocks/EnsembleBlocks.js:1164 -msgid "The Nth-Turtle name block returns the name of the nth turtle." +#: js/blocks/VolumeBlocks.js:791 +msgid "set relative volume" msgstr "" -#: js/blocks/EnsembleBlocks.js:1208 -#: js/blocks/EnsembleBlocks.js:1268 -msgid "set name" +#: js/blocks/VolumeBlocks.js:843 +msgid "The Decrescendo block will decrease the volume of the contained notes by a specified amount for every note played.\" + +" msgstr "" -#: js/blocks/EnsembleBlocks.js:1217 -#: js/blocks/EnsembleBlocks.js:1224 -msgid "source" +#: js/blocks/VolumeBlocks.js:845 +msgid "For example if you have 7 notes in sequence contained in a Decrescendo block with a value of 5 the final note will be at 35% less than the starting volume." msgstr "" -#: js/blocks/EnsembleBlocks.js:1217 -#: js/blocks/EnsembleBlocks.js:1224 -msgid "target" +#: js/blocks/VolumeBlocks.js:853 +msgid "decrescendo" msgstr "" -#: js/blocks/EnsembleBlocks.js:1274 -msgid "The Set-name block is used to name a mouse." +#: js/blocks/VolumeBlocks.js:903 +msgid "The Crescendo block will increase the volume of the contained notes by a specified amount for every note played.\" + +" msgstr "" -#: js/blocks/EnsembleBlocks.js:1287 -msgid "The Set-name block is used to name a turtle." +#: js/blocks/VolumeBlocks.js:905 +msgid "For example if you have 7 notes in sequence contained in a Crescendo block with a value of 5 the final note will be at 35% more than the starting volume." +msgstr "" + +#: js/blocks/VolumeBlocks.js:913 +msgid "crescendo" msgstr "" #: js/blocks/ExtrasBlocks.js:33 @@ -5797,1149 +6437,1164 @@ msgstr "" msgid "The Wait block pauses the program for a specified number of seconds." msgstr "" -#: js/blocks/ExtrasBlocks.js:433 +#: js/blocks/ExtrasBlocks.js:425 +msgid "The Comment block prints a comment at the top of the screen when the program is running in slow mode." +msgstr "" + +#: js/blocks/ExtrasBlocks.js:431 #: plugins/facebook.rtp:30 msgid "comment" msgstr "" -#: js/blocks/ExtrasBlocks.js:469 +#: js/blocks/ExtrasBlocks.js:467 msgid "print" msgstr "" -#: js/blocks/ExtrasBlocks.js:476 +#: js/blocks/ExtrasBlocks.js:474 msgid "The Print block displays text at the top of the screen." msgstr "" -#: js/blocks/ExtrasBlocks.js:585 +#: js/blocks/ExtrasBlocks.js:583 msgid "display grid" msgstr "" -#: js/blocks/ExtrasBlocks.js:590 +#: js/blocks/ExtrasBlocks.js:588 msgid "The Display Grid Block changes the grid type" msgstr "" -#: js/blocks/ExtrasBlocks.js:692 -#: js/blocks/ExtrasBlocks.js:711 -#: js/blocks/ExtrasBlocks.js:734 -#: js/blocks/ExtrasBlocks.js:757 -#: js/blocks/ExtrasBlocks.js:775 -#: js/blocks/ExtrasBlocks.js:794 -#: js/blocks/ExtrasBlocks.js:813 -#: js/blocks/ExtrasBlocks.js:832 +#: js/blocks/ExtrasBlocks.js:690 +#: js/blocks/ExtrasBlocks.js:709 +#: js/blocks/ExtrasBlocks.js:732 +#: js/blocks/ExtrasBlocks.js:755 +#: js/blocks/ExtrasBlocks.js:773 +#: js/blocks/ExtrasBlocks.js:792 +#: js/blocks/ExtrasBlocks.js:811 +#: js/blocks/ExtrasBlocks.js:830 msgid "unknown" msgstr "" -#: js/blocks/GraphicsBlocks.js:46 -#: js/turtleactions/DictActions.js:77 -#: js/turtleactions/DictActions.js:144 -#: js/turtleactions/DictActions.js:173 -msgid "heading" -msgstr "" - -#: js/blocks/GraphicsBlocks.js:56 -msgid "The Heading block returns the orientation of the mouse." -msgstr "" - -#: js/blocks/GraphicsBlocks.js:62 -msgid "The Heading block returns the orientation of the turtle." -msgstr "" - -#: js/blocks/GraphicsBlocks.js:133 -msgid "The Y block returns the vertical position of the mouse." -msgstr "" - -#: js/blocks/GraphicsBlocks.js:140 -msgid "The Y block returns the vertical position of the turtle." -msgstr "" - -#: js/blocks/GraphicsBlocks.js:149 -msgid "y3" -msgstr "" - -#: js/blocks/GraphicsBlocks.js:219 -msgid "The X block returns the horizontal position of the mouse." -msgstr "" - -#: js/blocks/GraphicsBlocks.js:226 -msgid "The X block returns the horizontal position of the turtle." +#: js/blocks/ExtrasBlocks.js:852 +#: js/blocks/ExtrasBlocks.js:862 +msgid "debugger" msgstr "" -#: js/blocks/GraphicsBlocks.js:235 -msgid "x3" +#: js/blocks/ExtrasBlocks.js:855 +msgid "The Debug block adds a debug point in your code. When reached, execution will pause and you can inspect variables." msgstr "" -#: js/blocks/GraphicsBlocks.js:295 -msgid "scroll xy" +#: js/blocks/PitchBlocks.js:141 +#.TRANS: musical transposition (adjustment of pitch up or down) +msgid "transposition" msgstr "" -#: js/blocks/GraphicsBlocks.js:303 -msgid "The Scroll XY block moves the canvas." +#: js/blocks/PitchBlocks.js:168 +#.TRANS: step down one note in current musical scale +msgid "scalar step down" msgstr "" -#: js/blocks/GraphicsBlocks.js:313 -msgid "x2" +#: js/blocks/PitchBlocks.js:172 +msgid "The Scalar step down block returns the number of semi-tones down to the previous note in the current key and mode." msgstr "" -#: js/blocks/GraphicsBlocks.js:313 -msgid "y2" +#: js/blocks/PitchBlocks.js:190 +#.TRANS: step up one note in current musical scale +msgid "scalar step up" msgstr "" -#: js/blocks/GraphicsBlocks.js:417 -msgid "The Control-point 2 block sets the second control point for the Bezier curve." +#: js/blocks/PitchBlocks.js:194 +msgid "The Scalar step up block returns the number of semi-tones up to the next note in the current key and mode." msgstr "" -#: js/blocks/GraphicsBlocks.js:424 -msgid "control point 2" +#: js/blocks/PitchBlocks.js:212 +#.TRANS: the change measured in half-steps between the current pitch and the previous pitch +msgid "change in pitch" msgstr "" -#: js/blocks/GraphicsBlocks.js:427 -#: js/blocks/GraphicsBlocks.js:478 -#: js/blocks/GraphicsBlocks.js:525 -#: js/blocks/GraphicsBlocks.js:741 -msgid "x1" +#: js/blocks/PitchBlocks.js:216 +msgid "The Change in pitch block is the difference (in half steps) between the current pitch being played and the previous pitch played." msgstr "" -#: js/blocks/GraphicsBlocks.js:427 -#: js/blocks/GraphicsBlocks.js:478 -#: js/blocks/GraphicsBlocks.js:525 -#: js/blocks/GraphicsBlocks.js:741 -msgid "y1" +#: js/blocks/PitchBlocks.js:243 +#.TRANS: the change measured in scale-steps between the current pitch and the previous pitch +msgid "scalar change in pitch" msgstr "" -#: js/blocks/GraphicsBlocks.js:468 -msgid "The Control-point 1 block sets the first control point for the Bezier curve." +#: js/blocks/PitchBlocks.js:250 +#: js/blocks/PitchBlocks.js:432 +#: js/blocks/PitchBlocks.js:1678 +#: js/turtleactions/DictActions.js:89 +#: js/widgets/temperament.js:582 +#: js/widgets/temperament.js:586 +#: js/widgets/temperament.js:824 +#.TRANS: convert current note to piano key (1-88) +#.TRANS: a mapping of pitch to the 88 piano keys +msgid "pitch number" msgstr "" -#: js/blocks/GraphicsBlocks.js:475 -msgid "control point 1" +#: js/blocks/PitchBlocks.js:256 +msgid "The Pitch number block is the value of the pitch of the note currently being played." msgstr "" -#: js/blocks/GraphicsBlocks.js:518 -msgid "The Bezier block draws a Bezier curve." +#: js/blocks/PitchBlocks.js:329 +#: js/blocks/PitchBlocks.js:433 +#.TRANS: the current pitch expressed in Hertz +msgid "pitch in hertz" msgstr "" -#: js/blocks/GraphicsBlocks.js:522 -msgid "bezier" +#: js/blocks/PitchBlocks.js:334 +msgid "The Pitch in Hertz block is the value in Hertz of the pitch of the note currently being played." msgstr "" -#: js/blocks/GraphicsBlocks.js:583 -msgid "The Arc block moves the turtle in an arc." +#: js/blocks/PitchBlocks.js:367 +#: js/turtleactions/DictActions.js:87 +msgid "current pitch" msgstr "" -#: js/blocks/GraphicsBlocks.js:591 -msgid "arc" +#: js/blocks/PitchBlocks.js:373 +msgid "The Current Pitch block is used with the Pitch Converter block. In the example above, current pitch, sol 4, is displayed as 392 hertz." msgstr "" -#: js/blocks/GraphicsBlocks.js:594 -msgid "angle" +#: js/blocks/PitchBlocks.js:410 +msgid "This block converts the pitch value of the last note played into different formats such as hertz, letter name, pitch number, et al." msgstr "" -#: js/blocks/GraphicsBlocks.js:594 -msgid "radius" +#: js/blocks/PitchBlocks.js:434 +msgid "alphabet" msgstr "" -#: js/blocks/GraphicsBlocks.js:611 -#: js/blocks/GraphicsBlocks.js:758 -#: js/blocks/GraphicsBlocks.js:1001 -#: js/blocks/GraphicsBlocks.js:1084 -msgid "Value must be within -5000 to 5000 when Wrap Mode is off." +#: js/blocks/PitchBlocks.js:436 +#.TRANS: Translate as "alphabet class" +msgid "letter class" msgstr "" -#: js/blocks/GraphicsBlocks.js:613 -#: js/blocks/GraphicsBlocks.js:760 -#: js/blocks/GraphicsBlocks.js:1003 -#: js/blocks/GraphicsBlocks.js:1086 -msgid "Value must be within -20000 to 20000 when Wrap Mode is on." +#: js/blocks/PitchBlocks.js:437 +msgid "solfege class" msgstr "" -#: js/blocks/GraphicsBlocks.js:651 -msgid "set heading" +#: js/blocks/PitchBlocks.js:438 +msgid "staff y" msgstr "" -#: js/blocks/GraphicsBlocks.js:664 -msgid "The Set heading block sets the heading of the turtle." +#: js/blocks/PitchBlocks.js:439 +msgid "solfege syllable" msgstr "" -#: js/blocks/GraphicsBlocks.js:724 -msgid "The Set XY block moves the mouse to a specific position on the screen." +#: js/blocks/PitchBlocks.js:440 +msgid "pitch class" msgstr "" -#: js/blocks/GraphicsBlocks.js:730 -msgid "The Set XY block moves the turtle to a specific position on the screen." +#: js/blocks/PitchBlocks.js:441 +msgid "scalar class" msgstr "" -#: js/blocks/GraphicsBlocks.js:738 -msgid "set xy" +#: js/blocks/PitchBlocks.js:443 +msgid "nth degree" msgstr "" -#: js/blocks/GraphicsBlocks.js:810 -msgid "The Right block turns the mouse to the right." +#: js/blocks/PitchBlocks.js:444 +msgid "pitch to shade" msgstr "" -#: js/blocks/GraphicsBlocks.js:817 -msgid "The Right block turns the turtle to the right." +#: js/blocks/PitchBlocks.js:445 +msgid "pitch to color" msgstr "" -#: js/blocks/GraphicsBlocks.js:826 -msgid "right1" +#: js/blocks/PitchBlocks.js:629 +#: js/widgets/musickeyboard.js:800 +#.TRANS: MIDI is a technical standard for electronic music +msgid "MIDI" msgstr "" -#: js/blocks/GraphicsBlocks.js:826 -#: plugins/rodi.rtp:77 -#: plugins/rodi.rtp:340 -#: plugins/rodi.rtp:375 -msgid "right" +#: js/blocks/PitchBlocks.js:642 +#.TRANS: set an offset associated with the numeric piano keyboard mapping +msgid "set pitch number offset" msgstr "" -#: js/blocks/GraphicsBlocks.js:890 -msgid "The Left block turns the mouse to the left." +#: js/blocks/PitchBlocks.js:645 +msgid "The Set pitch number offset block is used to set the offset for mapping pitch numbers to pitch and octave." msgstr "" -#: js/blocks/GraphicsBlocks.js:897 -msgid "The Left block turns the turtle to the left." +#: js/blocks/PitchBlocks.js:679 +#.TRANS: convert piano key number (1-88) to pitch +msgid "number to pitch" msgstr "" -#: js/blocks/GraphicsBlocks.js:906 -msgid "left1" +#: js/blocks/PitchBlocks.js:682 +msgid "The Number to pitch block will convert a pitch number to a pich name." msgstr "" -#: js/blocks/GraphicsBlocks.js:906 -#: plugins/rodi.rtp:79 -#: plugins/rodi.rtp:339 -#: plugins/rodi.rtp:362 -msgid "left" +#: js/blocks/PitchBlocks.js:715 +#.TRANS: convert piano key number (1-88) to octave +msgid "number to octave" msgstr "" -#: js/blocks/GraphicsBlocks.js:958 -#: js/widgets/temperament.js:839 -#: js/widgets/temperament.js:1033 -#: plugins/rodi.rtp:69 -#: plugins/rodi.rtp:387 -msgid "back" +#: js/blocks/PitchBlocks.js:717 +msgid "The Number to octave block will convert a pitch number to an octave." msgstr "" -#: js/blocks/GraphicsBlocks.js:967 -msgid "The Back block moves the mouse backward." +#: js/blocks/PitchBlocks.js:726 +msgid "y to pitch" msgstr "" -#: js/blocks/GraphicsBlocks.js:974 -msgid "The Back block moves the turtle backward." +#: js/blocks/PitchBlocks.js:729 +msgid "Y to pitch block will convert a staff y position to corresponding pitch notation." msgstr "" -#: js/blocks/GraphicsBlocks.js:1041 -#: plugins/rodi.rtp:71 -#: plugins/rodi.rtp:400 -msgid "forward" +#: js/blocks/PitchBlocks.js:841 +msgid "accidental selector" msgstr "" -#: js/blocks/GraphicsBlocks.js:1050 -msgid "The Forward block moves the mouse forward." +#: js/blocks/PitchBlocks.js:844 +msgid "The Accidental selector block is used to choose between double-sharp, sharp, natural, flat, and double-flat." msgstr "" -#: js/blocks/GraphicsBlocks.js:1057 -msgid "The Forward block moves the turtle forward." +#: js/blocks/PitchBlocks.js:858 +msgid "Pitch can be specified in terms of ni dha pa ma ga re sa." msgstr "" -#: js/blocks/GraphicsBlocks.js:1145 -#: js/blocks/GraphicsBlocks.js:1163 -msgid "wrap" +#: js/blocks/PitchBlocks.js:872 +msgid "Pitch can be specified in terms of C D E F G A B." msgstr "" -#: js/blocks/MediaBlocks.js:35 -#.TRANS: right side of the screen -msgid "right (screen)" +#: js/blocks/PitchBlocks.js:884 +msgid "solfege" msgstr "" -#: js/blocks/MediaBlocks.js:45 -#: js/blocks/MediaBlocks.js:56 -msgid "The Right block returns the position of the right of the canvas." +#: js/blocks/PitchBlocks.js:887 +msgid "Pitch can be specified in terms of do re mi fa sol la ti." msgstr "" -#: js/blocks/MediaBlocks.js:97 -#.TRANS: left side of the screen -msgid "left (screen)" +#: js/blocks/PitchBlocks.js:922 +msgid "The Invert block rotates any contained notes around a target note." msgstr "" -#: js/blocks/MediaBlocks.js:107 -#: js/blocks/MediaBlocks.js:118 -msgid "The Left block returns the position of the left of the canvas." +#: js/blocks/PitchBlocks.js:929 +#: js/widgets/modewidget.js:137 +#.TRANS: pitch inversion rotates a pitch around another pitch +msgid "Invert" msgstr "" -#: js/blocks/MediaBlocks.js:158 -msgid "top (screen)" +#: js/blocks/PitchBlocks.js:968 +#.TRANS: pitch inversion rotates a pitch around another pitch (odd number) +msgid "invert (odd)" msgstr "" -#: js/blocks/MediaBlocks.js:168 -#: js/blocks/MediaBlocks.js:179 -msgid "The Top block returns the position of the top of the canvas." +#: js/blocks/PitchBlocks.js:1001 +#.TRANS: pitch inversion rotates a pitch around another pitch (even number) +msgid "invert (even)" msgstr "" -#: js/blocks/MediaBlocks.js:219 -msgid "bottom (screen)" +#: js/blocks/PitchBlocks.js:1022 +#.TRANS: register is the octave of the current pitch +msgid "register" msgstr "" -#: js/blocks/MediaBlocks.js:229 -#: js/blocks/MediaBlocks.js:240 -msgid "The Bottom block returns the position of the bottom of the canvas." +#: js/blocks/PitchBlocks.js:1026 +msgid "The Register block provides an easy way to modify the register (octave) of the notes that follow it." msgstr "" -#: js/blocks/MediaBlocks.js:282 -msgid "width" +#: js/blocks/PitchBlocks.js:1047 +#.TRANS: cents are units used to specify the ratio between pitches. There are 100 cents between successive notes. +msgid "50 cents" msgstr "" -#: js/blocks/MediaBlocks.js:291 -msgid "The Width block returns the width of the canvas." +#: js/blocks/PitchBlocks.js:1102 +msgid "The Semi-tone transposition block will shift the pitches contained inside Note blocks up (or down) by half steps." msgstr "" -#: js/blocks/MediaBlocks.js:325 -msgid "height" +#: js/blocks/PitchBlocks.js:1104 +msgid "In the example shown above, sol is shifted up to sol#." msgstr "" -#: js/blocks/MediaBlocks.js:334 -msgid "The Height block returns the height of the canvas." +#: js/blocks/PitchBlocks.js:1110 +#.TRANS: adjust the amount of shift (up or down) of a pitch +msgid "semi-tone transpose" msgstr "" -#: js/blocks/MediaBlocks.js:369 -#.TRANS: stops playback of an audio recording -msgid "stop play" +#: js/blocks/PitchBlocks.js:1143 +msgid "The Transpose by Ratio block will shift the pitches contained inside Note blocks up (or down) by a ratio" msgstr "" -#: js/blocks/MediaBlocks.js:404 -#.TRANS: Erases the images and text -msgid "erase media" +#: js/blocks/PitchBlocks.js:1149 +#.TRANS: adjust the amount of shift (up or down) of a pitch +msgid "transpose by ratio" msgstr "" -#: js/blocks/MediaBlocks.js:409 -msgid "The Erase Media block erases text and images." +#: js/blocks/PitchBlocks.js:1232 +#.TRANS: down sixth means the note is five scale degrees below current note +msgid "down sixth" msgstr "" -#: js/blocks/MediaBlocks.js:439 -#.TRANS: play an audio recording -msgid "play back" +#: js/blocks/PitchBlocks.js:1251 +#.TRANS: down third means the note is two scale degrees below current note +msgid "down third" msgstr "" -#: js/blocks/MediaBlocks.js:487 -msgid "speak" +#: js/blocks/PitchBlocks.js:1270 +#.TRANS: seventh means the note is the six scale degrees above current note +msgid "seventh" msgstr "" -#: js/blocks/MediaBlocks.js:495 -msgid "The Speak block outputs to the text-to-speech synthesizer" +#: js/blocks/PitchBlocks.js:1289 +#.TRANS: sixth means the note is the five scale degrees above current note +msgid "sixth" msgstr "" -#: js/blocks/MediaBlocks.js:546 -msgid "camera" +#: js/blocks/PitchBlocks.js:1308 +#.TRANS: fifth means the note is the four scale degrees above current note +msgid "fifth" msgstr "" -#: js/blocks/MediaBlocks.js:551 -msgid "The Camera block connects a webcam to the Show block." +#: js/blocks/PitchBlocks.js:1328 +#.TRANS: fourth means the note is three scale degrees above current note +msgid "fourth" msgstr "" -#: js/blocks/MediaBlocks.js:574 -msgid "video" +#: js/blocks/PitchBlocks.js:1347 +#.TRANS: third means the note is two scale degrees above current note +msgid "third" msgstr "" -#: js/blocks/MediaBlocks.js:579 -msgid "The Video block selects video for use with the Show block." +#: js/blocks/PitchBlocks.js:1366 +#.TRANS: second means the note is one scale degree above current note +msgid "second" msgstr "" -#: js/blocks/MediaBlocks.js:607 -msgid "The Open file block opens a file for use with the Show block." +#: js/blocks/PitchBlocks.js:1407 +msgid "The Scalar transposition block will shift the pitches contained inside Note blocks up (or down) the scale." msgstr "" -#: js/blocks/MediaBlocks.js:645 -msgid "stop media" +#: js/blocks/PitchBlocks.js:1409 +msgid "In the example shown above, sol is shifted up to la." msgstr "" -#: js/blocks/MediaBlocks.js:650 -msgid "The Stop media block stops audio or video playback." +#: js/blocks/PitchBlocks.js:1416 +#.TRANS: adjust the amount of shift (up or down) of a pitch by musical scale (scalar) steps +msgid "scalar transpose" msgstr "" -#: js/blocks/MediaBlocks.js:692 -#: js/blocks/WidgetBlocks.js:182 -#: js/widgets/temperament.js:488 -#: js/widgets/temperament.js:523 -#: js/widgets/temperament.js:582 -#: js/widgets/temperament.js:590 -#: js/widgets/temperament.js:1446 -#: js/widgets/timbre.js:1834 -msgid "frequency" +#: js/blocks/PitchBlocks.js:1451 +msgid "The Accidental block is used to create sharps and flats" msgstr "" -#: js/blocks/MediaBlocks.js:692 -#: plugins/rodi.rtp:193 -msgid "duration (MS)" +#: js/blocks/PitchBlocks.js:1458 +#.TRANS: An accidental is a modification to a pitch, e.g., sharp or flat. +msgid "accidental override" msgstr "" -#: js/blocks/MediaBlocks.js:728 -#.TRANS: translate a note into hertz, e.g., A4 -> 440HZ -msgid "note to frequency" +#: js/blocks/PitchBlocks.js:1581 +msgid "The Hertz block (in combination with a Number block) will play a sound at the specified frequency." msgstr "" -#: js/blocks/MediaBlocks.js:736 -msgid "The To frequency block converts a pitch name and octave to Hertz." +#: js/blocks/PitchBlocks.js:1682 +msgid "The Pitch Number block will play a pitch associated by its number, e.g. 0 for C and 7 for G." msgstr "" -#: js/blocks/MediaBlocks.js:812 -msgid "The Avatar block is used to change the appearance of the mouse." +#: js/blocks/PitchBlocks.js:1714 +#: js/blocks/PitchBlocks.js:1756 +#.TRANS: a numeric mapping of the notes in an octave based on the musical mode +#.TRANS: a numeric mapping of the notes in an octave based on the musical mode +msgid "nth modal pitch" msgstr "" -#: js/blocks/MediaBlocks.js:819 -msgid "The Avatar block is used to change the appearance of the turtle." +#: js/blocks/PitchBlocks.js:1717 +msgid "nth Modal Pitch takes the pattern of pitches in semitones for a mode and makes each point a degree of the mode," msgstr "" -#: js/blocks/MediaBlocks.js:831 -#: js/blocks/MediaBlocks.js:891 -#.TRANS: a media object -msgid "size" +#: js/blocks/PitchBlocks.js:1719 +msgid "starting from 1 and regardless of tonal framework (i.e. not always 8 notes in the octave)" msgstr "" -#: js/blocks/MediaBlocks.js:831 -msgid "image" +#: js/blocks/PitchBlocks.js:1760 +msgid "Nth Modal Pitch takes a number as an input as the nth degree for the given mode. 0 is the first position, 1 is the second, -1 is the note before the first etc." msgstr "" -#: js/blocks/MediaBlocks.js:880 -msgid "The Show block is used to display text or images on the canvas." +#: js/blocks/PitchBlocks.js:1762 +msgid "The pitches change according to the mode specified without any need for respellings." msgstr "" -#: js/blocks/MediaBlocks.js:888 -#.TRANS: show1 is show as in display an image or text on the screen. -msgid "show1" +#: js/blocks/PitchBlocks.js:1801 +msgid "Scale Degree is a common convention in music. Scale Degree offers seven possible positions in the scale (1-7) and can be modified via accidentals." msgstr "" -#: js/blocks/MediaBlocks.js:891 -msgid "obj" +#: js/blocks/PitchBlocks.js:1803 +msgid "Scale Degree 1 is always the first pitch in a given scale, regardless of octave." msgstr "" -#: js/blocks/MediaBlocks.js:938 -msgid "The Media block is used to import an image." +#: js/blocks/PitchBlocks.js:1825 +#.TRANS: step some number of notes in current musical scale +msgid "scalar step" msgstr "" -#: js/blocks/MediaBlocks.js:973 -msgid "The Text block holds a text string." +#: js/blocks/PitchBlocks.js:1830 +msgid "The Scalar Step block (in combination with a Number block) will play the next pitch in a scale," msgstr "" -#: js/blocks/PenBlocks.js:30 -msgid "purple" +#: js/blocks/PitchBlocks.js:1832 +msgid "eg if the last note played was sol, Scalar Step 1 will play la." msgstr "" -#: js/blocks/PenBlocks.js:48 -#: js/blocks/SensorsBlocks.js:521 -#: plugins/rodi.rtp:219 -msgid "blue" +#: js/blocks/PitchBlocks.js:1868 +msgid "The Pitch block specifies the pitch name and octave of a note that together determine the frequency of the note." msgstr "" -#: js/blocks/PenBlocks.js:64 -#: js/blocks/SensorsBlocks.js:577 -#: plugins/rodi.rtp:218 -msgid "green" +#: js/blocks/RhythmBlockPaletteBlocks.js:50 +#: js/blocks/RhythmBlockPaletteBlocks.js:238 +#.TRANS: rhythm block +#.TRANS: translate "rhythm1" as rhythm +msgid "rhythm1" msgstr "" -#: js/blocks/PenBlocks.js:80 -msgid "yellow" +#: js/blocks/RhythmBlockPaletteBlocks.js:70 +#: js/blocks/RhythmBlockPaletteBlocks.js:257 +#: js/blocks/RhythmBlockPaletteBlocks.js:522 +#: js/blocks/RhythmBlockPaletteBlocks.js:591 +#: js/blocks/RhythmBlockPaletteBlocks.js:908 +msgid "number of notes" msgstr "" -#: js/blocks/PenBlocks.js:96 -#: plugins/nutrition.rtp:164 -msgid "orange" +#: js/blocks/RhythmBlockPaletteBlocks.js:131 +msgid "polyphonic rhythm" msgstr "" -#: js/blocks/PenBlocks.js:112 -#: js/blocks/SensorsBlocks.js:633 -#: plugins/rodi.rtp:217 -msgid "red" +#: js/blocks/RhythmBlockPaletteBlocks.js:224 +msgid "The Rhythm block is used to generate rhythm patterns." msgstr "" -#: js/blocks/PenBlocks.js:128 -msgid "white" +#: js/blocks/RhythmBlockPaletteBlocks.js:286 +#: js/blocks/RhythmBlockPaletteBlocks.js:291 +msgid "1/64 note" msgstr "" -#: js/blocks/PenBlocks.js:144 -msgid "black" +#: js/blocks/RhythmBlockPaletteBlocks.js:317 +#: js/blocks/RhythmBlockPaletteBlocks.js:322 +msgid "1/32 note" msgstr "" -#: js/blocks/PenBlocks.js:163 -msgid "begin fill" +#: js/blocks/RhythmBlockPaletteBlocks.js:351 +#: js/blocks/RhythmBlockPaletteBlocks.js:356 +msgid "1/16 note" msgstr "" -#: js/blocks/PenBlocks.js:188 -msgid "end fill" +#: js/blocks/RhythmBlockPaletteBlocks.js:385 +msgid "eighth note" msgstr "" -#: js/blocks/PenBlocks.js:208 -#: js/blocks/PenBlocks.js:537 -#.TRANS: set the background color -msgid "background" +#: js/blocks/RhythmBlockPaletteBlocks.js:413 +msgid "quarter note" msgstr "" -#: js/blocks/PenBlocks.js:253 -#: js/turtleactions/DictActions.js:71 -#: js/turtleactions/DictActions.js:138 -#: js/turtleactions/DictActions.js:170 -msgid "grey" +#: js/blocks/RhythmBlockPaletteBlocks.js:441 +#: js/blocks/RhythmBlockPaletteBlocks.js:446 +msgid "half note" msgstr "" -#: js/blocks/PenBlocks.js:261 -msgid "The Grey block returns the current pen grey value." +#: js/blocks/RhythmBlockPaletteBlocks.js:475 +#: js/blocks/RhythmBlockPaletteBlocks.js:480 +msgid "whole note" msgstr "" -#: js/blocks/PenBlocks.js:319 -#: js/turtleactions/DictActions.js:69 -#: js/turtleactions/DictActions.js:136 -#: js/turtleactions/DictActions.js:169 -msgid "shade" +#: js/blocks/RhythmBlockPaletteBlocks.js:519 +#: js/blocks/RhythmBlockPaletteBlocks.js:588 +#: js/blocks/RhythmBlockPaletteBlocks.js:637 +#.TRANS: A tuplet is a note value divided into irregular time values. +msgid "tuplet" msgstr "" -#: js/blocks/PenBlocks.js:326 -msgid "The Shade block returns the current pen shade value." +#: js/blocks/RhythmBlockPaletteBlocks.js:628 +msgid "The Tuplet block is used to generate a group of notes played in a condensed amount of time." msgstr "" -#: js/blocks/PenBlocks.js:384 -#: js/turtleactions/DictActions.js:67 -#: js/turtleactions/DictActions.js:134 -#: js/turtleactions/DictActions.js:168 -msgid "color" +#: js/blocks/RhythmBlockPaletteBlocks.js:803 +msgid "septuplet" msgstr "" -#: js/blocks/PenBlocks.js:394 -msgid "The Color block returns the current pen color." +#: js/blocks/RhythmBlockPaletteBlocks.js:831 +msgid "quintuplet" msgstr "" -#: js/blocks/PenBlocks.js:449 -#: js/turtleactions/DictActions.js:73 -#: js/turtleactions/DictActions.js:140 -#: js/turtleactions/DictActions.js:171 -msgid "pen size" +#: js/blocks/RhythmBlockPaletteBlocks.js:859 +msgid "triplet" msgstr "" -#: js/blocks/PenBlocks.js:453 -msgid "The Pen size block returns the current pen size value." +#: js/blocks/RhythmBlockPaletteBlocks.js:886 +msgid "simple tuplet" msgstr "" -#: js/blocks/PenBlocks.js:492 -msgid "set font" +#: js/blocks/RhythmBlockPaletteBlocks.js:896 +msgid "Tuplets are a collection of notes that get scaled to a specific duration." msgstr "" -#: js/blocks/PenBlocks.js:497 -msgid "The Set font block sets the font used by the Show block." +#: js/blocks/RhythmBlockPaletteBlocks.js:898 +msgid "Using tuplets makes it easy to create groups of notes that are not based on a power of 2." msgstr "" -#: js/blocks/PenBlocks.js:544 -msgid "The Background block sets the window background color." +#: js/blocks/WidgetBlocks.js:86 +#: js/widgets/timbre.js:837 +#.TRANS: sound envelope (ADSR) +msgid "Envelope" msgstr "" -#: js/blocks/PenBlocks.js:575 -msgid "The Hollow line block creates a line with a hollow center." +#: js/blocks/WidgetBlocks.js:94 +#.TRANS: Attack time is the time taken for initial run-up of level from nil to peak, beginning when the key is first pressed. +msgid "attack" msgstr "" -#: js/blocks/PenBlocks.js:583 -#.TRANS: draw a line logo has a hollow space down its center -msgid "hollow line" +#: js/blocks/WidgetBlocks.js:96 +#.TRANS: Decay time is the time taken for the subsequent run down from the attack level to the designated sustain level. +msgid "decay" msgstr "" -#: js/blocks/PenBlocks.js:652 -msgid "The Fill block fills in a shape with a color." +#: js/blocks/WidgetBlocks.js:98 +#.TRANS: Sustain level is the level during the main sequence of the sound's duration, until the key is released. +msgid "sustain" msgstr "" -#: js/blocks/PenBlocks.js:661 -#.TRANS: fill in as a solid color -msgid "fill" +#: js/blocks/WidgetBlocks.js:100 +#.TRANS: Release time is the time taken for the level to decay from the sustain level to zero after the key is released. +msgid "release" msgstr "" -#: js/blocks/PenBlocks.js:738 -#.TRANS: raise up the pen so logo it does not draw when it is moved -msgid "pen up" +#: js/blocks/WidgetBlocks.js:118 +msgid "Attack value should be from 0 to 100." msgstr "" -#: js/blocks/PenBlocks.js:745 -msgid "The Pen-up block raises the pen so that it does not draw." +#: js/blocks/WidgetBlocks.js:121 +msgid "Decay value should be from 0 to 100." msgstr "" -#: js/blocks/PenBlocks.js:779 -#.TRANS: put down the pen so logo it draws when it is moved -msgid "pen down" +#: js/blocks/WidgetBlocks.js:124 +msgid "Sustain value should be from 0 to 100." msgstr "" -#: js/blocks/PenBlocks.js:787 -msgid "The Pen-down block lowers the pen so that it draws." +#: js/blocks/WidgetBlocks.js:127 +msgid "Release value should be from 0-100." msgstr "" -#: js/blocks/PenBlocks.js:821 -#.TRANS: set the width of the line drawn by the pen -msgid "set pen size" +#: js/blocks/WidgetBlocks.js:145 +msgid "You are adding multiple envelope blocks." msgstr "" -#: js/blocks/PenBlocks.js:831 -msgid "The Set-pen-size block changes the size of the pen." +#: js/blocks/WidgetBlocks.js:176 +#: js/widgets/timbre.js:901 +#.TRANS: a filter removes some unwanted components from a signal +msgid "Filter" msgstr "" -#: js/blocks/PenBlocks.js:890 -#.TRANS: set degree of translucence of the pen color -msgid "set translucency" +#: js/blocks/WidgetBlocks.js:186 +#: js/widgets/timbre.js:1813 +#.TRANS: rolloff is the steepness of a change in frequency. +msgid "rolloff" msgstr "" -#: js/blocks/PenBlocks.js:898 -msgid "The Set translucency block changes the opacity of the pen." +#: js/blocks/WidgetBlocks.js:218 +#.TRANS: rolloff is the steepness of a change in frequency. +msgid "Rolloff value should be either -12, -24, -48, or -96 decibels/octave." msgstr "" -#: js/blocks/PenBlocks.js:958 -msgid "set hue" +#: js/blocks/WidgetBlocks.js:257 +msgid "The Temperament tool is used to define custom tuning." msgstr "" -#: js/blocks/PenBlocks.js:966 -msgid "The Set hue block changes the color of the pen." +#: js/blocks/WidgetBlocks.js:337 +#: js/blocks/WidgetBlocks.js:1600 +#: js/widgets/sampler.js:1040 +msgid "Upload a sample and adjust its pitch center." msgstr "" -#: js/blocks/PenBlocks.js:1024 -msgid "set shade" +#: js/blocks/WidgetBlocks.js:344 +#.TRANS: the speed at music is should be played. +msgid "sampler" msgstr "" -#: js/blocks/PenBlocks.js:1034 -msgid "The Set-shade block changes the pen color from dark to light." +#: js/blocks/WidgetBlocks.js:522 +msgid "The Meter block opens a tool to select strong beats for the meter." msgstr "" -#: js/blocks/PenBlocks.js:1088 -#.TRANS: set the level of vividness of the pen color -msgid "set grey" +#: js/blocks/WidgetBlocks.js:578 +msgid "The oscilloscope block opens a tool to visualize waveforms." msgstr "" -#: js/blocks/PenBlocks.js:1096 -msgid "The Set grey block changes the vividness of the pen color." +#: js/blocks/WidgetBlocks.js:583 +msgid "oscilloscope" msgstr "" -#: js/blocks/PenBlocks.js:1149 -msgid "set color" +#: js/blocks/WidgetBlocks.js:650 +msgid "The Custom mode block opens a tool to explore musical mode (the spacing of the notes in a scale)." msgstr "" -#: js/blocks/PenBlocks.js:1159 -msgid "The Set-color block changes the pen color." +#: js/blocks/WidgetBlocks.js:656 +#.TRANS: musical mode is the pattern of half-steps in an octave, e.g., Major or Minor modes +msgid "custom mode" msgstr "" -#: js/blocks/SensorsBlocks.js:36 -msgid "The Input block prompts for keyboard input." +#: js/blocks/WidgetBlocks.js:705 +msgid "The Tempo block opens a metronome to visualize the beat." msgstr "" -#: js/blocks/SensorsBlocks.js:46 -msgid "input" +#: js/blocks/WidgetBlocks.js:767 +msgid "The Arpeggio Widget is used to compose chord sequences." msgstr "" -#: js/blocks/SensorsBlocks.js:64 -msgid "Input a value" +#: js/blocks/WidgetBlocks.js:842 +msgid "The Pitch drum matrix is used to map pitches to drum sounds." msgstr "" -#: js/blocks/SensorsBlocks.js:126 -msgid "input value" +#: js/blocks/WidgetBlocks.js:847 +#.TRANS: makes a mapping between pitches and drum sounds +msgid "pitch-drum mapper" msgstr "" -#: js/blocks/SensorsBlocks.js:131 -msgid "The Input-value block stores the input." +#: js/blocks/WidgetBlocks.js:896 +msgid "You must have at least one pitch block and one drum block in the matrix." msgstr "" -#: js/blocks/SensorsBlocks.js:238 -msgid "loudness" +#: js/blocks/WidgetBlocks.js:925 +msgid "The Pitch slider tool to is used to generate pitches at selected frequencies." msgstr "" -#: js/blocks/SensorsBlocks.js:245 -msgid "The Loudness block returns the volume detected by the microphone." +#: js/blocks/WidgetBlocks.js:930 +#.TRANS: widget to generate pitches using a slider +msgid "pitch slider" msgstr "" -#: js/blocks/SensorsBlocks.js:300 -msgid "click" +#: js/blocks/WidgetBlocks.js:982 +msgid "chromatic keyboard" msgstr "" -#: js/blocks/SensorsBlocks.js:306 -msgid "The Click block triggers an event if a mouse has been clicked." +#: js/blocks/WidgetBlocks.js:1016 +#: js/blocks/WidgetBlocks.js:1082 +#.TRANS: widget to generate pitches using a slider +msgid "music keyboard" msgstr "" -#: js/blocks/SensorsBlocks.js:313 -msgid "The Click block triggers an event if a turtle has been clicked." +#: js/blocks/WidgetBlocks.js:1067 +#: js/blocks/WidgetBlocks.js:1074 +msgid "The Music keyboard block opens a piano keyboard that can be used to create notes." msgstr "" -#: js/blocks/SensorsBlocks.js:342 -msgid "cursor over" +#: js/blocks/WidgetBlocks.js:1133 +msgid "The Pitch staircase tool to is used to generate pitches from a given ratio." msgstr "" -#: js/blocks/SensorsBlocks.js:387 -msgid "cursor out" +#: js/blocks/WidgetBlocks.js:1140 +#.TRANS: generate a progressive sequence of pitches +msgid "pitch staircase" msgstr "" -#: js/blocks/SensorsBlocks.js:433 -msgid "cursor button down" +#: js/blocks/WidgetBlocks.js:1227 +msgid "The Rhythm Maker block opens a tool to create drum machines." msgstr "" -#: js/blocks/SensorsBlocks.js:477 -msgid "cursor button up" +#: js/blocks/WidgetBlocks.js:1296 +msgid "G major scale" msgstr "" -#: js/blocks/SensorsBlocks.js:638 -msgid "The Get red block returns the red component of the pixel under the mouse." +#: js/blocks/WidgetBlocks.js:1331 +msgid "C major scale" msgstr "" -#: js/blocks/SensorsBlocks.js:644 -msgid "The Get red block returns the red component of the pixel under the turtle." +#: js/blocks/WidgetBlocks.js:1371 +msgid "The Phrase Maker block opens a tool to create musical phrases." msgstr "" -#: js/blocks/SensorsBlocks.js:685 -#: plugins/rodi.rtp:216 -msgid "pixel color" +#: js/blocks/WidgetBlocks.js:1378 +#.TRANS: assigns pitch to a sequence of beats to generate a melody +msgid "phrase maker" msgstr "" -#: js/blocks/SensorsBlocks.js:690 -msgid "The Get pixel block returns the color of the pixel under the mouse." +#: js/blocks/WidgetBlocks.js:1438 +msgid "lyrics" msgstr "" -#: js/blocks/SensorsBlocks.js:696 -msgid "The Get pixel block returns the color of the pixel under the turtle." +#: js/blocks/WidgetBlocks.js:1487 +msgid "You must have at least one pitch block and one rhythm block in the matrix." msgstr "" -#: js/blocks/SensorsBlocks.js:759 -msgid "time" +#: js/blocks/WidgetBlocks.js:1546 +msgid "The Status block opens a tool for inspecting the status of Music Blocks as it is running." msgstr "" -#: js/blocks/SensorsBlocks.js:805 -msgid "cursor y" +#: js/blocks/WidgetBlocks.js:1607 +#: js/widgets/aiwidget.js:699 +#.TRANS: AI-generated music +msgid "AI Music" msgstr "" -#: js/blocks/SensorsBlocks.js:810 -msgid "The Cursor Y block returns the vertical position of the mouse." +#: js/blocks/WidgetBlocks.js:1655 +msgid "The Reflection block opens a space for you to think about your learning." msgstr "" -#: js/blocks/SensorsBlocks.js:846 -msgid "cursor x" +#: js/blocks/WidgetBlocks.js:1660 +msgid "reflection" msgstr "" -#: js/blocks/SensorsBlocks.js:851 -msgid "The Cursor X block returns the horizontal position of the mouse." +#: js/blocks/WidgetBlocks.js:1712 +msgid "The LEGO Bricks block opens a widget for designing virtual LEGO creations." msgstr "" -#: js/blocks/SensorsBlocks.js:887 -msgid "mouse button" +#: js/blocks/WidgetBlocks.js:1719 +#.TRANS: LEGO bricks designer +msgid "LEGO Bricks" msgstr "" -#: js/blocks/SensorsBlocks.js:889 -msgid "The Mouse-button block returns True if the mouse button is pressed." +#: js/blocks/WidgetBlocks.js:1769 +msgid "You must have at least one pitch block in the LEGO bricks widget." msgstr "" -#: js/blocks/SensorsBlocks.js:935 -msgid "to ASCII" +#: js/blocks/WidgetBlocks.js:1794 +msgid "Debug your music blocks project with new possibilities and more understanding." msgstr "" -#: js/blocks/SensorsBlocks.js:939 -msgid "The To ASCII block converts numbers to letters." +#: js/blocks/WidgetBlocks.js:1800 +msgid "Debugger" msgstr "" -#: js/blocks/SensorsBlocks.js:1006 -msgid "The Keyboard block returns computer keyboard input." +#: js/turtleactions/DictActions.js:75 +#: js/turtleactions/DictActions.js:142 +#: js/turtleactions/DictActions.js:172 +msgid "font" msgstr "" -#: js/blocks/VolumeBlocks.js:35 -msgid "synth volume" +#: js/turtleactions/DictActions.js:255 +msgid "Dictionary with this name does not exist" msgstr "" -#: js/blocks/VolumeBlocks.js:39 -msgid "The Synth volume block returns the current volume of the current synthesizer." +#: js/turtleactions/DictActions.js:259 +msgid "Key with this name does not exist in " msgstr "" -#: js/blocks/VolumeBlocks.js:105 -msgid "master volume" +#: js/turtleactions/DrumActions.js:227 +msgid "Noise Block: Did you mean to use a Note block?" msgstr "" -#: js/blocks/VolumeBlocks.js:109 -msgid "The Master volume block returns the master volume." +#: js/turtleactions/IntervalsActions.js:113 +msgid "one" msgstr "" -#: js/blocks/VolumeBlocks.js:355 -#: js/blocks/VolumeBlocks.js:524 -msgid "set synth volume" +#: js/turtleactions/IntervalsActions.js:113 +msgid "two" msgstr "" -#: js/blocks/VolumeBlocks.js:362 -#: js/blocks/VolumeBlocks.js:545 -msgid "synth" +#: js/turtleactions/IntervalsActions.js:113 +msgid "three" msgstr "" -#: js/blocks/VolumeBlocks.js:403 -#: js/blocks/VolumeBlocks.js:577 -#: js/blocks/VolumeBlocks.js:740 -#: js/turtleactions/VolumeActions.js:173 -msgid "Setting volume to 0." +#: js/turtleactions/IntervalsActions.js:113 +msgid "four" msgstr "" -#: js/blocks/VolumeBlocks.js:440 -msgid "Synth not found" +#: js/turtleactions/IntervalsActions.js:113 +msgid "five" msgstr "" -#: js/blocks/VolumeBlocks.js:494 -msgid "set drum volume" +#: js/turtleactions/IntervalsActions.js:113 +msgid "six" msgstr "" -#: js/blocks/VolumeBlocks.js:530 -msgid "The Set synth volume block will change the volume of a particular synth," +#: js/turtleactions/IntervalsActions.js:113 +msgid "seven" msgstr "" -#: js/blocks/VolumeBlocks.js:532 -msgid "eg guitar violin snare drum etc." +#: js/turtleactions/IntervalsActions.js:113 +msgid "eight" msgstr "" -#: js/blocks/VolumeBlocks.js:534 -msgid "The default volume is 50." +#: js/turtleactions/IntervalsActions.js:113 +msgid "nine" msgstr "" -#: js/blocks/VolumeBlocks.js:536 -msgid "The range is 0 for silence to 100 for full volume." +#: js/turtleactions/IntervalsActions.js:120 +#: js/turtleactions/IntervalsActions.js:140 +msgid "below" msgstr "" -#: js/blocks/VolumeBlocks.js:597 -msgid "set panning" +#: js/turtleactions/IntervalsActions.js:124 +msgid "above" msgstr "" -#: js/blocks/VolumeBlocks.js:603 -msgid "The Set Panning block sets the panning for all synthesizers." +#: js/turtleactions/IntervalsActions.js:131 +msgid "plus" msgstr "" -#: js/blocks/VolumeBlocks.js:625 -msgid "Warning: Sound is coming out from only the left or right side." +#: js/turtleactions/IntervalsActions.js:258 +msgid "Adding missing pitch number 0." msgstr "" -#: js/blocks/VolumeBlocks.js:647 -#: js/blocks/VolumeBlocks.js:695 -msgid "set master volume" +#: js/turtleactions/IntervalsActions.js:266 +msgid "Ignoring pitch numbers less than zero or greater than eleven." msgstr "" -#: js/blocks/VolumeBlocks.js:653 -msgid "The Set master volume block sets the volume for all synthesizers." +#: js/turtleactions/IntervalsActions.js:272 +msgid "Ignoring duplicate pitch numbers." msgstr "" -#: js/blocks/VolumeBlocks.js:784 -msgid "The Set relative volume block changes the volume of the contained notes." +#: js/turtleactions/MeterActions.js:101 +#: js/turtleactions/MeterActions.js:139 +msgid "beats per minute must be greater than" msgstr "" -#: js/blocks/VolumeBlocks.js:791 -msgid "set relative volume" +#: js/turtleactions/MeterActions.js:111 +#: js/turtleactions/MeterActions.js:149 +msgid "maximum" msgstr "" -#: js/blocks/VolumeBlocks.js:857 -msgid "decrescendo" +#: js/turtleactions/MeterActions.js:117 +#: js/turtleactions/MeterActions.js:155 +msgid "beats per minute is" msgstr "" -#: js/blocks/VolumeBlocks.js:921 -msgid "crescendo" +#: js/turtleactions/ToneActions.js:134 +msgid "Vibrato intensity must be between 1 and 100." msgstr "" -#: js/blocks/WidgetBlocks.js:81 -#: js/widgets/timbre.js:834 -#.TRANS: sound envelope (ADSR) -msgid "Envelope" +#: js/turtleactions/ToneActions.js:139 +msgid "Vibrato rate must be greater than 0." msgstr "" -#: js/blocks/WidgetBlocks.js:89 -#.TRANS: Attack time is the time taken for initial run-up of level from nil to peak, beginning when the key is first pressed. -msgid "attack" +#: js/turtleactions/ToneActions.js:192 +#: js/turtleactions/ToneActions.js:265 +#.TRANS: Depth is the intesity of the tremolo or chorus effect. +msgid "Depth is out of range." msgstr "" -#: js/blocks/WidgetBlocks.js:91 -#.TRANS: Decay time is the time taken for the subsequent run down from the attack level to the designated sustain level. -msgid "decay" +#: js/turtleactions/ToneActions.js:301 +msgid "Distortion must be from 0 to 100." msgstr "" -#: js/blocks/WidgetBlocks.js:93 -#.TRANS: Sustain level is the level during the main sequence of the sound's duration, until the key is released. -msgid "sustain" +#: js/turtleactions/ToneActions.js:332 +#.TRANS: partials components in a harmonic series +msgid "Partial must be greater than or equal to 0." msgstr "" -#: js/blocks/WidgetBlocks.js:95 -#.TRANS: Release time is the time taken for the level to decay from the sustain level to zero after the key is released. -msgid "release" +#: js/turtleactions/ToneActions.js:378 +#: js/turtleactions/ToneActions.js:417 +#: js/turtleactions/ToneActions.js:456 +#: js/widgets/timbre.js:779 +msgid "Unable to use synth due to existing oscillator" msgstr "" -#: js/blocks/WidgetBlocks.js:113 -msgid "Attack value should be from 0 to 100." +#: js/turtleactions/ToneActions.js:388 +#: js/turtleactions/ToneActions.js:427 +msgid "The input cannot be negative." msgstr "" -#: js/blocks/WidgetBlocks.js:116 -msgid "Decay value should be from 0 to 100." +#: js/widgets/aiwidget.js:135 +#: js/widgets/aiwidget.js:136 +#: js/widgets/rhythmruler.js:679 +#: js/widgets/rhythmruler.js:680 +#: js/widgets/rhythmruler.js:1856 +#: js/widgets/rhythmruler.js:1857 +#: js/widgets/tempo.js:78 +#: js/widgets/tempo.js:97 +#: js/widgets/tempo.js:98 +#: js/widgets/sampler.js:215 +#: js/widgets/sampler.js:216 +msgid "Pause" msgstr "" -#: js/blocks/WidgetBlocks.js:119 -msgid "Sustain value should be from 0 to 100." +#: js/widgets/aiwidget.js:179 +#: js/widgets/sampler.js:260 +msgid "Warning: Sample is bigger than 1MB." msgstr "" -#: js/blocks/WidgetBlocks.js:122 -msgid "Release value should be from 0-100." +#: js/widgets/aiwidget.js:538 +msgid "New start block generated" msgstr "" -#: js/blocks/WidgetBlocks.js:140 -msgid "You are adding multiple envelope blocks." +#: js/widgets/aiwidget.js:540 +msgid "MIDI loading. This may take some time depending upon the number of notes in the track" msgstr "" -#: js/blocks/WidgetBlocks.js:171 -#: js/widgets/timbre.js:898 -#.TRANS: a filter removes some unwanted components from a signal -msgid "Filter" +#: js/widgets/aiwidget.js:550 +#: js/widgets/sampler.js:287 +msgid "Upload failed: Sample is not a .wav file." msgstr "" -#: js/blocks/WidgetBlocks.js:181 -#: js/widgets/timbre.js:1810 -#.TRANS: rolloff is the steepness of a change in frequency. -msgid "rolloff" +#: js/widgets/aiwidget.js:677 +#: js/widgets/sampler.js:542 +msgid "Save sample" msgstr "" -#: js/blocks/WidgetBlocks.js:213 -#.TRANS: rolloff is the steepness of a change in frequency. -msgid "Rolloff value should be either -12, -24, -48, or -96 decibels/octave." +#: js/widgets/arpeggio.js:241 +msgid "Click in the grid to add steps to the arpeggio." msgstr "" -#: js/blocks/WidgetBlocks.js:252 -msgid "The Temperament tool is used to define custom tuning." +#: js/widgets/jseditor.js:352 +msgid "Reset Code" msgstr "" -#: js/blocks/WidgetBlocks.js:332 -#: js/blocks/WidgetBlocks.js:1574 -#: js/widgets/sampler.js:517 -msgid "Upload a sample and adjust its pitch center." +#: js/widgets/jseditor.js:380 +msgid "Convert JavaScript to Blocks" msgstr "" -#: js/blocks/WidgetBlocks.js:339 -#.TRANS: the speed at music is should be played. -msgid "sampler" +#: js/widgets/jseditor.js:514 +msgid "Toggle Console" msgstr "" -#: js/blocks/WidgetBlocks.js:517 -msgid "The Meter block opens a tool to select strong beats for the meter." +#: js/widgets/meterwidget.js:195 +#: js/widgets/meterwidget.js:196 +#: js/widgets/modewidget.js:87 +#: js/widgets/modewidget.js:88 +#: js/widgets/modewidget.js:639 +#: js/widgets/modewidget.js:640 +#: js/widgets/modewidget.js:708 +#: js/widgets/modewidget.js:709 +#: js/widgets/rhythmruler.js:457 +#: js/widgets/rhythmruler.js:1784 +#: js/widgets/rhythmruler.js:1785 +#: js/widgets/rhythmruler.js:1809 +#: js/widgets/rhythmruler.js:1810 +#: js/widgets/temperament.js:2194 +msgid "Play all" msgstr "" -#: js/blocks/WidgetBlocks.js:573 -msgid "The oscilloscope block opens a tool to visualize waveforms." +#: js/widgets/meterwidget.js:269 +#: js/widgets/sampler.js:983 +msgid "Reset" msgstr "" -#: js/blocks/WidgetBlocks.js:578 -msgid "oscilloscope" +#: js/widgets/meterwidget.js:295 +msgid "Click in the circle to select strong beats for the meter." msgstr "" -#: js/blocks/WidgetBlocks.js:645 -msgid "The Custom mode block opens a tool to explore musical mode (the spacing of the notes in a scale)." +#: js/widgets/modewidget.js:125 +msgid "Rotate counter clockwise" msgstr "" -#: js/blocks/WidgetBlocks.js:651 -#.TRANS: musical mode is the pattern of half-steps in an octave, e.g., Major or Minor modes -msgid "custom mode" +#: js/widgets/modewidget.js:131 +msgid "Rotate clockwise" msgstr "" -#: js/blocks/WidgetBlocks.js:700 -msgid "The Tempo block opens a metronome to visualize the beat." +#: js/widgets/modewidget.js:143 +#: js/widgets/pitchstaircase.js:676 +#: js/widgets/rhythmruler.js:578 +#: js/widgets/timbre.js:960 +msgid "Undo" msgstr "" -#: js/blocks/WidgetBlocks.js:762 -msgid "The Arpeggio Widget is used to compose chord sequences." +#: js/widgets/modewidget.js:161 +#.TRANS: A circle of notes represents the musical mode. +msgid "Click in the circle to select notes for the mode." msgstr "" -#: js/blocks/WidgetBlocks.js:837 -msgid "The Pitch drum matrix is used to map pitches to drum sounds." +#: js/widgets/modewidget.js:1011 +#: js/widgets/musickeyboard.js:3309 +#: js/widgets/pitchstaircase.js:578 +#: js/widgets/rhythmruler.js:2244 +#: js/widgets/rhythmruler.js:2462 +#: js/widgets/temperament.js:1862 +#: js/widgets/tempo.js:412 +#: js/widgets/phrasemaker.js:5478 +msgid "New action block generated." msgstr "" -#: js/blocks/WidgetBlocks.js:842 -#.TRANS: makes a mapping between pitches and drum sounds -msgid "pitch-drum mapper" +#: js/widgets/musickeyboard.js:790 +#: js/widgets/phrasemaker.js:595 +msgid "Add note" msgstr "" -#: js/blocks/WidgetBlocks.js:891 -msgid "You must have at least one pitch block and one drum block in the matrix." +#: js/widgets/musickeyboard.js:809 +msgid "Metronome" msgstr "" -#: js/blocks/WidgetBlocks.js:920 -msgid "The Pitch slider tool to is used to generate pitches at selected frequencies." +#: js/widgets/musickeyboard.js:1673 +msgid "Note value" msgstr "" -#: js/blocks/WidgetBlocks.js:925 -#.TRANS: widget to generate pitches using a slider -msgid "pitch slider" +#: js/widgets/musickeyboard.js:3308 +msgid "New action blocks generated." msgstr "" -#: js/blocks/WidgetBlocks.js:977 -msgid "chromatic keyboard" +#: js/widgets/musickeyboard.js:3492 +#: js/widgets/musickeyboard.js:3500 +msgid "MIDI device present." msgstr "" -#: js/blocks/WidgetBlocks.js:1011 -#: js/blocks/WidgetBlocks.js:1077 -#.TRANS: widget to generate pitches using a slider -msgid "music keyboard" +#: js/widgets/musickeyboard.js:3503 +msgid "No MIDI device found." msgstr "" -#: js/blocks/WidgetBlocks.js:1062 -#: js/blocks/WidgetBlocks.js:1069 -msgid "The Music keyboard block opens a piano keyboard that can be used to create notes." +#: js/widgets/musickeyboard.js:3513 +msgid "Failed to get MIDI access in browser." msgstr "" -#: js/blocks/WidgetBlocks.js:1128 -msgid "The Pitch staircase tool to is used to generate pitches from a given ratio." +#: js/widgets/oscilloscope.js:79 +msgid "Zoom In" msgstr "" -#: js/blocks/WidgetBlocks.js:1135 -#.TRANS: generate a progressive sequence of pitches -msgid "pitch staircase" +#: js/widgets/oscilloscope.js:88 +msgid "Zoom Out" msgstr "" -#: js/blocks/WidgetBlocks.js:1222 -msgid "The Rhythm Maker block opens a tool to create drum machines." +#: js/widgets/pitchdrummatrix.js:356 +#: js/widgets/pitchdrummatrix.js:741 +msgid "Click in the grid to map notes to drums." msgstr "" -#: js/blocks/WidgetBlocks.js:1291 -msgid "G major scale" +#: js/widgets/pitchslider.js:155 +msgid "Move up" msgstr "" -#: js/blocks/WidgetBlocks.js:1326 -msgid "C major scale" +#: js/widgets/pitchslider.js:166 +msgid "Move down" msgstr "" -#: js/blocks/WidgetBlocks.js:1366 -msgid "The Phrase Maker block opens a tool to create musical phrases." +#: js/widgets/pitchslider.js:188 +msgid "Use the up/down buttons or arrow keys to change pitch." msgstr "" -#: js/blocks/WidgetBlocks.js:1373 -#.TRANS: assigns pitch to a sequence of beats to generate a melody -msgid "phrase maker" +#: js/widgets/pitchslider.js:189 +msgid "Click on the slider to create a note block." msgstr "" -#: js/blocks/WidgetBlocks.js:1445 -msgid "You must have at least one pitch block and one rhythm block in the matrix." +#: js/widgets/pitchstaircase.js:622 +msgid "Play chord" msgstr "" -#: js/blocks/WidgetBlocks.js:1504 -msgid "The Status block opens a tool for inspecting the status of Music Blocks as it is running." +#: js/widgets/pitchstaircase.js:630 +msgid "Play scale" msgstr "" -#: js/blocks/WidgetBlocks.js:1581 -#: js/widgets/aiwidget.js:699 -#.TRANS: AI-generated music -msgid "AI Music" +#: js/widgets/pitchstaircase.js:694 +msgid "Click on a note to create a new step." msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "one" +#: js/widgets/rhythmruler.js:486 +msgid "Save rhythms" msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "two" +#: js/widgets/rhythmruler.js:512 +msgid "Save drum machine" msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "three" +#: js/widgets/rhythmruler.js:589 +#.TRANS: user can tap out a rhythm by clicking on a ruler. +msgid "Tap a rhythm" msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "four" +#: js/widgets/rhythmruler.js:813 +msgid "Click on the ruler to divide it." msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "five" +#: js/widgets/rhythmruler.js:947 +#: js/widgets/rhythmruler.js:948 +#: js/widgets/rhythmruler.js:1148 +#: js/widgets/rhythmruler.js:1149 +#: js/widgets/rhythmruler.js:1760 +#: js/widgets/rhythmruler.js:1761 +msgid "tap a rhythm" msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "six" +#: js/widgets/rhythmruler.js:1453 +msgid "Maximum value of 256 has been exceeded." msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "seven" +#: js/widgets/temperament.js:319 +msgid "back to 2:1 octave space" msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "eight" +#: js/widgets/temperament.js:445 +msgid "edit" msgstr "" -#: js/turtleactions/IntervalsActions.js:113 -msgid "nine" +#: js/widgets/temperament.js:525 +#: js/widgets/temperament.js:840 +#: js/widgets/temperament.js:844 +#: js/widgets/temperament.js:945 +#: js/widgets/temperament.js:1034 +#: js/widgets/temperament.js:1038 +#: js/widgets/temperament.js:1110 +#: js/widgets/temperament.js:1379 +#: js/widgets/temperament.js:1448 +#: js/widgets/temperament.js:1529 +msgid "done" msgstr "" -#: js/turtleactions/IntervalsActions.js:120 -#: js/turtleactions/IntervalsActions.js:140 -msgid "below" +#: js/widgets/temperament.js:582 +#: js/widgets/temperament.js:587 +#: js/widgets/temperament.js:1021 +msgid "ratio" msgstr "" -#: js/turtleactions/IntervalsActions.js:124 -msgid "above" +#: js/widgets/temperament.js:588 +msgid "interval" msgstr "" -#: js/turtleactions/IntervalsActions.js:131 -msgid "plus" +#: js/widgets/temperament.js:716 +msgid "non scalar" msgstr "" -#: js/turtleactions/IntervalsActions.js:258 -msgid "Adding missing pitch number 0." +#: js/widgets/temperament.js:757 +msgid "ratios" msgstr "" -#: js/turtleactions/IntervalsActions.js:266 -msgid "Ignoring pitch numbers less than zero or greater than eleven." +#: js/widgets/temperament.js:757 +msgid "arbitrary" msgstr "" -#: js/turtleactions/IntervalsActions.js:272 -msgid "Ignoring duplicate pitch numbers." +#: js/widgets/temperament.js:828 +msgid "number of divisions" msgstr "" -#: js/turtleactions/DictActions.js:75 -#: js/turtleactions/DictActions.js:142 -#: js/turtleactions/DictActions.js:172 -msgid "font" +#: js/widgets/temperament.js:843 +#: js/widgets/temperament.js:958 +#: js/widgets/temperament.js:1037 +#: js/widgets/temperament.js:1128 +msgid "preview" msgstr "" -#: js/turtleactions/DictActions.js:255 -msgid "Dictionary with this name does not exist" +#: js/widgets/temperament.js:888 +msgid "The Number of divisions is too large." msgstr "" -#: js/turtleactions/DictActions.js:259 -msgid "Key with this name does not exist in " +#: js/widgets/temperament.js:1023 +msgid "recursion" msgstr "" -#: js/turtleactions/DrumActions.js:227 -msgid "Noise Block: Did you mean to use a Note block?" +#: js/widgets/temperament.js:1549 +msgid "The octave ratio has changed. This changes temperament significantly." msgstr "" -#: js/turtleactions/ToneActions.js:134 -msgid "Vibrato intensity must be between 1 and 100." +#: js/widgets/temperament.js:2206 +msgid "Table" msgstr "" -#: js/turtleactions/ToneActions.js:139 -msgid "Vibrato rate must be greater than 0." +#: js/widgets/temperament.js:2314 +msgid "Add pitches" msgstr "" -#: js/turtleactions/ToneActions.js:192 -#: js/turtleactions/ToneActions.js:265 -#.TRANS: Depth is the intesity of the tremolo or chorus effect. -msgid "Depth is out of range." +#: js/widgets/tempo.js:111 +msgid "Save tempo" msgstr "" -#: js/turtleactions/ToneActions.js:301 -msgid "Distortion must be from 0 to 100." +#: js/widgets/tempo.js:142 +msgid "speed up" msgstr "" -#: js/turtleactions/ToneActions.js:332 -#.TRANS: partials components in a harmonic series -msgid "Partial must be greater than or equal to 0." +#: js/widgets/tempo.js:148 +msgid "slow down" msgstr "" -#: js/turtleactions/ToneActions.js:378 -#: js/turtleactions/ToneActions.js:417 -#: js/turtleactions/ToneActions.js:456 -#: js/widgets/timbre.js:776 -msgid "Unable to use synth due to existing oscillator" +#: js/widgets/tempo.js:192 +msgid "Adjust the tempo with the buttons." msgstr "" -#: js/turtleactions/ToneActions.js:388 -#: js/turtleactions/ToneActions.js:427 -msgid "The input cannot be negative." +#: js/widgets/tempo.js:259 +msgid "Please enter a number between 30 and 1000" msgstr "" -#: js/turtleactions/MeterActions.js:101 -#: js/turtleactions/MeterActions.js:139 -msgid "beats per minute must be greater than" +#: js/widgets/tempo.js:266 +#: js/widgets/tempo.js:269 +msgid "The beats per minute must be between 30 and 1000." msgstr "" -#: js/turtleactions/MeterActions.js:111 -#: js/turtleactions/MeterActions.js:149 -msgid "maximum" +#: js/widgets/tempo.js:285 +msgid "The beats per minute must be below 1000." msgstr "" -#: js/turtleactions/MeterActions.js:117 -#: js/turtleactions/MeterActions.js:155 -msgid "beats per minute is" +#: js/widgets/tempo.js:301 +msgid "The beats per minute must be above 30" msgstr "" #: js/widgets/help.js:95 @@ -6951,394 +7606,360 @@ msgstr "" msgid "Take a tour" msgstr "" -#: js/widgets/aiwidget.js:135 -#: js/widgets/aiwidget.js:136 -#: js/widgets/rhythmruler.js:679 -#: js/widgets/rhythmruler.js:680 -#: js/widgets/rhythmruler.js:1856 -#: js/widgets/rhythmruler.js:1857 -#: js/widgets/tempo.js:78 -#: js/widgets/tempo.js:97 -#: js/widgets/tempo.js:98 -#: js/widgets/sampler.js:180 -#: js/widgets/sampler.js:181 -msgid "Pause" +#: js/widgets/phrasemaker.js:585 +#: js/widgets/legobricks.js:238 +msgid "Export" msgstr "" -#: js/widgets/aiwidget.js:179 -#: js/widgets/sampler.js:225 -msgid "Warning: Sample is bigger than 1MB." +#: js/widgets/phrasemaker.js:592 +msgid "Sort" msgstr "" -#: js/widgets/aiwidget.js:538 -msgid "New start block generated" +#: js/widgets/phrasemaker.js:1072 +msgid "Click on the table to add notes." msgstr "" -#: js/widgets/aiwidget.js:540 -msgid "MIDI loading. This may take some time depending upon the number of notes in the track" +#: js/widgets/phrasemaker.js:2766 +#: js/widgets/phrasemaker.js:2902 +msgid "tuplet value" msgstr "" -#: js/widgets/aiwidget.js:550 -#: js/widgets/sampler.js:252 -msgid "Upload failed: Sample is not a .wav file." +#: js/widgets/aidebugger.js:135 +msgid "Reset conversation" msgstr "" -#: js/widgets/aiwidget.js:677 -#: js/widgets/sampler.js:446 -msgid "Save sample" +#: js/widgets/aidebugger.js:144 +msgid "Export chat" msgstr "" -#: js/widgets/arpeggio.js:241 -msgid "Click in the grid to add steps to the arpeggio." +#: js/widgets/aidebugger.js:153 +msgid "Debugger initialized" msgstr "" -#: js/widgets/meterwidget.js:195 -#: js/widgets/meterwidget.js:196 -#: js/widgets/modewidget.js:87 -#: js/widgets/modewidget.js:88 -#: js/widgets/modewidget.js:639 -#: js/widgets/modewidget.js:640 -#: js/widgets/modewidget.js:708 -#: js/widgets/modewidget.js:709 -#: js/widgets/rhythmruler.js:457 -#: js/widgets/rhythmruler.js:1784 -#: js/widgets/rhythmruler.js:1785 -#: js/widgets/rhythmruler.js:1809 -#: js/widgets/rhythmruler.js:1810 -#: js/widgets/temperament.js:2165 -msgid "Play all" +#: js/widgets/aidebugger.js:360 +msgid "Debugger error: Could not prepare project data." +msgstr "" + +#: js/widgets/aidebugger.js:405 +msgid "Server error: Invalid response from AI backend." +msgstr "" + +#: js/widgets/aidebugger.js:413 +msgid "Server error: Unable to connect to AI backend." +msgstr "" + +#: js/widgets/aidebugger.js:498 +msgid "Debugger error: Invalid project data format." +msgstr "" + +#: js/widgets/aidebugger.js:516 +msgid "Debugger error: Could not load project data." +msgstr "" + +#: js/widgets/aidebugger.js:582 +msgid "Server error: No initial response from AI backend." msgstr "" -#: js/widgets/meterwidget.js:269 -msgid "Reset" +#: js/widgets/aidebugger.js:589 +msgid "Server error: Failed to initialize AI debugger." msgstr "" -#: js/widgets/meterwidget.js:295 -msgid "Click in the circle to select strong beats for the meter." +#: js/widgets/aidebugger.js:618 +msgid "Conversation reset." msgstr "" -#: js/widgets/modewidget.js:125 -msgid "Rotate counter clockwise" +#: js/widgets/aidebugger.js:627 +msgid "No conversation to export." msgstr "" -#: js/widgets/modewidget.js:131 -msgid "Rotate clockwise" +#: js/widgets/aidebugger.js:642 +msgid "Debugger error: Could not retrieve project data for export." msgstr "" -#: js/widgets/modewidget.js:143 -#: js/widgets/rhythmruler.js:578 -#: js/widgets/timbre.js:957 -#: js/widgets/pitchstaircase.js:676 -msgid "Undo" +#: js/widgets/aidebugger.js:669 +msgid "Chat exported successfully." msgstr "" -#: js/widgets/modewidget.js:161 -#.TRANS: A circle of notes represents the musical mode. -msgid "Click in the circle to select notes for the mode." +#: js/widgets/aidebugger.js:717 +msgid "Chat cleared." msgstr "" -#: js/widgets/modewidget.js:1011 -#: js/widgets/rhythmruler.js:2244 -#: js/widgets/rhythmruler.js:2462 -#: js/widgets/temperament.js:1862 -#: js/widgets/tempo.js:412 -#: js/widgets/musickeyboard.js:3266 -#: js/widgets/phrasemaker.js:5478 -#: js/widgets/pitchstaircase.js:578 -msgid "New action block generated." +#: js/widgets/legobricks.js:243 +msgid "Upload Image" msgstr "" -#: js/widgets/pitchdrummatrix.js:356 -#: js/widgets/pitchdrummatrix.js:741 -msgid "Click in the grid to map notes to drums." +#: js/widgets/legobricks.js:248 +msgid "Webcam" msgstr "" -#: js/widgets/pitchslider.js:103 -msgid "Move up" +#: js/widgets/legobricks.js:271 +msgid "LEGO Bricks - Phrase Maker with \" + this.rowLabels.length + \" pitch rows (sorted by frequency, Instrument: \" + this.selectedInstrument + " msgstr "" -#: js/widgets/pitchslider.js:114 -msgid "Move down" +#: js/widgets/legobricks.js:696 +msgid "No color data to save. Please scan an image first." msgstr "" -#: js/widgets/pitchslider.js:136 -msgid "Click on the slider to create a note block." +#: js/widgets/legobricks.js:704 +msgid "No notes detected from color scanning." msgstr "" -#: js/widgets/rhythmruler.js:486 -msgid "Save rhythms" +#: js/widgets/legobricks.js:717 +msgid "LEGO phrase" msgstr "" -#: js/widgets/rhythmruler.js:512 -msgid "Save drum machine" +#: js/widgets/legobricks.js:828 +msgid "LEGO phrase saved as action blocks with " msgstr "" -#: js/widgets/rhythmruler.js:589 -#.TRANS: user can tap out a rhythm by clicking on a ruler. -msgid "Tap a rhythm" +#: js/widgets/legobricks.js:828 +msgid " notes" msgstr "" -#: js/widgets/rhythmruler.js:813 -msgid "Click on the ruler to divide it." +#: js/widgets/legobricks.js:1032 +msgid "Exporting phrase data: " msgstr "" -#: js/widgets/rhythmruler.js:947 -#: js/widgets/rhythmruler.js:948 -#: js/widgets/rhythmruler.js:1148 -#: js/widgets/rhythmruler.js:1149 -#: js/widgets/rhythmruler.js:1760 -#: js/widgets/rhythmruler.js:1761 -msgid "tap a rhythm" +#: js/widgets/legobricks.js:1048 +msgid "Phrase cleared" msgstr "" -#: js/widgets/rhythmruler.js:1453 -msgid "Maximum value of 256 has been exceeded." +#: js/widgets/legobricks.js:1095 +msgid "Image uploaded successfully" msgstr "" -#: js/widgets/temperament.js:319 -msgid "back to 2:1 octave space" +#: js/widgets/legobricks.js:1131 +msgid "Webcam started" msgstr "" -#: js/widgets/temperament.js:445 -msgid "edit" +#: js/widgets/legobricks.js:1134 +msgid "Webcam access denied: " msgstr "" -#: js/widgets/temperament.js:525 -#: js/widgets/temperament.js:840 -#: js/widgets/temperament.js:844 -#: js/widgets/temperament.js:945 -#: js/widgets/temperament.js:1034 -#: js/widgets/temperament.js:1038 -#: js/widgets/temperament.js:1110 -#: js/widgets/temperament.js:1379 -#: js/widgets/temperament.js:1448 -#: js/widgets/temperament.js:1529 -msgid "done" +#: js/widgets/legobricks.js:1190 +msgid "Eye dropper active - hover over image to preview colors, click to select background color" msgstr "" -#: js/widgets/temperament.js:582 -#: js/widgets/temperament.js:587 -#: js/widgets/temperament.js:1021 -msgid "ratio" +#: js/widgets/legobricks.js:1245 +msgid "Background color selected: " msgstr "" -#: js/widgets/temperament.js:588 -msgid "interval" +#: js/widgets/legobricks.js:1247 +msgid "Could not sample color - please try clicking on the image" msgstr "" -#: js/widgets/temperament.js:716 -msgid "non scalar" +#: js/widgets/legobricks.js:1765 +#: js/widgets/legobricks.js:1900 +#: js/widgets/legobricks.js:1924 +msgid "Instrument changed to: " msgstr "" -#: js/widgets/temperament.js:757 -msgid "ratios" +#: js/widgets/legobricks.js:1776 +msgid "Electronic Synth" msgstr "" -#: js/widgets/temperament.js:757 -msgid "arbitrary" +#: js/widgets/legobricks.js:1777 +msgid "Piano" msgstr "" -#: js/widgets/temperament.js:828 -msgid "number of divisions" +#: js/widgets/legobricks.js:1778 +msgid "Guitar" msgstr "" -#: js/widgets/temperament.js:843 -#: js/widgets/temperament.js:958 -#: js/widgets/temperament.js:1037 -#: js/widgets/temperament.js:1128 -msgid "preview" +#: js/widgets/legobricks.js:1779 +msgid "Acoustic Guitar" msgstr "" -#: js/widgets/temperament.js:888 -msgid "The Number of divisions is too large." +#: js/widgets/legobricks.js:1780 +msgid "Electric Guitar" msgstr "" -#: js/widgets/temperament.js:1023 -msgid "recursion" +#: js/widgets/legobricks.js:1781 +msgid "Violin" msgstr "" -#: js/widgets/temperament.js:1549 -msgid "The octave ratio has changed. This changes temperament significantly." +#: js/widgets/legobricks.js:1782 +msgid "Viola" msgstr "" -#: js/widgets/temperament.js:2177 -msgid "Table" +#: js/widgets/legobricks.js:1783 +msgid "Cello" msgstr "" -#: js/widgets/temperament.js:2285 -msgid "Add pitches" +#: js/widgets/legobricks.js:1784 +msgid "Bass" msgstr "" -#: js/widgets/tempo.js:111 -msgid "Save tempo" +#: js/widgets/legobricks.js:1785 +msgid "Flute" msgstr "" -#: js/widgets/tempo.js:142 -msgid "speed up" +#: js/widgets/legobricks.js:1786 +msgid "Clarinet" msgstr "" -#: js/widgets/tempo.js:148 -msgid "slow down" +#: js/widgets/legobricks.js:1787 +msgid "Saxophone" msgstr "" -#: js/widgets/tempo.js:192 -msgid "Adjust the tempo with the buttons." +#: js/widgets/legobricks.js:1788 +msgid "Trumpet" msgstr "" -#: js/widgets/tempo.js:259 -msgid "Please enter a number between 30 and 1000" +#: js/widgets/legobricks.js:1789 +msgid "Trombone" msgstr "" -#: js/widgets/tempo.js:266 -#: js/widgets/tempo.js:269 -msgid "The beats per minute must be between 30 and 1000." +#: js/widgets/legobricks.js:1790 +msgid "Oboe" msgstr "" -#: js/widgets/tempo.js:285 -msgid "The beats per minute must be below 1000." +#: js/widgets/legobricks.js:1791 +msgid "Tuba" msgstr "" -#: js/widgets/tempo.js:301 -msgid "The beats per minute must be above 30" +#: js/widgets/legobricks.js:1792 +msgid "Banjo" msgstr "" -#: js/widgets/timbre.js:760 -msgid "Synthesizer" +#: js/widgets/legobricks.js:1793 +msgid "Sine" msgstr "" -#: js/widgets/timbre.js:880 -#: planet/js/GlobalTag.js:50 -#.TRANS: On the Planet, we use labels to tag projects. -msgid "Effects" +#: js/widgets/legobricks.js:1794 +msgid "Square" msgstr "" -#: js/widgets/timbre.js:940 -msgid "Add filter" +#: js/widgets/legobricks.js:1795 +msgid "Sawtooth" msgstr "" -#: js/widgets/timbre.js:981 -msgid "Click on buttons to open the timbre design tools." +#: js/widgets/legobricks.js:1796 +msgid "Triangle" msgstr "" -#: js/widgets/timbre.js:1265 -msgid "harmonicity" +#: js/widgets/legobricks.js:2045 +msgid "Scanning image with vertical lines..." msgstr "" -#: js/widgets/timbre.js:1332 -#: js/widgets/timbre.js:1398 -msgid "modulation index" +#: js/widgets/reflection.js:101 +msgid "Summary" msgstr "" -#: js/widgets/timbre.js:1476 -msgid "vibrato amount" +#: js/widgets/reflection.js:112 +msgid "Talk with Rohan" msgstr "" -#: js/widgets/timbre.js:1911 -msgid "Filter already present." +#: js/widgets/reflection.js:119 +msgid "Talk with Alan" msgstr "" -#: js/widgets/timbre.js:2495 -msgid "distortion amount" +#: js/widgets/reflection.js:126 +msgid "Talk with Beethoven" msgstr "" -#: js/widgets/musickeyboard.js:749 -#: js/widgets/phrasemaker.js:595 -msgid "Add note" +#: js/widgets/reflection.js:133 +msgid "Refresh" msgstr "" -#: js/widgets/musickeyboard.js:768 -msgid "Metronome" +#: js/widgets/reflection.js:182 +msgid "Reflect on your project." msgstr "" -#: js/widgets/musickeyboard.js:1630 -msgid "Note value" +#: js/widgets/reflection.js:445 +msgid "Failed to send message" msgstr "" -#: js/widgets/musickeyboard.js:3265 -msgid "New action blocks generated." +#: js/widgets/reflection.js:579 +msgid "No conversation to save." msgstr "" -#: js/widgets/musickeyboard.js:3449 -#: js/widgets/musickeyboard.js:3457 -msgid "MIDI device present." +#: js/widgets/sampler.js:270 +msgid "Recording started" msgstr "" -#: js/widgets/musickeyboard.js:3460 -msgid "No MIDI device found." +#: js/widgets/sampler.js:278 +msgid "Recording complete" msgstr "" -#: js/widgets/musickeyboard.js:3470 -msgid "Failed to get MIDI access in browser." +#: js/widgets/sampler.js:319 +msgid "A new sample block was generated." msgstr "" -#: js/widgets/oscilloscope.js:79 -msgid "Zoom In" +#: js/widgets/sampler.js:354 +msgid "Warning: Your sample cannot be loaded because it is >1MB." msgstr "" -#: js/widgets/oscilloscope.js:88 -msgid "Zoom Out" +#: js/widgets/sampler.js:488 +msgid "Upload sample" msgstr "" -#: js/widgets/phrasemaker.js:585 -msgid "Export" +#: js/widgets/sampler.js:559 +msgid "Toggle Mic" msgstr "" -#: js/widgets/phrasemaker.js:592 -msgid "Sort" +#: js/widgets/sampler.js:566 +msgid "Playback" msgstr "" -#: js/widgets/phrasemaker.js:1072 -msgid "Click on the table to add notes." +#: js/widgets/sampler.js:610 +msgid "Tuner" msgstr "" -#: js/widgets/phrasemaker.js:2766 -#: js/widgets/phrasemaker.js:2902 -msgid "tuplet value" +#: js/widgets/sampler.js:619 +#: js/widgets/sampler.js:805 +msgid "Tuner stopped" msgstr "" -#: js/widgets/pitchstaircase.js:622 -msgid "Play chord" +#: js/widgets/sampler.js:732 +msgid "Chromatic" msgstr "" -#: js/widgets/pitchstaircase.js:630 -msgid "Play scale" +#: js/widgets/sampler.js:744 +msgid "Target pitch" msgstr "" -#: js/widgets/pitchstaircase.js:694 -msgid "Click on a note to create a new step." +#: js/widgets/sampler.js:802 +msgid "Tuner started" msgstr "" -#: js/widgets/sampler.js:235 -msgid "Recording started" +#: js/widgets/timbre.js:763 +msgid "Synthesizer" msgstr "" -#: js/widgets/sampler.js:243 -msgid "Recording complete" +#: js/widgets/timbre.js:883 +#: planet/js/GlobalTag.js:50 +#.TRANS: On the Planet, we use labels to tag projects. +msgid "Effects" msgstr "" -#: js/widgets/sampler.js:281 -msgid "A new sample block was generated." +#: js/widgets/timbre.js:943 +msgid "Add filter" msgstr "" -#: js/widgets/sampler.js:316 -msgid "Warning: Your sample cannot be loaded because it is >1MB." +#: js/widgets/timbre.js:985 +msgid "Click on buttons to open the timbre design tools." msgstr "" -#: js/widgets/sampler.js:418 -msgid "Upload sample" +#: js/widgets/timbre.js:1266 +msgid "harmonicity" msgstr "" -#: js/widgets/sampler.js:462 -msgid "Toggle Mic" +#: js/widgets/timbre.js:1332 +#: js/widgets/timbre.js:1397 +msgid "modulation index" msgstr "" -#: js/widgets/sampler.js:469 -msgid "Playback" +#: js/widgets/timbre.js:1474 +msgid "vibrato amount" msgstr "" -#: js/widgets/sampler.js:950 -#.TRANS: The reference tone is a sound used for comparison. -msgid "reference tone" +#: js/widgets/timbre.js:1955 +msgid "Filter already present." +msgstr "" + +#: js/widgets/timbre.js:2577 +msgid "distortion amount" msgstr "" #: planet/js/GlobalCard.js:68 @@ -7432,10 +8053,6 @@ msgstr "" msgid "Duplicate project" msgstr "" -#: planet/js/ProjectStorage.js:243 -msgid "anonymous" -msgstr "" - #: planet/js/ProjectViewer.js:30 msgid "Error: Report could not be submitted. Try again later." msgstr "" @@ -7497,15 +8114,6 @@ msgstr "" msgid "Open in Turtle Blocks" msgstr "" -#: planet/js/helper.js:149 -#: planet/js/StringHelper.js:49 -msgid "Show more tags" -msgstr "" - -#: planet/js/helper.js:150 -msgid "Show fewer tags" -msgstr "" - #: planet/js/StringHelper.js:30 msgid "Planet" msgstr "" @@ -7561,6 +8169,11 @@ msgstr "" msgid "Explore Projects" msgstr "" +#: planet/js/StringHelper.js:49 +#: planet/js/helper.js:149 +msgid "Show more tags" +msgstr "" + #: planet/js/StringHelper.js:50 msgid "Most recent" msgstr "" @@ -7617,6 +8230,14 @@ msgstr "" msgid "Download as File" msgstr "" +#: planet/js/helper.js:150 +msgid "Show fewer tags" +msgstr "" + +#: planet/js/ProjectStorage.js:245 +msgid "anonymous" +msgstr "" + #: plugins/accelerometer.rtp:48 msgid "motion x" msgstr "" @@ -7781,6 +8402,30 @@ msgstr "" msgid "water" msgstr "" +#: plugins/rodi.rtp:172 +msgid "blink" +msgstr "" + +#: plugins/rodi.rtp:246 +msgid "led" +msgstr "" + +#: plugins/rodi.rtp:265 +msgid "light intensity" +msgstr "" + +#: plugins/rodi.rtp:282 +msgid "infrared light (left)" +msgstr "" + +#: plugins/rodi.rtp:296 +msgid "infrared light (right)" +msgstr "" + +#: plugins/rodi.rtp:338 +msgid "move" +msgstr "" + #: plugins/weather.rtp:68 #: plugins/weather.rtp:97 msgid "Days ahead must be in the range of -1 to 5." @@ -7810,45 +8455,9 @@ msgstr "" msgid "low" msgstr "" -#: plugins/rodi.rtp:172 -msgid "blink" -msgstr "" - -#: plugins/rodi.rtp:246 -msgid "led" -msgstr "" - -#: plugins/rodi.rtp:265 -msgid "light intensity" -msgstr "" - -#: plugins/rodi.rtp:282 -msgid "infrared light (left)" -msgstr "" - -#: plugins/rodi.rtp:296 -msgid "infrared light (right)" -msgstr "" - -#: plugins/rodi.rtp:338 -msgid "move" -msgstr "" - #~msgid "" #~msgstr "" -#: js/turtledefs.js:703 -#~msgid "To delete a block, right-click on it. You will see the delete option." -#~msgstr "" - -#: js/turtledefs.js:709 -#~msgid "To copy a block, right-click on it. You will see the copy option." -#~msgstr "" - -#: js/turtledefs.js:715 -#~msgid "To extract a block, right-click on it. You will see the extract option." -#~msgstr "" - #: planet/js/StringHelper.js:44 #~msgid "Delete \\"\\"?" #~msgstr ""