A very very simple orgel.
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を引くと♭の音程になります。
tune.h@1:f0f27eb31eec, 2015-07-12 (annotated)
- Committer:
- Rhyme
- Date:
- Sun Jul 12 01:36:42 2015 +0000
- Revision:
- 1:f0f27eb31eec
- Parent:
- 0:b1f4db5e5887
Commit before publishing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 1:f0f27eb31eec | 1 | /** mbed tune.h for orgel data of tune notes |
Rhyme | 1:f0f27eb31eec | 2 | * Copyright (c) 2015 Motoo Tanaka @ Design Methodology Lab |
Rhyme | 1:f0f27eb31eec | 3 | * |
Rhyme | 1:f0f27eb31eec | 4 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
Rhyme | 1:f0f27eb31eec | 5 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
Rhyme | 1:f0f27eb31eec | 6 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
Rhyme | 1:f0f27eb31eec | 7 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
Rhyme | 1:f0f27eb31eec | 8 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
Rhyme | 1:f0f27eb31eec | 9 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
Rhyme | 1:f0f27eb31eec | 10 | * THE SOFTWARE. |
Rhyme | 1:f0f27eb31eec | 11 | */ |
Rhyme | 1:f0f27eb31eec | 12 | |
Rhyme | 0:b1f4db5e5887 | 13 | #ifndef _TUNE_H_ |
Rhyme | 0:b1f4db5e5887 | 14 | #define _TUNE_H_ |
Rhyme | 0:b1f4db5e5887 | 15 | |
Rhyme | 0:b1f4db5e5887 | 16 | #if 0 |
Rhyme | 0:b1f4db5e5887 | 17 | /* |
Rhyme | 0:b1f4db5e5887 | 18 | * Sample tune: scale in C |
Rhyme | 0:b1f4db5e5887 | 19 | */ |
Rhyme | 1:f0f27eb31eec | 20 | float tempo = 100.0 ; |
Rhyme | 0:b1f4db5e5887 | 21 | unsigned char note[] = { |
Rhyme | 0:b1f4db5e5887 | 22 | 3, 5, 7, 8, // C4, D4, E4, F4, |
Rhyme | 0:b1f4db5e5887 | 23 | 10, 12, 14, 15, // G4, A4, B4, C5, |
Rhyme | 0:b1f4db5e5887 | 24 | 17, 19, 20, 22, // D5, E5, F5, G5, |
Rhyme | 0:b1f4db5e5887 | 25 | 24, 26, 27, 29, // A5, B5, C6, D6 |
Rhyme | 0:b1f4db5e5887 | 26 | 31, 32, 34, 36, // E6, F6, G6, A6 |
Rhyme | 0:b1f4db5e5887 | 27 | 38, 39, // B6, C7, |
Rhyme | 0:b1f4db5e5887 | 28 | } ; |
Rhyme | 0:b1f4db5e5887 | 29 | #endif |
Rhyme | 0:b1f4db5e5887 | 30 | #if 1 |
Rhyme | 0:b1f4db5e5887 | 31 | /* |
Rhyme | 0:b1f4db5e5887 | 32 | * Sample tune: Greensleeves |
Rhyme | 0:b1f4db5e5887 | 33 | */ |
Rhyme | 1:f0f27eb31eec | 34 | float tempo = 90.0 ; |
Rhyme | 0:b1f4db5e5887 | 35 | unsigned char note[] = { |
Rhyme | 0:b1f4db5e5887 | 36 | 12, 12, // A4, A4, |
Rhyme | 0:b1f4db5e5887 | 37 | 15, 15, 15, 15, 17, 17, // C5, C5, C5, C5, D5, D5 |
Rhyme | 0:b1f4db5e5887 | 38 | 19, 19, 19, 20, 19, 19, // E5, E5, E5, F5, E5, E5 |
Rhyme | 0:b1f4db5e5887 | 39 | 17, 17, 17, 17, 14, 14, // D5, D5, D5, D5, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 40 | 10, 10, 10, 12, 14, 14, // G4, G4, G4, A4, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 41 | |
Rhyme | 0:b1f4db5e5887 | 42 | 15, 15, 15, 15, 12, 12, // C5, C5, C5, C5, A4, A4 |
Rhyme | 0:b1f4db5e5887 | 43 | 12, 12, 12, 11, 12, 12, // A4, A4, A4, G#4, A4, A4 |
Rhyme | 0:b1f4db5e5887 | 44 | 14, 14, 14, 14, 11, 11, // B4, B4, B4, B4, G#4, G#4 |
Rhyme | 0:b1f4db5e5887 | 45 | 7, 7, 7, 7, 12, 12, // E4, E4, E4, E4, A4, A4 |
Rhyme | 0:b1f4db5e5887 | 46 | |
Rhyme | 0:b1f4db5e5887 | 47 | 15, 15, 15, 15, 17, 17, // C5, C5, C5, C5, D5, D5 |
Rhyme | 0:b1f4db5e5887 | 48 | 19, 19, 19, 20, 19, 19, // E5, E5, E5, F5, E5, E5 |
Rhyme | 0:b1f4db5e5887 | 49 | 17, 17, 17, 17, 14, 14, // D5, D5, D5, D5, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 50 | 10, 10, 10, 12, 14, 14, // G4, G4, G4, A4, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 51 | |
Rhyme | 0:b1f4db5e5887 | 52 | 15, 15, 15, 14, 12, 12, // C5, C5, C5, B4, A4, A4, |
Rhyme | 0:b1f4db5e5887 | 53 | 11, 11, 11, 9, 11, 11, // G#4, G#4, G#4, F#4, G#4, G#4 |
Rhyme | 0:b1f4db5e5887 | 54 | 12, 12, 12, 12, 0, 0, // A4 , A4, A4, A4, r, r |
Rhyme | 0:b1f4db5e5887 | 55 | 0, 0, 0, 0, 0, 0, // r, r, r, r, r, r |
Rhyme | 0:b1f4db5e5887 | 56 | |
Rhyme | 0:b1f4db5e5887 | 57 | 22, 22, 22, 0, 22, 22, // G5, G5, G5, r, G5, G5, |
Rhyme | 0:b1f4db5e5887 | 58 | 22, 22, 22, 21, 19, 19, // G5, G5, G5, F#5, E5, E5, |
Rhyme | 0:b1f4db5e5887 | 59 | 17, 17, 17, 17, 14, 14, // D5, D5, D5, D5, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 60 | 10, 10, 10, 12, 14, 14, // G4, G4, G4, A4, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 61 | |
Rhyme | 0:b1f4db5e5887 | 62 | 15, 15, 15, 15, 12, 12, // C5, C5, C5, C5, A4, A4 |
Rhyme | 0:b1f4db5e5887 | 63 | 12, 12, 12, 11, 12, 12, // A4, A4, A4, G#4, A4, A4 |
Rhyme | 0:b1f4db5e5887 | 64 | 14, 14, 14, 14, 11, 11, // B4, B4, B4, B4, G#4, G#4 |
Rhyme | 0:b1f4db5e5887 | 65 | 7, 7, 7, 7, 0, 0, // E4, E4, E4, E4, A4, A4 |
Rhyme | 0:b1f4db5e5887 | 66 | |
Rhyme | 0:b1f4db5e5887 | 67 | 22, 22, 22, 0, 22, 22, // G5, G5, G5, 4, G5, G5 |
Rhyme | 0:b1f4db5e5887 | 68 | 22, 22, 22, 21, 19, 19, // G5, G5, G5, F#5, E5, E5 |
Rhyme | 0:b1f4db5e5887 | 69 | 17, 17, 17, 17, 14, 14, // D5, D5, D5, D5, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 70 | 10, 10, 10, 12, 14, 14, // G4, G4, G4, A4, B4, B4 |
Rhyme | 0:b1f4db5e5887 | 71 | |
Rhyme | 0:b1f4db5e5887 | 72 | 15, 15, 15, 14, 12, 12, // C5, C5, C5, B4, A4, A4, |
Rhyme | 0:b1f4db5e5887 | 73 | 11, 11, 11, 9, 11, 11, // G#4, G#4, G#4, F#4, G#4, G#4 |
Rhyme | 0:b1f4db5e5887 | 74 | 12, 12, 12, 12, 12, 12, // A4 , A4, A4, A4, r, r |
Rhyme | 0:b1f4db5e5887 | 75 | 0, 0, 0, 0, // r, r, r, r, DC |
Rhyme | 0:b1f4db5e5887 | 76 | } ; |
Rhyme | 0:b1f4db5e5887 | 77 | #endif |
Rhyme | 0:b1f4db5e5887 | 78 | |
Rhyme | 0:b1f4db5e5887 | 79 | int num_notes = sizeof(note)/sizeof(unsigned char) ; |
Rhyme | 0:b1f4db5e5887 | 80 | |
Rhyme | 0:b1f4db5e5887 | 81 | #endif /* _TUNE_H_ */ |