marunomaruno-memo

marunomaruno-memo

leJOS メモ サウンドファイルを鳴らす

2011年02月23日 | LEGO
■サウンドファイルを鳴らす

leJOSの Sound.playSample() メソッドは、wavファイルしか鳴らせません。
したがって、事前にwavファイルを用意する必要があります。

このとき、NXTソフトウェアがあれば、NXT用のrsoファイルがいくつか用意されています。
この、rsoファイルをwavファイルに変換するツールがあります。
下記のURLから、
Wav2Rso
というプログラムをダウンロードして使います。
名前は wav->rso ですが、rso->wav もできます。

http://bricxcc.sourceforge.net/utilities.html


---
import java.io.*;
import lejos.nxt.*;

public class PlayingFile01 {
    public static void main(String[] args) {
    	Sound.playSample(new File("Hello.wav")); // wavファイルを鳴らす
    	Sound.pause(1000);
    }
}
/*
このプログラムを動かす前に、wavファイルをNXTにダウンロードします。
  nxjupload  wavファイル名
*/
---



NXCメモ(5)

2011年02月22日 | LEGO
NXC Version 1.2.1 r3
---

■モーターのタコカウントを取得する

モーターのタコカウントを取得する関数。でも、この関数は3つとも同じ値が取得できたので、内容の違いがない。
MotorTachoCount
MotorBlockTachoCount
MotorRotationCount

ただ、MotorBlockTachoCountを使うと、違うモーターに対するものでも、MotorTachoCount、MotorBlockTachoCountの値が 0 にリセットされるので注意が必要。

---
task main() {
     OnFwd(OUT_BC, 75);
     Wait(10000);
     Off(OUT_BC);
     NumOut( 0, LCD_LINE2, MotorTachoCount(OUT_B));
     NumOut(30, LCD_LINE2, MotorBlockTachoCount(OUT_B));
     NumOut(60, LCD_LINE2, MotorRotationCount(OUT_B));
     NumOut( 0, LCD_LINE3, MotorTachoCount(OUT_C));
     NumOut(30, LCD_LINE3, MotorBlockTachoCount(OUT_C));
     NumOut(60, LCD_LINE3, MotorRotationCount(OUT_C));
     Wait(5000);
}
---


NXCメモ (4)

2011年02月17日 | LEGO
NXC Version 1.2.1 r3
---

■ 分割コンパイル

NXCでは、分割コンパイルはできそうにない。
モジュールの中に、mainタスクがないと、コンパイルエラーになる。

---
# Status: NXC code generation finished
# Error: No task named "main" exists
File "C:\util.nxc" ; line 18
---


■ long型のリテラル

サフィックス「L」が指定できない。
リテラルとしては、32768も指定できるので、問題はなさそう。


NXCメモ (3)

2011年02月16日 | LEGO
NXC Version 1.2.1 r3
---

■NXCでは、配列の初期値として、変数の値や定数(const)の値を設定できない

(例)つぎはコンパイルエラー

---
task main() {
     const int n1 = 10;
     const int n2 = 20;

     int a[2] = {n1, n2};
}
---
line 6: Error: Invalid constant expression
---


以上



NXCメモ (1)

2011年02月10日 | Weblog
NXC Version 1.2.1 r3
---

■液晶ディスプレイの行数で使うマクロ定数

---
LCD_LINE8  0
LCD_LINE7  8
LCD_LINE6 16
LCD_LINE5 24
LCD_LINE4 32
LCD_LINE3 40
LCD_LINE2 48
LCD_LINE1 56
---



■Wait()関数の引数に使えるマクロ定数

---
MS_1 1
MS_2 2
MS_3 3
MS_4 4
MS_5 5
MS_6 6
MS_7 7
MS_8 8
MS_9 9
MS_10 10
MS_20 20
MS_30 30
MS_40 40
MS_50 50
MS_60 60
MS_70 70
MS_80 80
MS_90 90
MS_100 100
MS_150 150
MS_200 200
MS_250 250
MS_300 300
MS_350 350
MS_400 400
MS_450 450
MS_500 500
MS_600 600
MS_700 700
MS_800 800
MS_900 900
SEC_1 1000
SEC_2 2000
SEC_3 3000
SEC_4 4000
SEC_5 5000
SEC_6 6000
SEC_7 7000
SEC_8 8000
SEC_9 9000
SEC_10 10000
SEC_15 15000
SEC_20 20000
SEC_30 30000
MIN_1 60000
---


■PlayToneなどの音関係で使うマクロ定数

---
FREQUENCY_MIN 220
FREQUENCY_MAX 14080
SAMPLERATE_MIN 2000
SAMPLERATE_DEFAULT 8000
SAMPLERATE_MAX 16000

TONE_A3 220
TONE_AS3 233
TONE_B3 247
TONE_C4 262
TONE_CS4 277
TONE_D4 294
TONE_DS4 311
TONE_E4 330
TONE_F4 349
TONE_FS4 370
TONE_G4 392
TONE_GS4 415
TONE_A4 440
TONE_AS4 466
TONE_B4 494
TONE_C5 523 // ド
TONE_CS5 554
TONE_D5 587 // レ
TONE_DS5 622
TONE_E5 659 // ミ
TONE_F5 698 // ファ
TONE_FS5 740
TONE_G5 784 // ソ
TONE_GS5 831
TONE_A5 880 // ラ
TONE_AS5 932
TONE_B5 988 // シ
TONE_C6 1047 // ド
TONE_CS6 1109
TONE_D6 1175
TONE_DS6 1245
TONE_E6 1319
TONE_F6 1397
TONE_FS6 1480
TONE_G6 1568
TONE_GS6 1661
TONE_A6 1760
TONE_AS6 1865
TONE_B6 1976
TONE_C7 2093
TONE_CS7 2217
TONE_D7 2349
TONE_DS7 2489
TONE_E7 2637
TONE_F7 2794
TONE_FS7 2960
TONE_G7 3136
TONE_GS7 3322
TONE_A7 3520
TONE_AS7 3729
TONE_B7 3951
---