fixed interface function names, add sound functionality
This commit is contained in:
		@@ -1,52 +1,3 @@
 | 
				
			|||||||
function note(n: Note, l: BeatFraction) {
 | 
					 | 
				
			||||||
    return [music.noteFrequency(n), music.beat(l)];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var notes = [
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.G, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter + BeatFraction.Eighth),
 | 
					 | 
				
			||||||
    note(Note.D, BeatFraction.Eighth), note(Note.D, BeatFraction.Half),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.G, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.D, BeatFraction.Quarter + BeatFraction.Eighth),
 | 
					 | 
				
			||||||
    note(Note.C, BeatFraction.Eighth), note(Note.C, BeatFraction.Half),
 | 
					 | 
				
			||||||
    note(Note.D, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Eighth), note(Note.F, BeatFraction.Eighth),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Eighth), note(Note.F, BeatFraction.Eighth),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.D, BeatFraction.Quarter), note(Note.G3, BeatFraction.Quarter), note(Note.E, BeatFraction.Half),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Eighth), note(Note.F, BeatFraction.Eighth),
 | 
					 | 
				
			||||||
    note(Note.C, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter),
 | 
					 | 
				
			||||||
    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter + BeatFraction.Eighth),
 | 
					 | 
				
			||||||
    note(Note.C, BeatFraction.Eighth), note(Note.C, BeatFraction.Half)
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let whole = music.beat(BeatFraction.Whole);
 | 
					 | 
				
			||||||
