pxt-common-packages 10.4.4 → 10.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/built/common-sim.d.ts +18 -0
  2. package/built/common-sim.js +285 -0
  3. package/libs/azureiot/built/debug/binary.js +461 -461
  4. package/libs/color/built/debug/binary.js +8 -8
  5. package/libs/{game/docs/reference/scene → color-coded-tilemap/docs/reference/color-coded-tilemap}/get-tile.md +3 -3
  6. package/libs/color-coded-tilemap/docs/reference/color-coded-tilemap/get-tiles-by-type.md +65 -0
  7. package/libs/{game/docs/reference/scene → color-coded-tilemap/docs/reference/color-coded-tilemap}/on-hit-tile.md +4 -4
  8. package/libs/color-coded-tilemap/docs/reference/color-coded-tilemap/place-on-random-tile.md +61 -0
  9. package/libs/{game/docs/reference/scene → color-coded-tilemap/docs/reference/color-coded-tilemap}/place.md +2 -6
  10. package/libs/color-coded-tilemap/docs/reference/color-coded-tilemap/set-tile-at.md +61 -0
  11. package/libs/{game/docs/reference/scene → color-coded-tilemap/docs/reference/color-coded-tilemap}/set-tile-map.md +3 -3
  12. package/libs/{game/docs/reference/scene → color-coded-tilemap/docs/reference/color-coded-tilemap}/set-tile.md +1 -1
  13. package/libs/{game/docs/reference/scene → color-coded-tilemap/docs/reference/color-coded-tilemap}/tile-map.md +2 -2
  14. package/libs/{game/docs/types → color-coded-tilemap/docs/reference/color-coded-tilemap}/tile.md +9 -5
  15. package/libs/color-coded-tilemap/docs/reference/color-coded-tilemap.md +32 -0
  16. package/libs/color-coded-tilemap/tilemap.ts +7 -7
  17. package/libs/color-sensor/built/debug/binary.js +8 -8
  18. package/libs/controller/built/debug/binary.js +7118 -7118
  19. package/libs/controller---none/built/debug/binary.js +7098 -7098
  20. package/libs/datalogger/built/debug/binary.js +63 -63
  21. package/libs/edge-connector/built/debug/binary.js +8 -8
  22. package/libs/edge-connector/docs/reference/edge-connector.md +5 -0
  23. package/libs/esp32/built/debug/binary.js +462 -462
  24. package/libs/feather/docs/reference/feather.md +11 -0
  25. package/libs/game/_locales/game-jsdoc-strings.json +1 -0
  26. package/libs/game/built/debug/binary.js +7037 -7037
  27. package/libs/game/docs/reference/game/set-game-over-effect.md +47 -0
  28. package/libs/game/docs/reference/game/set-game-over-message.md +47 -0
  29. package/libs/game/docs/reference/game/set-game-over-playable.md +48 -0
  30. package/libs/game/docs/reference/game/set-game-over-scoring-type.md +78 -0
  31. package/libs/game/docs/reference/game.md +8 -0
  32. package/libs/game/game.ts +24 -0
  33. package/libs/game/info.ts +18 -8
  34. package/libs/lcd/built/debug/binary.js +8 -8
  35. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  36. package/libs/lora/built/debug/binary.js +8 -8
  37. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  38. package/libs/mixer/docs/reference/music/create-song.md +38 -0
  39. package/libs/mixer/docs/reference/music/melody-playable.md +30 -0
  40. package/libs/mixer/docs/reference/music/play.md +132 -0
  41. package/libs/mixer/docs/reference/music/song-editor.md +92 -0
  42. package/libs/mixer/docs/reference/music/string-playable.md +41 -0
  43. package/libs/mixer/docs/reference/music/tone-playable.md +30 -0
  44. package/libs/mixer/docs/reference/music.md +12 -7
  45. package/libs/mixer/docs/types/playable.md +76 -0
  46. package/libs/mixer/instrument.ts +28 -9
  47. package/libs/mixer/melody.cpp +43 -0
  48. package/libs/mixer/melody.ts +1 -0
  49. package/libs/mixer/playable.ts +4 -0
  50. package/libs/mixer/sequencer.ts +116 -0
  51. package/libs/mixer/sim/music.ts +102 -0
  52. package/libs/mqtt/built/debug/binary.js +176 -176
  53. package/libs/multiplayer/player.ts +1 -0
  54. package/libs/net/built/debug/binary.js +176 -176
  55. package/libs/net-game/built/debug/binary.js +8626 -8626
  56. package/libs/palette/built/debug/binary.js +7036 -7036
  57. package/libs/pixel/built/debug/binary.js +8 -8
  58. package/libs/power/built/debug/binary.js +8 -8
  59. package/libs/proximity/built/debug/binary.js +8 -8
  60. package/libs/radio/built/debug/binary.js +8 -8
  61. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  62. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  63. package/libs/screen/_locales/screen-jsdoc-strings.json +2 -0
  64. package/libs/screen/built/debug/binary.js +50 -50
  65. package/libs/screen/image.cpp +226 -0
  66. package/libs/screen/image.ts +44 -0
  67. package/libs/screen/sim/image.ts +240 -0
  68. package/libs/servo/built/debug/binary.js +8 -8
  69. package/libs/sprite-scaling/_locales/sprite-scaling-jsdoc-strings.json +18 -1
  70. package/libs/sprite-scaling/_locales/sprite-scaling-strings.json +1 -0
  71. package/libs/sprite-scaling/built/debug/binary.js +7036 -7036
  72. package/libs/sprite-scaling/docs/reference/sprite-scaling.md +23 -0
  73. package/libs/sprite-scaling/docs/reference/sprites/scaling/scale-by-pixels.md +1 -1
  74. package/libs/sprite-scaling/docs/reference/sprites/scaling/scale-to-pixels.md +1 -1
  75. package/libs/sprite-scaling/scaling.ts +24 -0
  76. package/libs/storyboard/built/debug/binary.js +7036 -7036
  77. package/package.json +2 -2
