sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Definitions required for tone sequences sl@0: // sl@0: // sl@0: sl@0: // Signature definitions sl@0: #define SEQ_SIG1 0x5153 sl@0: #define SEQ_SIG2 0x434E sl@0: #define SEQ_SIG SEQ_SIG1,SEQ_SIG2, // Signature = "SQNC" ASCII sl@0: sl@0: // Commands sl@0: #define SEQ_CMD_RET -1 sl@0: #define SEQ_CMD_STARTLOOP -2, sl@0: #define SEQ_CMD_ENDLOOP -3, sl@0: sl@0: // Useful values sl@0: // Note frequencies sl@0: #define SEQ_FREQ_A0 440 sl@0: #define SEQ_FREQ_AsBf0 466 // 466.1637615 A#, Bb sl@0: #define SEQ_FREQ_B0 494 // 493.8833013 sl@0: #define SEQ_FREQ_C0 523 // 523.2511306 sl@0: #define SEQ_FREQ_CsDf0 554 // 554.365262 C#, Db, etc. sl@0: #define SEQ_FREQ_D0 587 // 587.3295358 sl@0: #define SEQ_FREQ_DsEf0 622 // 622.2539674 sl@0: #define SEQ_FREQ_E0 659 // 659.2551138 sl@0: #define SEQ_FREQ_F0 698 // 698.4564629 sl@0: #define SEQ_FREQ_FsGf0 740 // 739.9888454 sl@0: #define SEQ_FREQ_G0 784 // 783.990872 sl@0: #define SEQ_FREQ_GsAf0 831 // 830.6093952 sl@0: #define SEQ_FREQ_A1 880 sl@0: #define SEQ_FREQ_AsBf1 932 // 932.327523 sl@0: #define SEQ_FREQ_B1 988 // 987.7666025 sl@0: #define SEQ_FREQ_C1 1047 // 1046.502261 sl@0: #define SEQ_FREQ_CsDf1 1109 // 1108.730524 sl@0: #define SEQ_FREQ_D1 1175 // 1174.659072 sl@0: #define SEQ_FREQ_DsEf1 1245 // 1244.507935 sl@0: #define SEQ_FREQ_E1 1319 // 1318.510228 sl@0: #define SEQ_FREQ_F1 1397 // 1396.912926 sl@0: #define SEQ_FREQ_FsGf1 1480 // 1479.977691 sl@0: #define SEQ_FREQ_G1 1568 // 1567.981744 sl@0: #define SEQ_FREQ_GsAf1 1661 // 1661.21879 sl@0: #define SEQ_FREQ_A2 1760 sl@0: #define SEQ_FREQ_AsBf2 1865 // 1864.655046 sl@0: #define SEQ_FREQ_B2 1976 // 1975.533205 sl@0: #define SEQ_FREQ_C2 2093 // 2093.004522 sl@0: #define SEQ_FREQ_CsDf2 2217 // 2217.461048 sl@0: #define SEQ_FREQ_D2 2349 // 2349.318143 sl@0: #define SEQ_FREQ_DsEf2 2489 // 2489.01587 sl@0: #define SEQ_FREQ_E2 2673 // 2637.020455 sl@0: #define SEQ_FREQ_F2 2794 // 2793.825851 sl@0: #define SEQ_FREQ_FsGf2 2960 // 2959.955382 sl@0: #define SEQ_FREQ_G2 3136 // 3135.963488 sl@0: #define SEQ_FREQ_GsAf2 3322 // 3322.437581 sl@0: #define SEQ_FREQ_A3 3520 sl@0: #define SEQ_FREQ_AsBf3 3729 // 3729.310092 sl@0: sl@0: // Volume defines sl@0: #define SEQ_VOL_F 32767 // Forte = Loud sl@0: #define SEQ_VOL_MF 24575 // Mezzo forte = Medium loud sl@0: #define SEQ_VOL_MP 16383 // Mezzo piano = Medium soft sl@0: #define SEQ_VOL_P 8191 // Piano = Soft sl@0: sl@0: // Macros for defining sequences sl@0: #define SEQ_DATA(A) SEQ_SIG A SEQ_CMD_RET sl@0: #define SEQ_VAL(N) N, sl@0: #define SEQ_LOOP(NUMBEROFTIMES,DATA) SEQ_CMD_STARTLOOP SEQ_VAL(NUMBEROFTIMES) DATA SEQ_CMD_ENDLOOP sl@0: #define SEQ_TONE(DUR,F1,V1) SEQ_VAL(DUR) SEQ_VAL(F1) SEQ_VAL(V1) SEQ_VAL(0) SEQ_VAL(0) sl@0: #define SEQ_2TONES(DUR,F1,V1,F2,V2) SEQ_VAL(DUR) SEQ_VAL(F1) SEQ_VAL(V1) SEQ_VAL(F2) SEQ_VAL(V2) sl@0: #define SEQ_SILENCE(DUR) SEQ_VAL(DUR) SEQ_VAL(0) SEQ_VAL(0) SEQ_VAL(0) SEQ_VAL(0) sl@0: // DUR = number samples@8kHz hence 8000 = 1 second sl@0: // F1/F2 = frequency in Hz - can use note definitions above sl@0: // V1/V1 = volume in range 0-32767 - can use volume definitions above sl@0: // When playing two tones, sum of volumes should not be greater than 32767 sl@0: // e.g. can use MF+P or MP+MP sl@0: sl@0: STRUCT SEQUENCE_NAME sl@0: { sl@0: LTEXT name; // leading-byte counted text string sl@0: } sl@0: sl@0: STRUCT SEQUENCE_DATA sl@0: { sl@0: LEN WORD WORD data[]; // Array of 16bit data values sl@0: } sl@0: sl@0: STRUCT SEQUENCE_ARRAY sl@0: { sl@0: STRUCT sequences[]; sl@0: } sl@0: sl@0: RESOURCE SEQUENCE_ARRAY fixed_tone_sequence sl@0: { sl@0: // sl@0: // Contains the sequences supported by the device (with localisable names) sl@0: // sl@0: sequences = sl@0: { sl@0: SEQUENCE_NAME sl@0: { sl@0: // sl@0: // A loud piercing sequence that alternates between two toned "warbles" sl@0: // Duration: 5 seconds sl@0: // sl@0: name="Rings"; sl@0: }, sl@0: SEQUENCE_DATA sl@0: { sl@0: data = sl@0: { sl@0: SEQ_DATA sl@0: ( sl@0: SEQ_LOOP sl@0: ( sl@0: 2, sl@0: SEQ_LOOP sl@0: ( sl@0: 11, sl@0: SEQ_TONE(250,SEQ_FREQ_GsAf2,SEQ_VOL_F) sl@0: SEQ_TONE(250,SEQ_FREQ_DsEf2,SEQ_VOL_F) sl@0: ) sl@0: SEQ_LOOP sl@0: ( sl@0: 11, sl@0: SEQ_TONE(250,SEQ_FREQ_DsEf2,SEQ_VOL_F) sl@0: SEQ_TONE(250,SEQ_FREQ_GsAf1,SEQ_VOL_F) sl@0: ) sl@0: SEQ_SILENCE(6000) sl@0: ) sl@0: SEQ_SILENCE(6000) sl@0: ) sl@0: }; sl@0: }, sl@0: SEQUENCE_NAME sl@0: { sl@0: // sl@0: // A pleasant bell-like sequence based on clock chimes sl@0: // Duration: 5 seconds sl@0: // sl@0: name="Chimes"; sl@0: }, sl@0: SEQUENCE_DATA sl@0: { sl@0: data = sl@0: { sl@0: SEQ_DATA sl@0: ( sl@0: SEQ_2TONES(2500,SEQ_FREQ_E1,SEQ_VOL_MP,SEQ_FREQ_E1+5,SEQ_VOL_MP) sl@0: SEQ_2TONES(2500,SEQ_FREQ_C1,SEQ_VOL_MP,SEQ_FREQ_C1+5,SEQ_VOL_MP) sl@0: SEQ_2TONES(2500,SEQ_FREQ_D1,SEQ_VOL_MP,SEQ_FREQ_D1+5,SEQ_VOL_MP) sl@0: SEQ_2TONES(6250,SEQ_FREQ_G0,SEQ_VOL_MF,SEQ_FREQ_G0+5,SEQ_VOL_P) sl@0: SEQ_SILENCE(1250) sl@0: SEQ_2TONES(2500,SEQ_FREQ_G0,SEQ_VOL_MP,SEQ_FREQ_G0+5,SEQ_VOL_MP) sl@0: SEQ_2TONES(2500,SEQ_FREQ_D1,SEQ_VOL_MP,SEQ_FREQ_D1+5,SEQ_VOL_MP) sl@0: SEQ_2TONES(2500,SEQ_FREQ_E1,SEQ_VOL_MF,SEQ_FREQ_E1+5,SEQ_VOL_P) sl@0: SEQ_2TONES(7500,SEQ_FREQ_C1,SEQ_VOL_MP,SEQ_FREQ_C1+5,SEQ_VOL_MP) sl@0: SEQ_SILENCE(10000) sl@0: ) sl@0: }; sl@0: }, sl@0: SEQUENCE_NAME sl@0: { sl@0: // sl@0: // A quiet sequence similar to a digital watch alarm sl@0: // Duration: 2.5 seconds sl@0: // sl@0: name="Signal"; sl@0: }, sl@0: SEQUENCE_DATA sl@0: { sl@0: data = sl@0: { sl@0: SEQ_DATA sl@0: ( sl@0: SEQ_LOOP sl@0: ( sl@0: 3, sl@0: SEQ_LOOP sl@0: ( sl@0: 3, sl@0: SEQ_TONE(328,SEQ_FREQ_AsBf3,SEQ_VOL_MF) sl@0: SEQ_SILENCE(339) sl@0: ) sl@0: SEQ_SILENCE(2333) sl@0: ) sl@0: SEQ_SILENCE(6998) sl@0: ) sl@0: }; sl@0: }, sl@0: SEQUENCE_NAME sl@0: { sl@0: // sl@0: // Sounds like a fanfare played on an electric organ sl@0: // Duration: 2.6 seconds sl@0: // sl@0: name="Fanfare"; sl@0: }, sl@0: SEQUENCE_DATA sl@0: { sl@0: data = sl@0: { sl@0: SEQ_DATA sl@0: ( sl@0: SEQ_2TONES(2000,SEQ_FREQ_DsEf1,SEQ_VOL_MP,SEQ_FREQ_DsEf0,SEQ_VOL_MP) sl@0: SEQ_2TONES(2000,SEQ_FREQ_GsAf1,SEQ_VOL_MP,SEQ_FREQ_GsAf0,SEQ_VOL_MP) sl@0: SEQ_2TONES(1000,SEQ_FREQ_C2,SEQ_VOL_MP,SEQ_FREQ_C1,SEQ_VOL_MP) sl@0: SEQ_2TONES(1000,SEQ_FREQ_GsAf1,SEQ_VOL_MF,SEQ_FREQ_GsAf0,SEQ_VOL_P) sl@0: SEQ_2TONES(2000,SEQ_FREQ_DsEf1,SEQ_VOL_MP,SEQ_FREQ_DsEf0,SEQ_VOL_MP) sl@0: SEQ_2TONES(2000,SEQ_FREQ_GsAf1,SEQ_VOL_MP,SEQ_FREQ_GsAf0,SEQ_VOL_MP) sl@0: SEQ_2TONES(4000,SEQ_FREQ_C2,SEQ_VOL_MP,SEQ_FREQ_C1,SEQ_VOL_MP) sl@0: SEQ_2TONES(4000,SEQ_FREQ_GsAf1,SEQ_VOL_MF,SEQ_FREQ_GsAf0,SEQ_VOL_P) sl@0: SEQ_SILENCE(4000) sl@0: ) sl@0: }; sl@0: }, sl@0: SEQUENCE_NAME sl@0: { sl@0: // sl@0: // Pleasant two-tone chimes sl@0: // Duration: 4 seconds sl@0: // sl@0: name="Bells"; sl@0: }, sl@0: SEQUENCE_DATA sl@0: { sl@0: data = sl@0: { sl@0: SEQ_DATA sl@0: ( sl@0: SEQ_LOOP sl@0: ( sl@0: 2, sl@0: SEQ_2TONES(4000,SEQ_FREQ_E1,SEQ_VOL_MP,SEQ_FREQ_C1,SEQ_VOL_MP) sl@0: SEQ_2TONES(8000,SEQ_FREQ_C1,SEQ_VOL_MP,SEQ_FREQ_G0,SEQ_VOL_MP) sl@0: ) sl@0: SEQ_SILENCE(8000) sl@0: ) sl@0: }; sl@0: }, sl@0: SEQUENCE_NAME sl@0: { sl@0: // sl@0: // Cavalry charge sl@0: // Duration: 2 seconds sl@0: // sl@0: name="Cavalry"; sl@0: }, sl@0: SEQUENCE_DATA sl@0: { sl@0: data = sl@0: { sl@0: SEQ_DATA sl@0: ( sl@0: SEQ_LOOP sl@0: ( sl@0: 2, sl@0: SEQ_2TONES(1333,SEQ_FREQ_A2,SEQ_VOL_MP,SEQ_FREQ_A1,SEQ_VOL_MP) sl@0: SEQ_SILENCE(667) sl@0: SEQ_2TONES(333,SEQ_FREQ_A2,SEQ_VOL_MP,SEQ_FREQ_A1,SEQ_VOL_MP) sl@0: SEQ_SILENCE(333) sl@0: ) sl@0: SEQ_LOOP sl@0: ( sl@0: 2, sl@0: SEQ_2TONES(1333,SEQ_FREQ_E2,SEQ_VOL_MP,SEQ_FREQ_E1,SEQ_VOL_MP) sl@0: SEQ_SILENCE(667) sl@0: SEQ_2TONES(333,SEQ_FREQ_CsDf2,SEQ_VOL_MP,SEQ_FREQ_CsDf1,SEQ_VOL_MP) sl@0: SEQ_SILENCE(333) sl@0: ) sl@0: SEQ_2TONES(2667,SEQ_FREQ_A2,SEQ_VOL_MP,SEQ_FREQ_A1,SEQ_VOL_MP) sl@0: SEQ_SILENCE(2667) sl@0: ) sl@0: }; sl@0: } sl@0: }; sl@0: } sl@0: