fix simulator support for music
This commit is contained in:
		@@ -8,7 +8,7 @@ namespace music {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=music/play-tone weight=90
 | 
					    //% help=music/play-tone weight=90
 | 
				
			||||||
    //% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
 | 
					    //% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
 | 
				
			||||||
    //% parts="speaker"
 | 
					    //% parts="speaker" async
 | 
				
			||||||
    void playTone(int freqency, int ms) {
 | 
					    void playTone(int freqency, int ms) {
 | 
				
			||||||
        uBit.soundmotor.Sound_On(freqency);
 | 
					        uBit.soundmotor.Sound_On(freqency);
 | 
				
			||||||
        if(ms > 0) uBit.sleep(ms);
 | 
					        if(ms > 0) uBit.sleep(ms);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -533,7 +533,7 @@ declare namespace music {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=music/play-tone weight=90
 | 
					    //% help=music/play-tone weight=90
 | 
				
			||||||
    //% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
 | 
					    //% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
 | 
				
			||||||
    //% parts="speaker" shim=music::playTone
 | 
					    //% parts="speaker" async shim=music::playTone
 | 
				
			||||||
    function playTone(freqency: number, ms: number): void;
 | 
					    function playTone(freqency: number, ms: number): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@ namespace pxsim {
 | 
				
			|||||||
        radioState: RadioState;
 | 
					        radioState: RadioState;
 | 
				
			||||||
        neopixelState: NeoPixelState;
 | 
					        neopixelState: NeoPixelState;
 | 
				
			||||||
        rgbLedState: number;
 | 
					        rgbLedState: number;
 | 
				
			||||||
 | 
					        speakerState: SpeakerState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        constructor() {
 | 
					        constructor() {
 | 
				
			||||||
            super()
 | 
					            super()
 | 
				
			||||||
@@ -59,6 +60,7 @@ namespace pxsim {
 | 
				
			|||||||
            this.builtinParts["lightsensor"] = this.lightSensorState = new LightSensorState();
 | 
					            this.builtinParts["lightsensor"] = this.lightSensorState = new LightSensorState();
 | 
				
			||||||
            this.builtinParts["compass"] = this.compassState = new CompassState();
 | 
					            this.builtinParts["compass"] = this.compassState = new CompassState();
 | 
				
			||||||
            this.builtinParts["neopixel"] = this.neopixelState = new NeoPixelState();
 | 
					            this.builtinParts["neopixel"] = this.neopixelState = new NeoPixelState();
 | 
				
			||||||
 | 
					            this.builtinParts["speaker"] = this.speakerState = new SpeakerState();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
 | 
					            this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
 | 
				
			||||||
            this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
 | 
					            this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								sim/state/music.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								sim/state/music.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					namespace pxsim {
 | 
				
			||||||
 | 
					    export class SpeakerState {
 | 
				
			||||||
 | 
					        frequency: number;
 | 
				
			||||||
 | 
					        ms: number;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					namespace pxsim.music {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    export function playTone(frequency: number, ms: number) {
 | 
				
			||||||
 | 
					        const b = board();
 | 
				
			||||||
 | 
					        b.speakerState.frequency = frequency;
 | 
				
			||||||
 | 
					        b.speakerState.ms = ms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        runtime.queueDisplayUpdate();
 | 
				
			||||||
 | 
					        let cb = getResume();
 | 
				
			||||||
 | 
					        AudioContextManager.tone(frequency, 1);
 | 
				
			||||||
 | 
					        if (ms <= 0) cb();
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            setTimeout(() => {
 | 
				
			||||||
 | 
					                AudioContextManager.stop();
 | 
				
			||||||
 | 
					                b.speakerState.frequency = 0;
 | 
				
			||||||
 | 
					                b.speakerState.ms = 0;
 | 
				
			||||||
 | 
					                runtime.queueDisplayUpdate();
 | 
				
			||||||
 | 
					                cb()
 | 
				
			||||||
 | 
					            }, ms);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1349,6 +1349,7 @@ namespace pxsim.visuals {
 | 
				
			|||||||
            this.updateButtonAB();
 | 
					            this.updateButtonAB();
 | 
				
			||||||
            this.updateGestures();
 | 
					            this.updateGestures();
 | 
				
			||||||
            this.updateRgbLed();
 | 
					            this.updateRgbLed();
 | 
				
			||||||
 | 
								this.updateSpeaker();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!runtime || runtime.dead) svg.addClass(this.element, "grayscale");
 | 
					            if (!runtime || runtime.dead) svg.addClass(this.element, "grayscale");
 | 
				
			||||||
            else svg.removeClass(this.element, "grayscale");
 | 
					            else svg.removeClass(this.element, "grayscale");
 | 
				
			||||||
@@ -1371,6 +1372,15 @@ namespace pxsim.visuals {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private updateSpeaker() {
 | 
				
			||||||
 | 
					            let state = this.board;
 | 
				
			||||||
 | 
								if (state.speakerState.frequency) {
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}			
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private updateGestures() {
 | 
					        private updateGestures() {
 | 
				
			||||||
            let state = this.board;
 | 
					            let state = this.board;
 | 
				
			||||||
            if (state.accelerometerState.useShake && !this.shakeButton) {
 | 
					            if (state.accelerometerState.useShake && !this.shakeButton) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user