@@ -9,7 +9,109 @@ namespace pxsim.music {
9
9
 
10
10
  export function stopPlaying() {
11
11
  AudioContextManager.muteAllChannels()
12
+
13
+ if (sequencers) {
14
+ for (const seq of sequencers) {
15
+ seq.sequencer.stop();
16
+ seq.sequencer.dispose();
17
+ }
18
+ }
12
19
  }
13
20
 
14
21
  export function forceOutput(mode: number) { }
22
+
23
+ export const SEQUENCER_STOP_MESSAGE = 3243;
24
+ export const SEQUENCER_TICK_MESSAGE = 3244;
25
+ export const SEQUENCER_STATE_CHANGE_MESSAGE = 3245;
26
+ export const SEQUENCER_LOOPED_MESSAGE = 3246;
27
+
28
+ interface SequencerWithId {
29
+ id: number;
30
+ sequencer: Sequencer;
31
+ }
32
+
33
+ let sequencers: SequencerWithId[];
34
+ let nextSequencerId = 0;
35
+
36
+ export async function _createSequencer(): Promise<number> {
37
+ if (!sequencers) {
38
+ pxsim.AudioContextManager.onStopAll(() => {
39
+ for (const seq of sequencers) {
40
+ seq.sequencer.stop();
41
+ seq.sequencer.dispose();
42
+ }
43
+ sequencers = [];
44
+ })
45
+
46
+ sequencers = [];
47
+ }
48
+ const res = {
49
+ id: nextSequencerId++,
50
+ sequencer: new Sequencer()
51
+ };
52
+
53
+ sequencers.push(res)
54
+
55
+ await res.sequencer.initAsync();
56
+ res.sequencer.addEventListener("stop", () => {
57
+ board().bus.queue(SEQUENCER_STOP_MESSAGE, this.id);
58
+ });
59
+ res.sequencer.addEventListener("state-change", () => {
60
+ board().bus.queue(SEQUENCER_STATE_CHANGE_MESSAGE, this.id);
61
+ });
62
+ res.sequencer.addEventListener("looped", () => {
63
+ board().bus.queue(SEQUENCER_LOOPED_MESSAGE, this.id);
64
+ });
65
+ res.sequencer.addEventListener("tick", () => {
66
+ board().bus.queue(SEQUENCER_TICK_MESSAGE, this.id);
67
+ });
68
+
69
+
70
+ return res.id;
71
+ }
72
+
73
+ export function _sequencerState(id: number): string {
74
+ return lookupSequencer(id)?.state();
75
+ }
76
+
77
+ export function _sequencerCurrentTick(id: number): number {
78
+ return lookupSequencer(id)?.currentTick();
79
+ }
80
+
81
+ export function _sequencerPlaySong(id: number, song: RefBuffer, loop: boolean): void {
82
+ const decoded = decodeSong(song.data);
83
+ lookupSequencer(id)?.start(decoded, loop);
84
+ }
85
+
86
+ export function _sequencerStop(id: number): void {
87
+ lookupSequencer(id)?.stop();
88
+ }
89
+
90
+ export function _sequencerSetVolume(id: number, volume: number): void {
91
+ lookupSequencer(id)?.setVolume(volume);
92
+ }
93
+
94
+ export function _sequencerSetVolumeForAll(volume: number): void {
95
+ for (const seq of sequencers) {
96
+ seq.sequencer.setVolume(volume);
97
+ }
98
+ }
99
+
100
+ export function _sequencerSetTrackVolume(id: number, trackIndex: number, volume: number): void {
101
+ lookupSequencer(id)?.setTrackVolume(trackIndex, volume);
102
+ }
103
+
104
+ export function _sequencerSetDrumTrackVolume(id: number, trackIndex: number, drumIndex: number, volume: number): void {
105
+ lookupSequencer(id)?.setDrumTrackVolume(trackIndex, drumIndex, volume);
106
+ }
107
+
108
+ export function _sequencerDispose(id: number) {
109
+ lookupSequencer(id)?.dispose();
110
+ sequencers = sequencers.filter(s => s.id !== id);
111
+ }
112
+
113
+ function lookupSequencer(id: number) {
114
+ for (const seq of sequencers) if (seq.id === id) return seq.sequencer;
115
+ return undefined;
116
+ }
15
117
  }