A very very simple orgel.

Dependencies:   mbed

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 にサウンダー(スピーカー?) を接続してください。

/media/uploads/Rhyme/orgel_150712.jpg

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 */