generates low-fi text-to-speech audio synthesis.
| 30 | * generates low-fi text-to-speech audio synthesis. |
| 31 | */ |
| 32 | public class SAM implements DSPNodeOutput { |
| 33 | |
| 34 | private static final int[] mMIDItoSAMMap = new int[128]; |
| 35 | /* mapping MIDI pitch to SAM pitch */ |
| 36 | private float[] mBuffer; |
| 37 | private boolean mIsDoneSpeaking; |
| 38 | private float mSampleBufferCounter; |
| 39 | private float mSampleSpeed; |
| 40 | |
| 41 | static { |
| 42 | mMIDItoSAMMap[21] = 0; // A0 |
| 43 | mMIDItoSAMMap[22] = 0; // A#0 |
| 44 | mMIDItoSAMMap[23] = 0; // B0 |
| 45 | mMIDItoSAMMap[24] = 255; // C1 |
| 46 | mMIDItoSAMMap[25] = 230; // C#1 |
| 47 | mMIDItoSAMMap[26] = 210; // D1 |
| 48 | mMIDItoSAMMap[27] = 190; // D#1 |
| 49 | mMIDItoSAMMap[28] = 175; // E1 |
| 50 | mMIDItoSAMMap[29] = 165; // F1 |
| 51 | mMIDItoSAMMap[30] = 158; // F#1 |
| 52 | mMIDItoSAMMap[31] = 150; // G1 |
| 53 | mMIDItoSAMMap[32] = 142; // G#1 |
| 54 | mMIDItoSAMMap[33] = 132; // A1 |
| 55 | mMIDItoSAMMap[34] = 128; // A#1 |
| 56 | mMIDItoSAMMap[35] = 121; // B1 |
| 57 | mMIDItoSAMMap[36] = 114; // C2 |
| 58 | mMIDItoSAMMap[37] = 108; // C#2 |
| 59 | mMIDItoSAMMap[38] = 100; // D2 |
| 60 | mMIDItoSAMMap[39] = 96; // D#2 |
| 61 | mMIDItoSAMMap[40] = 90; // E2 |
| 62 | mMIDItoSAMMap[41] = 86; // F2 |
| 63 | mMIDItoSAMMap[42] = 80; // F#2 |
| 64 | mMIDItoSAMMap[43] = 76; // G2 |
| 65 | mMIDItoSAMMap[44] = 72; // G#2 |
| 66 | mMIDItoSAMMap[45] = 68; // A2 |
| 67 | mMIDItoSAMMap[46] = 64; // A#2 |
| 68 | mMIDItoSAMMap[47] = 60; // B2 |
| 69 | mMIDItoSAMMap[48] = 57; // C3 |
| 70 | mMIDItoSAMMap[49] = 54; // C#3 |
| 71 | mMIDItoSAMMap[50] = 51; // D3 |
| 72 | mMIDItoSAMMap[51] = 48; // D#3 |
| 73 | mMIDItoSAMMap[52] = 45; // E3 |
| 74 | mMIDItoSAMMap[53] = 43; // F3 |
| 75 | mMIDItoSAMMap[54] = 40; // F#3 |
| 76 | mMIDItoSAMMap[55] = 38; // G3 |
| 77 | mMIDItoSAMMap[56] = 36; // G#3 |
| 78 | mMIDItoSAMMap[57] = 34; // A3 |
| 79 | mMIDItoSAMMap[58] = 32; // A#3 |
| 80 | mMIDItoSAMMap[59] = 30; // B3 |
| 81 | mMIDItoSAMMap[60] = 28; // C4 |
| 82 | mMIDItoSAMMap[61] = 27; // C#4 |
| 83 | mMIDItoSAMMap[62] = 25; // D4 |
| 84 | mMIDItoSAMMap[63] = 24; // D#4 |
| 85 | mMIDItoSAMMap[64] = 23; // E4 |
| 86 | mMIDItoSAMMap[65] = 21; // F4 |
| 87 | mMIDItoSAMMap[66] = 20; // F#4 |
| 88 | mMIDItoSAMMap[67] = 19; // G4 |
| 89 | mMIDItoSAMMap[68] = 18; // G#4 |
nothing calls this directly
no outgoing calls
no test coverage detected