Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
orgel, a very very simple orgel program using PWM.
To generate sound you need to connect a sounder(speaker?) to 
D2 (PTD4) and GND. 
orgel (オルゴール) PWMを使用した、とてもとても単純なオルゴール。
音を出すのには D2(PTD4) と GND にサウンダー(スピーカー?) を接続してください。
  
 
You can change tune by editing tune.h. 
There you need to specify tempo, 
 
which defines how many 4th notes per minute. 
Note: each tones in tune is a 16th.
曲を変えるのには tune.h を編集してください。
最初に tempo を設定してください。
tempo は4分音符が1分間に何回かを指定します。
ノート:tune.h で指定する音はそれぞれ16分音符となります。
float tempo = 100.0 ;
Above code is saying the tempo is 100 of 4th notes per minute. 
上記のコードでは♩=100 という設定になります。
Then you need to specify notes to compose the tune by 
writing following code. 
次に下記のコードで、曲を構成する音を記述してください。
unsigned char note[] = {
   // enter notes here as decimal values
} ;
Usable tone values are 
0 for rest 
1..49 for note from A3 to A7 
These are index value in the note[] array. 
Note: for values of each tone, please refer to tone.h and tune.h 
使用可能な音の値は 
0 休符 
1..49 A3(ラ3) から A7(ラ7) 
 
となっています。
これらは配列 note[] のインデックス値になります。
ノート:各音の具体的な値は tone.h と tune.h を御参照ください。
As you can imagine, 
note value + 1 = # 
note value - 1 = ♭ 
For example 
G4 = 10 
G♭4 = 9 
G#4 = 11 
想像つかれると思いますが、インデックス値に1を足すと# 
インデックス値から1を引くと♭の音程になります。
orgel.cpp@0:b1f4db5e5887, 2015-07-11 (annotated)
- Committer:
- Rhyme
- Date:
- Sat Jul 11 16:08:04 2015 +0000
- Revision:
- 0:b1f4db5e5887
- Child:
- 1:f0f27eb31eec
Sample tune, Greensleeves added
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Rhyme | 0:b1f4db5e5887 | 1 | #include "mbed.h" | 
| Rhyme | 0:b1f4db5e5887 | 2 | #include "tone.h" | 
| Rhyme | 0:b1f4db5e5887 | 3 | #include "tune.h" | 
| Rhyme | 0:b1f4db5e5887 | 4 | |
| Rhyme | 0:b1f4db5e5887 | 5 | /** Orgel test | 
| Rhyme | 0:b1f4db5e5887 | 6 | */ | 
| Rhyme | 0:b1f4db5e5887 | 7 | /* FRDM-KL25Z | 
| Rhyme | 0:b1f4db5e5887 | 8 | * PWM | 
| Rhyme | 0:b1f4db5e5887 | 9 | * D7: PTC9 | 
| Rhyme | 0:b1f4db5e5887 | 10 | * D6: PTC8 | 
| Rhyme | 0:b1f4db5e5887 | 11 | * D5: PTA5 | 
| Rhyme | 0:b1f4db5e5887 | 12 | * D4: PTA4 | 
| Rhyme | 0:b1f4db5e5887 | 13 | * D3: PTA12 | 
| Rhyme | 0:b1f4db5e5887 | 14 | * D2: PTD4 | 
| Rhyme | 0:b1f4db5e5887 | 15 | * D1: PTA1 | 
| Rhyme | 0:b1f4db5e5887 | 16 | * D0: PTA2 | 
| Rhyme | 0:b1f4db5e5887 | 17 | */ | 
| Rhyme | 0:b1f4db5e5887 | 18 | |
| Rhyme | 0:b1f4db5e5887 | 19 | PwmOut out1(PTD4) ; // D2 | 
| Rhyme | 0:b1f4db5e5887 | 20 | |
| Rhyme | 0:b1f4db5e5887 | 21 | // DigitalOut myled(LED1); | 
| Rhyme | 0:b1f4db5e5887 | 22 | extern unsigned char note[] ; | 
| Rhyme | 0:b1f4db5e5887 | 23 | extern int num_notes ; | 
| Rhyme | 0:b1f4db5e5887 | 24 | |
| Rhyme | 0:b1f4db5e5887 | 25 | float bpm = 100 ; /* beat per minutes */ | 
| Rhyme | 0:b1f4db5e5887 | 26 | |
| Rhyme | 0:b1f4db5e5887 | 27 | void play_tune(void) | 
| Rhyme | 0:b1f4db5e5887 | 28 | { | 
| Rhyme | 0:b1f4db5e5887 | 29 | float note_length = 60.0 / (bpm * 4.0) ; | 
| Rhyme | 0:b1f4db5e5887 | 30 | for (int i = 0 ; i < num_notes ; i++) { | 
| Rhyme | 0:b1f4db5e5887 | 31 | if (note[i] > 0) { // tone | 
| Rhyme | 0:b1f4db5e5887 | 32 | out1.write(0.5) ; | 
| Rhyme | 0:b1f4db5e5887 | 33 | out1.period_us(tone_us[note[i]]) ; | 
| Rhyme | 0:b1f4db5e5887 | 34 | } else { // rest | 
| Rhyme | 0:b1f4db5e5887 | 35 | out1.write(0.0) ; | 
| Rhyme | 0:b1f4db5e5887 | 36 | out1.period_us(0) ; | 
| Rhyme | 0:b1f4db5e5887 | 37 | } | 
| Rhyme | 0:b1f4db5e5887 | 38 | wait(note_length) ; | 
| Rhyme | 0:b1f4db5e5887 | 39 | } | 
| Rhyme | 0:b1f4db5e5887 | 40 | out1.write(0.0) ; | 
| Rhyme | 0:b1f4db5e5887 | 41 | out1.period_us(tone_us[note[0]]) ; | 
| Rhyme | 0:b1f4db5e5887 | 42 | } | 
| Rhyme | 0:b1f4db5e5887 | 43 | |
| Rhyme | 0:b1f4db5e5887 | 44 | int main() { | 
| Rhyme | 0:b1f4db5e5887 | 45 | while(1) { | 
| Rhyme | 0:b1f4db5e5887 | 46 | play_tune() ; | 
| Rhyme | 0:b1f4db5e5887 | 47 | wait(1) ; | 
| Rhyme | 0:b1f4db5e5887 | 48 | } | 
| Rhyme | 0:b1f4db5e5887 | 49 | } |