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を引くと♭の音程になります。
tone.h
- Committer:
- Rhyme
- Date:
- 2015-07-12
- Revision:
- 1:f0f27eb31eec
- Parent:
- 0:b1f4db5e5887
File content as of revision 1:f0f27eb31eec:
/** mbed tone.h for orgel calculated cycle lengthes for each tone * Copyright (c) 2015 Motoo Tanaka @ Design Methodology Lab * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #ifndef TONE_H #define TONE_H int tone_us[] = { 0, // r (for rest) 4546, // A3 4290, // A#3 4050, // B3 3822, // C4 3606, // C#4 3405, // D4 3214, // D#4 3034, // E4 2864, // F4 2703, // F#4 2551, // G4 2408, // G#4 2273, // A4 2145, // A#4 2025, // B4 1911, // C5 1804, // C#5 1703, // D5 1607, // D#5 1517, // E5 1432, // F5 1351, // F#5 1276, // G5 1204, // G#5 1136, // A5 1073, // A#5 1012, // B5 956, // C6 902, // C#6 851, // D6 804, // D#6 758, // E6 716, // F6 676, // F#6 638, // G6 602, // G#6 568, // A6 536, // A#6 506, // B6 478, // C7 451, // C#7 426, // D7 402, // D#7 379, // E7 358, // F7 338, // F#7 319, // G7 301, // G#7 284, // A7 } ; int num_tones = 50 ; #endif /* TONE_H */