for (var t = 0; t < notes.length; t++) {
 | 
					 | 
				
			||||||
    serial.writeNumber(notes[t][0]);
 | 
					 | 
				
			||||||
    serial.writeNumber(notes[t][1]);
 | 
					 | 
				
			||||||
    serial.writeLine("\r\n");
 | 
					 | 
				
			||||||
    music.playTone(notes[t][0], notes[t][1]);
 | 
					 | 
				
			||||||
    basic.pause(whole - notes[t][1]);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*music.playTone(Note.A, 2000);
 | 
					 | 
				
			||||||
music.playTone(Note.C, 2000);
 | 
					 | 
				
			||||||
music.playTone(Note.F, 2000);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
music.playTone(Note.A, 100);
 | 
					 | 
				
			||||||
music.playTone(1000, 100);
 | 
					 | 
				
			||||||
music.playTone(3000, 100);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
basic.setLedColor(Colors.Blue);
 | 
					basic.setLedColor(Colors.Blue);
 | 
				
			||||||
basic.pause(500);
 | 
					basic.pause(500);
 | 
				
			||||||
basic.setLedColor(Colors.Red);
 | 
					basic.setLedColor(Colors.Red);
 | 
				
			||||||
@@ -99,4 +50,123 @@ input.onPinPressed(TouchPin.P2, () => {
 | 
				
			|||||||
input.onPinPressed(TouchPin.P3, () => {
 | 
					input.onPinPressed(TouchPin.P3, () => {
 | 
				
			||||||
    basic.showNumber(3);
 | 
					    basic.showNumber(3);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
*/
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					music.setTempo(150);
 | 
				
			||||||
 | 
					let whole = music.beat(BeatFraction.Whole);
 | 
				
			||||||
 | 
					function note(n: Note, l: BeatFraction): number[] {
 | 
				
			||||||
 | 
					    return [music.noteFrequency(n), music.beat(l)];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getNoteName(frequency: number): string {
 | 
				
			||||||
 | 
					    switch (frequency) {
 | 
				
			||||||
 | 
					        case 262:
 | 
				
			||||||
 | 
					            return "C";
 | 
				
			||||||
 | 
					        case 277:
 | 
				
			||||||
 | 
					            return "CSharp";
 | 
				
			||||||
 | 
					        case 294:
 | 
				
			||||||
 | 
					            return "D";
 | 
				
			||||||
 | 
					        case 311:
 | 
				
			||||||
 | 
					            return "Eb";
 | 
				
			||||||
 | 
					        case 330:
 | 
				
			||||||
 | 
					            return "E";
 | 
				
			||||||
 | 
					        case 349:
 | 
				
			||||||
 | 
					            return "F";
 | 
				
			||||||
 | 
					        case 370:
 | 
				
			||||||
 | 
					            return "FSharp";
 | 
				
			||||||
 | 
					        case 392:
 | 
				
			||||||
 | 
					            return "G";
 | 
				
			||||||
 | 
					        case 415:
 | 
				
			||||||
 | 
					            return "GSharp";
 | 
				
			||||||
 | 
					        case 440:
 | 
				
			||||||
 | 
					            return "A";
 | 
				
			||||||
 | 
					        case 466:
 | 
				
			||||||
 | 
					            return "Bb";
 | 
				
			||||||
 | 
					        case 494:
 | 
				
			||||||
 | 
					            return "B";
 | 
				
			||||||
 | 
					        case 131:
 | 
				
			||||||
 | 
					            return "C3";
 | 
				
			||||||
 | 
					        case 139:
 | 
				
			||||||
 | 
					            return "CSharp3";
 | 
				
			||||||
 | 
					        case 147:
 | 
				
			||||||
 | 
					            return "D3";
 | 
				
			||||||
 | 
					        case 156:
 | 
				
			||||||
 | 
					            return "Eb3";
 | 
				
			||||||
 | 
					        case 165:
 | 
				
			||||||
 | 
					            return "E3";
 | 
				
			||||||
 | 
					        case 175:
 | 
				
			||||||
 | 
					            return "F3";
 | 
				
			||||||
 | 
					        case 185:
 | 
				
			||||||
 | 
					            return "FSharp3";
 | 
				
			||||||
 | 
					        case 196:
 | 
				
			||||||
 | 
					            return "G3";
 | 
				
			||||||
 | 
					        case 208:
 | 
				
			||||||
 | 
					            return "GSharp3";
 | 
				
			||||||
 | 
					        case 220:
 | 
				
			||||||
 | 
					            return "A3";
 | 
				
			||||||
 | 
					        case 233:
 | 
				
			||||||
 | 
					            return "Bb3";
 | 
				
			||||||
 | 
					        case 247:
 | 
				
			||||||
 | 
					            return "B3";
 | 
				
			||||||
 | 
					        case 523:
 | 
				
			||||||
 | 
					            return "C5";
 | 
				
			||||||
 | 
					        case 555:
 | 
				
			||||||
 | 
					            return "CSharp5";
 | 
				
			||||||
 | 
					        case 587:
 | 
				
			||||||
 | 
					            return "D5";
 | 
				
			||||||
 | 
					        case 622:
 | 
				
			||||||
 | 
					            return "Eb5";
 | 
				
			||||||
 | 
					        case 659:
 | 
				
			||||||
 | 
					            return "E5";
 | 
				
			||||||
 | 
					        case 698:
 | 
				
			||||||
 | 
					            return "F5";
 | 
				
			||||||
 | 
					        case 740:
 | 
				
			||||||
 | 
					            return "FSharp5";
 | 
				
			||||||
 | 
					        case 784:
 | 
				
			||||||
 | 
					            return "G5";
 | 
				
			||||||
 | 
					        case 831:
 | 
				
			||||||
 | 
					            return "GSharp5";
 | 
				
			||||||
 | 
					        case 880:
 | 
				
			||||||
 | 
					            return "A5";
 | 
				
			||||||
 | 
					        case 932:
 | 
				
			||||||
 | 
					            return "Bb5";
 | 
				
			||||||
 | 
					        case 989:
 | 
				
			||||||
 | 
					            return "B5";
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            return "?";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var notes = [
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.G, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter + BeatFraction.Eighth),
 | 
				
			||||||
 | 
					    note(Note.D, BeatFraction.Eighth), note(Note.D, BeatFraction.Half),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.G, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.D, BeatFraction.Quarter + BeatFraction.Eighth),
 | 
				
			||||||
 | 
					    note(Note.C, BeatFraction.Eighth), note(Note.C, BeatFraction.Half),
 | 
				
			||||||
 | 
					    note(Note.D, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Eighth), note(Note.F, BeatFraction.Eighth),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Eighth), note(Note.F, BeatFraction.Eighth),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.D, BeatFraction.Quarter), note(Note.G3, BeatFraction.Quarter), note(Note.E, BeatFraction.Half),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter), note(Note.G, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.G, BeatFraction.Quarter), note(Note.F, BeatFraction.Quarter), note(Note.E, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Eighth), note(Note.F, BeatFraction.Eighth),
 | 
				
			||||||
 | 
					    note(Note.C, BeatFraction.Quarter), note(Note.C, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter),
 | 
				
			||||||
 | 
					    note(Note.E, BeatFraction.Quarter), note(Note.D, BeatFraction.Quarter + BeatFraction.Eighth),
 | 
				
			||||||
 | 
					    note(Note.C, BeatFraction.Eighth), note(Note.C, BeatFraction.Half)
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (var t = 0; t < notes.length; t++) {
 | 
				
			||||||
 | 
					    music.playTone(notes[t][0], notes[t][1]);
 | 
				
			||||||
 | 
					    basic.showString(getNoteName(notes[t][0]));
 | 
				
			||||||
 | 
					    music.rest(whole - notes[t][1]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -12,6 +12,12 @@ namespace motors {
 | 
				
			|||||||
    //% blockId=motor_on block="motor on at %percent|%"
 | 
					    //% blockId=motor_on block="motor on at %percent|%"
 | 
				
			||||||
    //% parts=dcmotor
 | 
					    //% parts=dcmotor
 | 
				
			||||||
    void motorOn(int power) {
 | 
					    void motorOn(int power) {
 | 
				
			||||||
        uBit.soundmotor.Motor_On(power);
 | 
					        uBit.soundmotor.motorOn(power);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void motorOff() {
 | 
				
			||||||
 | 
					        uBit.soundmotor.motorAOff();
 | 
				
			||||||
 | 
					        uBit.soundmotor.motorBOff();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,9 +1,28 @@
 | 
				
			|||||||
#include "ksbit.h"
 | 
					#include "ksbit.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace music {
 | 
					namespace music {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Plays a tone through ``speaker`` for the given duration.
 | 
				
			||||||
 | 
					     * @param frequency pitch of the tone to play in Hertz (Hz)
 | 
				
			||||||
 | 
					     * @param ms tone duration in milliseconds (ms)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=music/play-tone weight=90
 | 
				
			||||||
 | 
					    //% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="speaker"
 | 
				
			||||||
    void playTone(int freqency, int ms) {
 | 
					    void playTone(int freqency, int ms) {
 | 
				
			||||||
        uBit.soundmotor.Sound_On(freqency);
 | 
					        uBit.soundmotor.soundOn(freqency);
 | 
				
			||||||
        if(ms > 0) uBit.sleep(ms);
 | 
					        if(ms > 0) uBit.sleep(ms);
 | 
				
			||||||
        uBit.soundmotor.Sound_Off();
 | 
					        uBit.soundmotor.soundOff();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Plays a tone through ``speaker``.
 | 
				
			||||||
 | 
					     * @param frequency pitch of the tone to play in Hertz (Hz)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=music/ring-tone weight=80
 | 
				
			||||||
 | 
					    //% blockId=device_ring block="ring tone (Hz)|%note=device_note" icon="\uf025" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="speaker"
 | 
				
			||||||
 | 
					   void ringTone(int frequency) {
 | 
				
			||||||
 | 
					      playTone(frequency, 0);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,9 +134,9 @@ namespace music {
 | 
				
			|||||||
     * @param frequency pitch of the tone to play in Hertz (Hz)
 | 
					     * @param frequency pitch of the tone to play in Hertz (Hz)
 | 
				
			||||||
     * @param ms tone duration in milliseconds (ms)
 | 
					     * @param ms tone duration in milliseconds (ms)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% 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"
 | 
				
			||||||
    // export function playTone(frequency: number, ms: number): void {
 | 
					    // export function playTone(frequency: number, ms: number): void {
 | 
				
			||||||
    //     // TODO check timing
 | 
					    //     // TODO check timing
 | 
				
			||||||
    //     pins.digitalWritePin(DigitalPin.P28, 1); // switch on the motor driver
 | 
					    //     pins.digitalWritePin(DigitalPin.P28, 1); // switch on the motor driver
 | 
				
			||||||
@@ -152,13 +152,13 @@ namespace music {
 | 
				
			|||||||
    //% help=music/ring-tone weight=80
 | 
					    //% help=music/ring-tone weight=80
 | 
				
			||||||
    //% blockId=device_ring block="ring tone (Hz)|%note=device_note" icon="\uf025" blockGap=8
 | 
					    //% blockId=device_ring block="ring tone (Hz)|%note=device_note" icon="\uf025" blockGap=8
 | 
				
			||||||
    //% parts="speaker"
 | 
					    //% parts="speaker"
 | 
				
			||||||
    export function ringTone(frequency: number): void {
 | 
					    // export function ringTone(frequency: number): void {
 | 
				
			||||||
        // TODO check timing
 | 
					    //     // TODO check timing
 | 
				
			||||||
        pins.digitalWritePin(DigitalPin.P28, 1); // switch on the motor driver
 | 
					    //     pins.digitalWritePin(DigitalPin.P28, 1); // switch on the motor driver
 | 
				
			||||||
        pins.analogSetPitchPin(AnalogPin.P29);
 | 
					    //     pins.analogSetPitchPin(AnalogPin.P29);
 | 
				
			||||||
        pins.analogPitch(frequency, 0);
 | 
					    //     pins.analogPitch(frequency, 0);
 | 
				
			||||||
        pins.digitalWritePin(DigitalPin.P28, 0); // switch off the motor driver
 | 
					    //     pins.digitalWritePin(DigitalPin.P28, 0); // switch off the motor driver
 | 
				
			||||||
    }
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Rests (plays nothing) for a specified time through pin ``P0``.
 | 
					     * Rests (plays nothing) for a specified time through pin ``P0``.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -524,6 +524,18 @@ declare namespace motors {
 | 
				
			|||||||
    //% parts=dcmotor shim=motors::motorOn
 | 
					    //% parts=dcmotor shim=motors::motorOn
 | 
				
			||||||
    function motorOn(power: number): void;
 | 
					    function motorOn(power: number): void;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					declare namespace music {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Plays a tone through ``speaker`` for the given duration.
 | 
				
			||||||
 | 
					     * @param frequency pitch of the tone to play in Hertz (Hz)
 | 
				
			||||||
 | 
					     * @param ms tone duration in milliseconds (ms)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=music/play-tone weight=90
 | 
				
			||||||
 | 
					    //% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="speaker" shim=music::playTone
 | 
				
			||||||
 | 
					    function playTone(freqency: number, ms: number): void;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
declare namespace pins {
 | 
					declare namespace pins {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user