-
Posts
1,291 -
Joined
-
Last visited
-
Days Won
101
Content Type
Profiles
Forums
Blogs
Gallery
Posts posted by Antichambre
-
-
Hi do you use the provided DB25 adapter cable? Check it also please.
Did you try to upload the application again?
Best regards
Bruno -
Hello,
SAM, Software Automatic Mouth, is an old "text-to-speech" program. It was released in 1982 and worked on most computers of the era.
It was recently adapted to C by Sebastian Macke as a very tiny code. Source code Github.
Here a web version of SAM, and a another one with parameters here.
I've got two Texas Instrument speech device, one "Speak and Spell" and a "Math and Spell" but they are waiting since a long time now to be modified... Too much time :/
So when I read the @imaginarionthread I couldn't help but go and look at the code.
And obviously I tried to do something with it
First thing to understand is this program is not realtime, after converting the text to phoneme, each of this phoneme are converted to formants, then each sample is pushed in a buffer.
When finished the samples buffer is written to a wave file or sent to an audio output using SDL.
But it's 22KHz 8bit sound then depending on the duration this buffer can be too much big for our small Core. But ok let's try...
For us(MIDIboxer/musician) the purpose is to play it from MIDI, the perfect thing should be to get a text, a sentence or a word associated to midi note, like a "speech kit" or one text pitched along the midi note range, but that will be for another time ;)
First thing to try is to adapt the code to MIOS32, put something in and check what it can output.
The best and easiest way for a test, is to implement SAM as a module, write some code to input text from MIOS Studio terminal then write the wave file to the SD card
This is what I did:
So I imported the github flies and put it in a new software module named "sam".
Added a sam.mk file in it to include the necessary .c and .h files.# defines additional rules for integrating the random module # enhance include path C_INCLUDE += -I $(MIOS32_PATH)/modules/sam/src # add modules to thumb sources (TODO: provide makefile option to add code to ARM sources) THUMB_SOURCE += \ $(MIOS32_PATH)/modules/sam/src/sam.c \ $(MIOS32_PATH)/modules/sam/src/debug.c \ $(MIOS32_PATH)/modules/sam/src/render.c \ $(MIOS32_PATH)/modules/sam/src/processframes.c \ $(MIOS32_PATH)/modules/sam/src/createtransitions.c \ $(MIOS32_PATH)/modules/sam/src/reciter.c # directories and files that should be part of the distribution (release) package DIST += $(MIOS32_PATH)/modules/sam/src
Then I took the inspiration from the non included main.c file to create a MIOS32 project and write a terminal.c file
Some modification were done in the SAM's files.- all printf function were replaced by MIOS32_MIDI_SendDebugMessage
- the buffer memory allocation malloc was removed and size was reduced until no more "FAULT" error ;)
-
the 8 bits samples were reduced to 4bits to meet the original SID resolution, I put it back to 8. This can be done easily after if necessary depending on our future audio output device.
After a couple of hours, it was working.
Command and text are send to SAM thru the terminal, the result is written on the SD Card
Here the menu and usage then the debug verbose:
[28337.121] SD Card status 1 [28339.122] SD Card status 3 [28339.122] SD Card CONNECTED [28342.433] help [28342.435] Welcome to the HAARP Terminal! [28342.435] Following commands are available: [28342.435] sam_usage: SAM Usage [28342.435] sam: SAM [28342.435] reset: resets the MIDIbox (!) [28342.435] help: this page [28345.225] sam_usage [28345.227] usage: sam [options] Word1 Word2 .... [28345.227] options [28345.227] -phonetic enters phonetic mode. (see below) [28345.227] -pitch number set pitch value (default=64) [28345.227] -speed number set speed value (default=72) [28345.227] -throat number set throat value (default=128) [28345.227] -mouth number set mouth value (default=128) [28345.227] -wav filename output to wav instead of libsdl [28345.228] -sing special treatment of pitch [28345.228] -debug print additional debug messages [28345.228] [28345.228] VOWELS VOICED CONSONANTS [28345.228] IY f(ee)t R red [28345.228] IH p(i)n L allow [28345.228] EH beg W away [28345.228] AE Sam W whale [28345.228] AA pot Y you [28345.228] AH b(u)dget M Sam [28345.228] AO t(al)k N man [28345.229] OH cone NX so(ng) [28345.229] UH book B bad [28345.229] UX l(oo)t D dog [28345.229] ER bird G again [28345.229] AX gall(o)n J judge [28345.229] IX dig(i)t Z zoo [28345.229] ZH plea(s)ure [28345.229] DIPHTHONGS V seven [28345.229] EY m(a)de DH (th)en [28345.230] AY h(igh) [28345.230] OY boy [28345.230] AW h(ow) UNVOICED CONSONANTS [28345.230] OW slow S Sam [28345.230] UW crew Sh fish [28345.230] F fish [28345.230] TH thin [28345.230] SPECIAL PHONEMES P poke [28345.230] UL sett(le) (=AXL) T talk [28345.230] UM astron(omy) (=AXM) K cake [28345.231] UN functi(on) (=AXN) CH speech [28345.232] Q kitt-en (glottal stop) /H a(h)ead [28359.145] sam -debug -pitch 64 -speed 128 -mouth 128 -wav TEST_OK midibox sam is great! [28359.147] text input: MIDIBOX SAM IS GREAT! [28359.147] Applying rule: [28359.147] ( [28359.147] M [28359.147] ) [28359.147] -> [28359.147] M [28359.147] [28359.147] Applying rule: [28359.147] ( [28359.147] I [28359.147] ) [28359.147] ^ [28359.148] + [28359.148] : [28359.148] # [28359.148] -> [28359.148] I [28359.148] H [28359.148] [28359.148] Applying rule: [28359.148] ( [28359.148] D [28359.148] ) [28359.148] -> [28359.148] D [28359.148] [28359.148] Applying rule: [28359.148] I [28359.148] ^ [28359.148] ( [28359.148] I [28359.148] ) [28359.148] ^ [28359.148] # [28359.148] -> [28359.148] I [28359.148] H [28359.148] [28359.148] Applying rule: [28359.148] ( [28359.148] B [28359.148] ) [28359.148] -> [28359.148] B [28359.148] [28359.148] Applying rule: [28359.148] ( [28359.148] O [28359.148] ) [28359.148] -> [28359.148] A [28359.148] A [28359.148] [28359.149] Applying rule: [28359.149] ( [28359.149] X [28359.149] ) [28359.149] -> [28359.149] K [28359.149] S [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] S [28359.149] ) [28359.149] -> [28359.149] S [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] A [28359.149] ) [28359.149] -> [28359.149] A [28359.149] E [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] M [28359.149] ) [28359.149] -> [28359.149] M [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] I [28359.149] ) [28359.149] -> [28359.149] I [28359.149] H [28359.149] [28359.149] Applying rule: [28359.149] [28359.149] : [28359.149] # [28359.149] ( [28359.149] S [28359.150] ) [28359.150] [28359.150] -> [28359.150] Z [28359.150] [28359.150] Applying rule: [28359.150] ( [28359.150] G [28359.150] R [28359.150] E [28359.150] A [28359.150] T [28359.150] ) [28359.150] -> [28359.150] G [28359.150] R [28359.150] E [28359.150] Y [28359.150] 4 [28359.150] T [28359.150] [28359.150] Applying rule: [28359.150] ( [28359.150] ! [28359.150] ) [28359.150] -> [28359.150] . [28359.150] [28359.150] phonetic input: MIHDIHBAAKS SAEM IHZ GREY4T. � [28359.150] =========================================== [28359.150] Internal Phoneme presentation: [28359.150] idx phoneme length stress [28359.150] ------------------------------ [28359.151] 0 * 0 0 [28359.151] 27 M* 0 0 [28359.151] 6 IH 0 0 [28359.151] 57 D* 0 0 [28359.151] 6 IH 0 0 [28359.151] 54 B* 0 0 [28359.151] 9 AA 0 0 [28359.151] 72 K* 0 0 [28359.151] 32 S* 0 0 [28359.151] 0 * 0 0 [28359.151] 32 S* 0 0 [28359.151] 8 AE 0 0 [28359.151] 27 M* 0 0 [28359.151] 0 * 0 0 [28359.151] 6 IH 0 0 [28359.152] 38 Z* 0 0 [28359.152] 0 * 0 0 [28359.152] 60 G* 0 0 [28359.152] 23 R* 0 0 [28359.152] 48 EY 0 4 [28359.152] 69 T* 0 0 [28359.152] 1 .* 0 0 [28359.152] 0 * 0 0 [28359.154] =========================================== [28359.154] [28359.154] Parser2 [28359.154] 0: * [28359.154] 1: M* [28359.154] 2: IH [28359.154] 3: D* [28359.154] RULE: Soften T or D following vowel or ER and preceding a pause -> DX [28359.154] 4: IH [28359.154] 5: B* [28359.154] 6: AA [28359.154] 7: K* [28359.154] RULE: K <VOWEL OR DIPTHONG NOT ENDING WITH IY> -> KX <VOWEL OR DIPTHONG NOT ENDING WITH IY> [28359.154] 8: S* [28359.154] 9: * [28359.154] 10: S* [28359.154] 11: AE [28359.154] 12: M* [28359.154] 13: * [28359.154] 14: IH [28359.154] 15: Z* [28359.154] 16: * [28359.154] 17: G* [28359.154] RULE: G <VOWEL OR DIPTHONG NOT ENDING WITH IY> -> GX <VOWEL OR DIPTHONG NOT ENDING WITH IY> [28359.154] 18: R* [28359.154] 19: EY [28359.154] RULE: insert YX following dipthong ending in IY sound [28359.154] 20: YX [28359.154] 21: T* [28359.154] 22: .* [28359.154] 23: * [28359.154] RULE: Lengthen <FRICATIVE> or <VOICED> between <VOWEL> and <PUNCTUATION> by 1.5 [28359.154] PRE [28359.154] phoneme 20 (YX) length 8 [28359.154] POST [28359.154] phoneme 20 (YX) length 13 [28359.154] RULE: Lengthen <FRICATIVE> or <VOICED> between <VOWEL> and <PUNCTUATION> by 1.5 [28359.154] PRE [28359.154] phoneme 21 (T*) length 4 [28359.154] POST [28359.154] phoneme 21 (T*) length 7 [28359.154] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1 [28359.154] PRE [28359.154] phoneme 3 (DX) length 2 [28359.154] POST [28359.154] phoneme 4 (IH) length 11 [28359.154] RULE: <VOWEL> <UNVOICED PLOSIVE> - decrease vowel by 1/8th [28359.155] PRE [28359.155] phoneme 6 (AA) length 11 [28359.155] POST [28359.155] phoneme 6 (AA) length 10 [28359.155] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1 [28359.155] PRE [28359.155] phoneme 10 (S*) length 2 [28359.155] POST [28359.155] phoneme 11 (AE) length 11 [28359.155] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1 [28359.155] PRE [28359.155] phoneme 13 ( *) length 0 [28359.155] POST [28359.155] phoneme 14 (IH) length 11 [28359.155] RULE: <LIQUID CONSONANT> <DIPTHONG> - decrease by 2 [28359.155] PRE [28359.155] phoneme 18 (R*) length 10 [28359.155] POST [28359.155] phoneme 18 (R*) length 8 [28359.156] RULE: <VOWEL> <UNVOICED PLOSIVE> - decrease vowel by 1/8th [28359.156] PRE [28359.156] phoneme 20 (YX) length 13 [28359.156] POST [28359.156] phoneme 20 (YX) length 12 [28359.156] =========================================== [28359.156] Internal Phoneme presentation: [28359.156] idx phoneme length stress [28359.156] ------------------------------ [28359.156] 0 * 0 0 [28359.156] 27 M* 7 0 [28359.156] 6 IH 8 0 [28359.156] 30 DX 2 0 [28359.156] 6 IH 11 0 [28359.156] 54 B* 6 0 [28359.157] 55 ** 1 0 [28359.157] 56 ** 2 0 [28359.157] 9 AA 10 0 [28359.157] 75 KX 6 0 [28359.157] 76 ** 1 0 [28359.157] 77 ** 4 0 [28359.157] 32 S* 2 0 [28359.157] 0 * 0 0 [28359.157] 32 S* 2 0 [28359.157] 8 AE 11 0 [28359.157] 27 M* 7 0 [28359.157] 0 * 0 0 [28359.157] 6 IH 11 0 [28359.157] 38 Z* 6 0 [28359.157] 0 * 0 0 [28359.158] 63 GX 6 0 [28359.158] 64 ** 1 0 [28359.158] 65 ** 2 0 [28359.158] 23 R* 8 5 [28359.158] 48 EY 14 4 [28359.158] 21 YX 12 4 [28359.158] 69 T* 7 0 [28359.158] 70 ** 2 0 [28359.158] 71 ** 2 0 [28359.158] 1 .* 18 0 [28359.158] 254 ?? 0 [28359.158] 0 * 0 0 [28359.158] =========================================== [28359.158] [28359.159] =========================================== [28359.159] Final data for speech output: [28359.159] flags ampl1 freq1 ampl2 freq2 ampl3 freq3 pitch [28359.159] ------------------------------------------------ [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.160] 0 9 6 2 46 0 81 61 [28359.160] 0 9 10 4 59 2 87 59 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 23 96 23 151 29 102 16 [28359.160] 0 44 179 6 230 6 111 231 [28359.161] 0 0 6 0 54 0 121 61 [28359.161] 0 2 8 2 60 2 197 60 [28359.161] 0 4 11 4 66 2 17 59 [28359.161] 0 11 14 8 72 4 93 57 [28359.161] 0 11 14 8 72 4 93 57 [28359.161] 0 11 14 8 72 4 93 57 [28359.161] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 26 76 29 124 2 154 26 [28359.162] 0 9 138 14 177 6 215 251 [28359.162] 0 36 200 30 229 36 20 220 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 1 26 0 81 61 [28359.162] 0 0 6 0 26 0 81 61 [28359.162] 0 0 6 0 26 0 81 61 [28359.163] 0 3 12 2 30 0 83 58 [28359.163] 0 6 19 4 35 0 86 55 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 20 65 30 47 8 89 32 [28359.164] 0 23 104 23 54 23 90 12 [28359.164] 0 9 144 16 62 17 91 248 [28359.164] 0 44 183 44 69 10 92 229 [28359.164] 0 51 222 51 76 73 93 209 [28359.164] 0 0 6 0 84 0 94 61 [28359.164] 0 0 6 0 84 0 94 61 [28359.164] 0 0 6 0 84 0 94 61 [28359.164] 0 0 6 6 84 3 94 61 [28359.164] 0 0 6 0 84 0 94 61 [28359.165] 0 0 6 0 84 0 94 61 [28359.165] 0 0 6 0 84 0 94 61 [28359.165] 0 0 6 0 133 0 95 61 [28359.165] 241 0 6 0 182 0 96 61 [28359.165] 241 0 6 0 231 0 97 61 [28359.165] 241 0 6 0 24 0 98 61 [28359.165] 241 0 6 0 73 0 99 61 [28359.166] 0 2 10 2 134 2 160 59 [28359.166] 0 4 15 4 195 2 221 57 [28359.166] 0 8 19 6 0 3 26 55 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.167] 0 15 24 13 62 4 88 52 [28359.167] 0 6 143 10 182 6 212 249 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.168] 0 9 6 2 46 0 81 61 [28359.168] 0 9 10 4 59 2 87 59 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 29 64 23 119 20 93 32 [28359.169] 0 18 114 20 166 26 93 7 [28359.169] 1 6 164 6 213 6 93 238 [28359.169] 1 66 214 73 4 86 93 213 [28359.169] 1 8 9 2 51 0 93 60 [28359.169] 1 8 9 2 51 0 93 60 [28359.169] 1 8 9 2 51 0 93 60 [28359.169] 1 29 72 2 59 0 93 28 [28359.169] 0 16 135 6 67 0 93 253 [28359.169] 0 50 198 48 75 0 93 221 [28359.169] 0 1 6 0 84 0 94 61 [28359.170] 0 1 6 0 84 0 94 61 [28359.170] 0 1 6 0 84 0 94 61 [28359.170] 0 1 6 0 84 0 94 61 [28359.170] 0 2 6 1 84 0 94 61 [28359.170] 0 0 6 0 84 0 94 61 [28359.170] 0 0 6 0 84 0 94 61 [28359.170] 0 2 9 2 139 1 149 109 [28359.170] 0 3 12 3 195 2 205 157 [28359.170] 0 5 15 4 250 2 4 206 [28359.170] 0 9 18 6 50 3 60 254 [28359.171] 0 9 18 6 50 3 60 48 [28359.171] 0 9 18 6 50 3 60 48 [28359.171] 0 9 18 6 50 3 60 48 [28359.171] 0 9 18 6 54 3 66 70 [28359.171] 0 9 18 8 58 3 72 93 [28359.171] 0 11 18 9 63 4 78 116 [28359.171] 0 11 18 11 67 4 84 139 [28359.171] 0 13 18 13 72 5 90 162 [28359.171] 0 13 18 13 72 5 90 184 [28359.171] 0 13 18 13 72 5 90 207 [28359.172] 0 13 18 13 72 5 90 230 [28359.172] 0 13 18 13 72 5 90 253 [28359.172] 0 13 18 13 72 5 90 20 [28359.172] 0 13 18 13 72 5 90 45 [28359.172] 0 13 18 13 72 5 90 46 [28359.172] 0 13 49 8 103 10 90 35 [28359.172] 0 13 81 26 135 29 90 24 [28359.172] 0 13 112 16 166 18 91 12 [28359.172] 0 13 144 6 198 10 91 1 [28359.172] 0 13 175 6 229 6 91 246 [28359.173] 0 13 207 46 5 24 92 235 [28359.173] 0 13 238 66 36 26 92 223 [28359.173] 0 13 14 9 68 4 93 84 [28359.173] 0 13 14 9 68 4 93 88 [28359.173] 0 13 14 9 68 4 93 93 [28359.173] 0 13 14 9 68 4 93 97 [28359.173] 0 13 14 9 68 4 93 102 [28359.173] 0 13 14 9 68 4 93 61 [28359.173] 0 13 14 9 68 4 93 62 [28359.173] 0 26 76 27 131 2 100 56 [28359.173] 0 9 138 16 195 6 107 51 [28359.174] 0 50 200 50 2 36 114 45 [28359.174] 0 0 6 0 66 0 121 168 [28359.174] 0 0 6 0 66 0 121 193 [28359.174] 0 0 6 0 66 0 121 219 [28359.174] 0 0 6 0 66 0 121 244 [28359.175] 0 0 6 0 66 0 121 14 [28359.175] 25 0 6 0 66 0 121 75 [28359.175] 25 0 6 0 66 0 121 76 [28359.175] 0 0 6 0 66 0 121 77 [28359.175] 0 0 9 0 66 0 177 99 [28359.176] 0 0 12 0 66 0 234 121 [28359.176] 0 0 15 0 66 0 34 144 [28359.176] 0 0 19 0 67 0 91 166 [28359.176] 0 0 19 0 67 0 91 190 [28359.176] 0 0 19 0 67 0 91 214 [28359.176] 0 0 19 0 67 0 91 238 [28359.176] 0 0 19 0 67 0 91 6 [28359.176] 0 0 19 0 67 0 91 30 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 0 0 0 0 0 0 [28359.176] 0 0 0 0 0 0 0 0 [28359.176] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] =========================================== [28359.526] TEST_OK.WAV saved
The outputted wave file:Here is the SAM software module to add in the MIOS32 module and the project to play with.
sam.zip sam_tester.zipNext step is to make it real time.
One way is to render the text first to the SD card then add a sample reader from SD card. But pitch/speed/throat and mouth parameters will not be realtime, so SAM code must be deeply changed to achive a realtime process... TODO! ;)
But we can imagine a small CS to input different speeches and map them to midi events. CC for parameters etc... the dipcoreF4 has a second USB host port which supports HID keyboard, useful for fast text input.
Then it can be outputted with a DAC, a SID or a TIA...
But that is another story... ;)-
1
-
Open a new thread in user's project please, named MIDIbox SAM, a MIDI speeching box... something like that.
I will share what I did in it... -
I had a look on the code, it's more complicated than just add some SAM files. You will need to understand an maybe adapt/modify the necessary parts(files) and create Input/Output interfacing, check ram memory needed etc...
For us it must be realtime process... But as a start: For input the easiest first way is to use MIOS-Studio Terminal for SAM commands, and output wave file to the SD card. It's not real-time but just an example.
Something like that:[28337.121] SD Card status 1 [28339.122] SD Card status 3 [28339.122] SD Card CONNECTED [28342.433] help [28342.435] Welcome to the HAARP Terminal! [28342.435] Following commands are available: [28342.435] sam_usage: SAM Usage [28342.435] sam: SAM [28342.435] reset: resets the MIDIbox (!) [28342.435] help: this page [28345.225] sam_usage [28345.227] usage: sam [options] Word1 Word2 .... [28345.227] options [28345.227] -phonetic enters phonetic mode. (see below) [28345.227] -pitch number set pitch value (default=64) [28345.227] -speed number set speed value (default=72) [28345.227] -throat number set throat value (default=128) [28345.227] -mouth number set mouth value (default=128) [28345.227] -wav filename output to wav instead of libsdl [28345.228] -sing special treatment of pitch [28345.228] -debug print additional debug messages [28345.228] [28345.228] VOWELS VOICED CONSONANTS [28345.228] IY f(ee)t R red [28345.228] IH p(i)n L allow [28345.228] EH beg W away [28345.228] AE Sam W whale [28345.228] AA pot Y you [28345.228] AH b(u)dget M Sam [28345.228] AO t(al)k N man [28345.229] OH cone NX so(ng) [28345.229] UH book B bad [28345.229] UX l(oo)t D dog [28345.229] ER bird G again [28345.229] AX gall(o)n J judge [28345.229] IX dig(i)t Z zoo [28345.229] ZH plea(s)ure [28345.229] DIPHTHONGS V seven [28345.229] EY m(a)de DH (th)en [28345.230] AY h(igh) [28345.230] OY boy [28345.230] AW h(ow) UNVOICED CONSONANTS [28345.230] OW slow S Sam [28345.230] UW crew Sh fish [28345.230] F fish [28345.230] TH thin [28345.230] SPECIAL PHONEMES P poke [28345.230] UL sett(le) (=AXL) T talk [28345.230] UM astron(omy) (=AXM) K cake [28345.231] UN functi(on) (=AXN) CH speech [28345.232] Q kitt-en (glottal stop) /H a(h)ead [28359.145] sam -debug -pitch 64 -speed 128 -mouth 128 -wav TEST_OK midibox sam is great! [28359.147] text input: MIDIBOX SAM IS GREAT! [28359.147] Applying rule: [28359.147] ( [28359.147] M [28359.147] ) [28359.147] -> [28359.147] M [28359.147] [28359.147] Applying rule: [28359.147] ( [28359.147] I [28359.147] ) [28359.147] ^ [28359.148] + [28359.148] : [28359.148] # [28359.148] -> [28359.148] I [28359.148] H [28359.148] [28359.148] Applying rule: [28359.148] ( [28359.148] D [28359.148] ) [28359.148] -> [28359.148] D [28359.148] [28359.148] Applying rule: [28359.148] I [28359.148] ^ [28359.148] ( [28359.148] I [28359.148] ) [28359.148] ^ [28359.148] # [28359.148] -> [28359.148] I [28359.148] H [28359.148] [28359.148] Applying rule: [28359.148] ( [28359.148] B [28359.148] ) [28359.148] -> [28359.148] B [28359.148] [28359.148] Applying rule: [28359.148] ( [28359.148] O [28359.148] ) [28359.148] -> [28359.148] A [28359.148] A [28359.148] [28359.149] Applying rule: [28359.149] ( [28359.149] X [28359.149] ) [28359.149] -> [28359.149] K [28359.149] S [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] S [28359.149] ) [28359.149] -> [28359.149] S [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] A [28359.149] ) [28359.149] -> [28359.149] A [28359.149] E [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] M [28359.149] ) [28359.149] -> [28359.149] M [28359.149] [28359.149] Applying rule: [28359.149] ( [28359.149] I [28359.149] ) [28359.149] -> [28359.149] I [28359.149] H [28359.149] [28359.149] Applying rule: [28359.149] [28359.149] : [28359.149] # [28359.149] ( [28359.149] S [28359.150] ) [28359.150] [28359.150] -> [28359.150] Z [28359.150] [28359.150] Applying rule: [28359.150] ( [28359.150] G [28359.150] R [28359.150] E [28359.150] A [28359.150] T [28359.150] ) [28359.150] -> [28359.150] G [28359.150] R [28359.150] E [28359.150] Y [28359.150] 4 [28359.150] T [28359.150] [28359.150] Applying rule: [28359.150] ( [28359.150] ! [28359.150] ) [28359.150] -> [28359.150] . [28359.150] [28359.150] phonetic input: MIHDIHBAAKS SAEM IHZ GREY4T. � [28359.150] =========================================== [28359.150] Internal Phoneme presentation: [28359.150] idx phoneme length stress [28359.150] ------------------------------ [28359.151] 0 * 0 0 [28359.151] 27 M* 0 0 [28359.151] 6 IH 0 0 [28359.151] 57 D* 0 0 [28359.151] 6 IH 0 0 [28359.151] 54 B* 0 0 [28359.151] 9 AA 0 0 [28359.151] 72 K* 0 0 [28359.151] 32 S* 0 0 [28359.151] 0 * 0 0 [28359.151] 32 S* 0 0 [28359.151] 8 AE 0 0 [28359.151] 27 M* 0 0 [28359.151] 0 * 0 0 [28359.151] 6 IH 0 0 [28359.152] 38 Z* 0 0 [28359.152] 0 * 0 0 [28359.152] 60 G* 0 0 [28359.152] 23 R* 0 0 [28359.152] 48 EY 0 4 [28359.152] 69 T* 0 0 [28359.152] 1 .* 0 0 [28359.152] 0 * 0 0 [28359.154] =========================================== [28359.154] [28359.154] Parser2 [28359.154] 0: * [28359.154] 1: M* [28359.154] 2: IH [28359.154] 3: D* [28359.154] RULE: Soften T or D following vowel or ER and preceding a pause -> DX [28359.154] 4: IH [28359.154] 5: B* [28359.154] 6: AA [28359.154] 7: K* [28359.154] RULE: K <VOWEL OR DIPTHONG NOT ENDING WITH IY> -> KX <VOWEL OR DIPTHONG NOT ENDING WITH IY> [28359.154] 8: S* [28359.154] 9: * [28359.154] 10: S* [28359.154] 11: AE [28359.154] 12: M* [28359.154] 13: * [28359.154] 14: IH [28359.154] 15: Z* [28359.154] 16: * [28359.154] 17: G* [28359.154] RULE: G <VOWEL OR DIPTHONG NOT ENDING WITH IY> -> GX <VOWEL OR DIPTHONG NOT ENDING WITH IY> [28359.154] 18: R* [28359.154] 19: EY [28359.154] RULE: insert YX following dipthong ending in IY sound [28359.154] 20: YX [28359.154] 21: T* [28359.154] 22: .* [28359.154] 23: * [28359.154] RULE: Lengthen <FRICATIVE> or <VOICED> between <VOWEL> and <PUNCTUATION> by 1.5 [28359.154] PRE [28359.154] phoneme 20 (YX) length 8 [28359.154] POST [28359.154] phoneme 20 (YX) length 13 [28359.154] RULE: Lengthen <FRICATIVE> or <VOICED> between <VOWEL> and <PUNCTUATION> by 1.5 [28359.154] PRE [28359.154] phoneme 21 (T*) length 4 [28359.154] POST [28359.154] phoneme 21 (T*) length 7 [28359.154] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1 [28359.154] PRE [28359.154] phoneme 3 (DX) length 2 [28359.154] POST [28359.154] phoneme 4 (IH) length 11 [28359.154] RULE: <VOWEL> <UNVOICED PLOSIVE> - decrease vowel by 1/8th [28359.155] PRE [28359.155] phoneme 6 (AA) length 11 [28359.155] POST [28359.155] phoneme 6 (AA) length 10 [28359.155] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1 [28359.155] PRE [28359.155] phoneme 10 (S*) length 2 [28359.155] POST [28359.155] phoneme 11 (AE) length 11 [28359.155] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1 [28359.155] PRE [28359.155] phoneme 13 ( *) length 0 [28359.155] POST [28359.155] phoneme 14 (IH) length 11 [28359.155] RULE: <LIQUID CONSONANT> <DIPTHONG> - decrease by 2 [28359.155] PRE [28359.155] phoneme 18 (R*) length 10 [28359.155] POST [28359.155] phoneme 18 (R*) length 8 [28359.156] RULE: <VOWEL> <UNVOICED PLOSIVE> - decrease vowel by 1/8th [28359.156] PRE [28359.156] phoneme 20 (YX) length 13 [28359.156] POST [28359.156] phoneme 20 (YX) length 12 [28359.156] =========================================== [28359.156] Internal Phoneme presentation: [28359.156] idx phoneme length stress [28359.156] ------------------------------ [28359.156] 0 * 0 0 [28359.156] 27 M* 7 0 [28359.156] 6 IH 8 0 [28359.156] 30 DX 2 0 [28359.156] 6 IH 11 0 [28359.156] 54 B* 6 0 [28359.157] 55 ** 1 0 [28359.157] 56 ** 2 0 [28359.157] 9 AA 10 0 [28359.157] 75 KX 6 0 [28359.157] 76 ** 1 0 [28359.157] 77 ** 4 0 [28359.157] 32 S* 2 0 [28359.157] 0 * 0 0 [28359.157] 32 S* 2 0 [28359.157] 8 AE 11 0 [28359.157] 27 M* 7 0 [28359.157] 0 * 0 0 [28359.157] 6 IH 11 0 [28359.157] 38 Z* 6 0 [28359.157] 0 * 0 0 [28359.158] 63 GX 6 0 [28359.158] 64 ** 1 0 [28359.158] 65 ** 2 0 [28359.158] 23 R* 8 5 [28359.158] 48 EY 14 4 [28359.158] 21 YX 12 4 [28359.158] 69 T* 7 0 [28359.158] 70 ** 2 0 [28359.158] 71 ** 2 0 [28359.158] 1 .* 18 0 [28359.158] 254 ?? 0 [28359.158] 0 * 0 0 [28359.158] =========================================== [28359.158] [28359.159] =========================================== [28359.159] Final data for speech output: [28359.159] flags ampl1 freq1 ampl2 freq2 ampl3 freq3 pitch [28359.159] ------------------------------------------------ [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.159] 0 9 6 2 46 0 81 61 [28359.160] 0 9 6 2 46 0 81 61 [28359.160] 0 9 10 4 59 2 87 59 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 11 14 8 72 4 93 57 [28359.160] 0 23 96 23 151 29 102 16 [28359.160] 0 44 179 6 230 6 111 231 [28359.161] 0 0 6 0 54 0 121 61 [28359.161] 0 2 8 2 60 2 197 60 [28359.161] 0 4 11 4 66 2 17 59 [28359.161] 0 11 14 8 72 4 93 57 [28359.161] 0 11 14 8 72 4 93 57 [28359.161] 0 11 14 8 72 4 93 57 [28359.161] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 11 14 8 72 4 93 57 [28359.162] 0 26 76 29 124 2 154 26 [28359.162] 0 9 138 14 177 6 215 251 [28359.162] 0 36 200 30 229 36 20 220 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 0 26 0 81 61 [28359.162] 0 2 6 1 26 0 81 61 [28359.162] 0 0 6 0 26 0 81 61 [28359.162] 0 0 6 0 26 0 81 61 [28359.163] 0 3 12 2 30 0 83 58 [28359.163] 0 6 19 4 35 0 86 55 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 15 26 11 40 1 89 51 [28359.163] 0 20 65 30 47 8 89 32 [28359.164] 0 23 104 23 54 23 90 12 [28359.164] 0 9 144 16 62 17 91 248 [28359.164] 0 44 183 44 69 10 92 229 [28359.164] 0 51 222 51 76 73 93 209 [28359.164] 0 0 6 0 84 0 94 61 [28359.164] 0 0 6 0 84 0 94 61 [28359.164] 0 0 6 0 84 0 94 61 [28359.164] 0 0 6 6 84 3 94 61 [28359.164] 0 0 6 0 84 0 94 61 [28359.165] 0 0 6 0 84 0 94 61 [28359.165] 0 0 6 0 84 0 94 61 [28359.165] 0 0 6 0 133 0 95 61 [28359.165] 241 0 6 0 182 0 96 61 [28359.165] 241 0 6 0 231 0 97 61 [28359.165] 241 0 6 0 24 0 98 61 [28359.165] 241 0 6 0 73 0 99 61 [28359.166] 0 2 10 2 134 2 160 59 [28359.166] 0 4 15 4 195 2 221 57 [28359.166] 0 8 19 6 0 3 26 55 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.166] 0 15 24 13 62 4 88 52 [28359.167] 0 15 24 13 62 4 88 52 [28359.167] 0 6 143 10 182 6 212 249 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.167] 0 9 6 2 46 0 81 61 [28359.168] 0 9 6 2 46 0 81 61 [28359.168] 0 9 10 4 59 2 87 59 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 11 14 8 72 4 93 57 [28359.168] 0 29 64 23 119 20 93 32 [28359.169] 0 18 114 20 166 26 93 7 [28359.169] 1 6 164 6 213 6 93 238 [28359.169] 1 66 214 73 4 86 93 213 [28359.169] 1 8 9 2 51 0 93 60 [28359.169] 1 8 9 2 51 0 93 60 [28359.169] 1 8 9 2 51 0 93 60 [28359.169] 1 29 72 2 59 0 93 28 [28359.169] 0 16 135 6 67 0 93 253 [28359.169] 0 50 198 48 75 0 93 221 [28359.169] 0 1 6 0 84 0 94 61 [28359.170] 0 1 6 0 84 0 94 61 [28359.170] 0 1 6 0 84 0 94 61 [28359.170] 0 1 6 0 84 0 94 61 [28359.170] 0 2 6 1 84 0 94 61 [28359.170] 0 0 6 0 84 0 94 61 [28359.170] 0 0 6 0 84 0 94 61 [28359.170] 0 2 9 2 139 1 149 109 [28359.170] 0 3 12 3 195 2 205 157 [28359.170] 0 5 15 4 250 2 4 206 [28359.170] 0 9 18 6 50 3 60 254 [28359.171] 0 9 18 6 50 3 60 48 [28359.171] 0 9 18 6 50 3 60 48 [28359.171] 0 9 18 6 50 3 60 48 [28359.171] 0 9 18 6 54 3 66 70 [28359.171] 0 9 18 8 58 3 72 93 [28359.171] 0 11 18 9 63 4 78 116 [28359.171] 0 11 18 11 67 4 84 139 [28359.171] 0 13 18 13 72 5 90 162 [28359.171] 0 13 18 13 72 5 90 184 [28359.171] 0 13 18 13 72 5 90 207 [28359.172] 0 13 18 13 72 5 90 230 [28359.172] 0 13 18 13 72 5 90 253 [28359.172] 0 13 18 13 72 5 90 20 [28359.172] 0 13 18 13 72 5 90 45 [28359.172] 0 13 18 13 72 5 90 46 [28359.172] 0 13 49 8 103 10 90 35 [28359.172] 0 13 81 26 135 29 90 24 [28359.172] 0 13 112 16 166 18 91 12 [28359.172] 0 13 144 6 198 10 91 1 [28359.172] 0 13 175 6 229 6 91 246 [28359.173] 0 13 207 46 5 24 92 235 [28359.173] 0 13 238 66 36 26 92 223 [28359.173] 0 13 14 9 68 4 93 84 [28359.173] 0 13 14 9 68 4 93 88 [28359.173] 0 13 14 9 68 4 93 93 [28359.173] 0 13 14 9 68 4 93 97 [28359.173] 0 13 14 9 68 4 93 102 [28359.173] 0 13 14 9 68 4 93 61 [28359.173] 0 13 14 9 68 4 93 62 [28359.173] 0 26 76 27 131 2 100 56 [28359.173] 0 9 138 16 195 6 107 51 [28359.174] 0 50 200 50 2 36 114 45 [28359.174] 0 0 6 0 66 0 121 168 [28359.174] 0 0 6 0 66 0 121 193 [28359.174] 0 0 6 0 66 0 121 219 [28359.174] 0 0 6 0 66 0 121 244 [28359.175] 0 0 6 0 66 0 121 14 [28359.175] 25 0 6 0 66 0 121 75 [28359.175] 25 0 6 0 66 0 121 76 [28359.175] 0 0 6 0 66 0 121 77 [28359.175] 0 0 9 0 66 0 177 99 [28359.176] 0 0 12 0 66 0 234 121 [28359.176] 0 0 15 0 66 0 34 144 [28359.176] 0 0 19 0 67 0 91 166 [28359.176] 0 0 19 0 67 0 91 190 [28359.176] 0 0 19 0 67 0 91 214 [28359.176] 0 0 19 0 67 0 91 238 [28359.176] 0 0 19 0 67 0 91 6 [28359.176] 0 0 19 0 67 0 91 30 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 19 0 67 0 91 55 [28359.176] 0 0 0 0 0 0 0 0 [28359.176] 0 0 0 0 0 0 0 0 [28359.176] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.177] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.178] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.179] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.180] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.181] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.182] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.183] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.184] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] 0 0 0 0 0 0 0 0 [28359.185] =========================================== [28359.526] TEST_OK.WAV saved
-
1
-
-
SAM is an independant program, no need of a SID, the SID was used on C64 as DAC.
But it was working on Apple, Atari etc...
But good news it's a C source code you can embed onto a MIDIbox Core, you just need a DAC, an audio output. -
Beauty! You will sell it quickly.
-
Hello,
Try also to change the speed:
https://community.nxp.com/t5/LPCXpresso-IDE/Change-emualtor-speed-in-quot-program-flash-quot/m-p/566246Brest regards
Bruno -
Hi Flavio,
The enclosure is still one of the two prototypes Adrian sent me. They are not *perfect* ;)
Don't worry, the first *perfect* one is for you... I know it's long but I currently have a lot of work and the covid don't make things easy.
Best regards
Bruno
PS: And thank you I love Gus Gus, that's a great compliment -
Quick test for CC automation.
The HAARP is only connected to my laptop and Ableton Live is running. Live gives the sync.
Only the Drum Track is programmed. I play with 4 differents clips.
There's 3 synth used, BAss, Saw and Choir they are some of the basic provided with Ableton, no sequence, direct input are activated on the synth tracks.
Preset, Mute change, and some of the parameters of the HAARP are automated, by a previous MIDI record.-
1
-
-
Sounds good!
-
-
On 1/30/2021 at 3:44 PM, Altitude said:
nice. Need to start paying more attention here, lots of great projects slipping under the radar
Thanks!
I spent my free time of the two last month to get the firmware I wanted for it, that's done
I started to write the manual during few days before leaving France for work but it seems coding in C is easier than setting a page or a column break in word software!ahah!
Best regards
Bruno
-
Did you add the module in the makefile?
# WS2812 RGB LED strip driver include $(MIOS32_PATH)/modules/ws2812/ws2812.mk
-
18 minutes ago, Phatline said:
now Display1 stays dark, it is connected to Pin 33, PB12-J15.CS1 (it was working bevore)
I didn't touch that
Be sure the MIOS32_LCD is universal, I know you put the values in MIOS32_config but try also to set them with booloader updater help, set lcd_type too... -
10 hours ago, Phatline said:
i doesnt Activated "Midi via USB" since config is:
#define MIOS32_USE_MIDI #define MIOS32_USE_UART #define MIOS32_USE_UART_MIDI #define MIOS32_UART_NUM 1 #define MIOS32_UART0_ASSIGNMENT 1 //1=Midi, 0= Disabled, 2= COM #define MIOS32_UART1_ASSIGNMENT 0 #define MIOS32_UART2_ASSIGNMENT 0 #define MIOS32_UART3_ASSIGNMENT 0
(right?)
#define MIOS32_UART_NUM 1
This line is enough.
-
Please pull changes from repo and retry...
I did something wron last time but corrected it.
There was an issue with usb decriptor.
-
You can use the routine of the Seq:
No need of a string variable.///////////////////////////////////////////////////////////////////////////// // Returns the 8bit pattern of a hexadecimal 4bit value // The dot will be set if bit 7 of this value is set ///////////////////////////////////////////////////////////////////////////// s32 SEQ_LED_DigitPatternGet(u8 value) { const u8 led_digits_decoded[16] = { // a // --- // ! ! // f! g !b // --- // ! ! // e! !c // --- // d h // 1 = on, 0 = off // NOTE: the dod (h) will be set automatically by the driver above when bit 7 is set // habc defg 0x7e, // 0111 1110 0x30, // 0011 0000 0x6d, // 0110 1101 0x79, // 0111 1001 0x33, // 0011 0011 0x5b, // 0101 1011 0x5f, // 0101 1111 0x70, // 0111 0000 0x7f, // 0111 1111 0x7b, // 0111 1011 0x77, // 0111 0111 0x1f, // 0001 1111 0x4e, // 0100 1110 0x3d, // 0011 1101 0x4f, // 0100 1111 0x47, // 0100 0111 }; return led_digits_decoded[value & 0xf] | (value & 0x80); }
///////////////////////////////////////////////////////////////////////////// // This hook is called before the shift register chain is scanned ///////////////////////////////////////////////////////////////////////////// void APP_SRIO_ServicePrepare(void) { static u8 led_digit_ctr = 0; if( ++led_digit_ctr >= 7 ) led_digit_ctr = 0; u8 inversion_mask = (COMMON_PIN_DIGITx==CATHODE) ? 0xff : 0x00; u8 common_enable = (COMMON_PIN_DIGITx==CATHODE) ? 1 : 0; float bpm = SEQ_BPM_EffectiveGet(); if( led_digit_ctr == 0 ) { u8 sr_value = SEQ_LED_DigitPatternGet(((int)(bpm*10)) % 10); MIOS32_DOUT_SRSet(SEGMENTs_REG, sr_value ^ inversion_mask); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT1, common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT2, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT3, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT4, !common_enable); } else if( led_digit_ctr == 1 ) { //u8 sr_value = SEQ_LED_DigitPatternGet((int)bpm % 10) | 0x80; // +dot u8 sr_value = SEQ_LED_DigitPatternGet((int)bpm % 10) ; // no dot MIOS32_DOUT_SRSet(SEGMENTs_REG, sr_value ^ inversion_mask); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT1, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT2, common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT3, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT4, !common_enable); } else if( led_digit_ctr == 2 ) { u8 sr_value = SEQ_LED_DigitPatternGet(((int)bpm / 10) % 10); MIOS32_DOUT_SRSet(SEGMENTs_REG, sr_value ^ inversion_mask); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT1, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT2, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT3, common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT4, !common_enable); } else if( led_digit_ctr == 3 ) { u8 sr_value = SEQ_LED_DigitPatternGet(((int)bpm / 100) % 10); MIOS32_DOUT_SRSet(SEGMENTs_REG, sr_value ^ inversion_mask); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT1, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT2, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT3, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT4, common_enable); } else { // not displaying bpm digit in this cycle, disable common pins MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT1, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT2, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT3, !common_enable); MIOS32_DOUT_PinSet(COMMON_PIN_DIGIT4, !common_enable); } }
For you to give the right values to the registers and pins depending on your diagram.
Also the "DOT" can be added.
Follow the pinout for the SEGMENTs register this one: http://www.ucapps.de/midibox_seq/mbseq_v4_bpm_digits.pdf, or adapt led_digits_decoded array to your own pinout.
Always have a look in the repo cause what you're looking for is often already done somewhere ;) That's the magic here :)
Best regards
Bruno
-
13 hours ago, Meadow said:
I thought of choosing normal analog potis for the EQ and the bus section. I know they will not change their position, if I work on another project. But I think that's fine by me.
I mean analog mixing consoles worked like this for years. But, if we say I work on project A and change the positions of the potis, then work on project B, the plugins should not change any values as long as I don't touch any potis, right?No problem I thought your SSL channel strip was an hardware one, but it's a plug-in, no need of any VCA here ;)
So you can use pots or encoders. Pots need AIN modules, Encoders need DIN modules. About pots changes, there's some mode you can choose Direct/Snap/Relative/Parallax they are explained somewhere here: http://www.ucapps.de/midibox_ng_manual.html13 hours ago, Meadow said:So you would recommend to use din modules for the buttons and AINSER 64 modules for the (non?)motorfaders, right?
And the potis? Should they also be connected to AINSER modules?DIN module for switches and encoders.
DOUT for leds if required.
AIN module for faders and pots. -
Hi,
1 hour ago, Meadow said:The channel strip consists of the SSL E series eq and 8 additional potis controlling the different Bus channels.
It will be difficult to replace the rotating pots of the EQ and Busses sections. There's some motorised pots but the cost will be hudge, and they are very big. Another way is to replace them by VCA or something else like digital pots, but it depends on the mixer circuits, anyway it will be very expensive, and VCA will need AOUT to be controlled.
1 hour ago, Meadow said:I found a forum post writing about three AINSER 8 connected to a core. Is there the possibility to connect even more?
If I think of two AINSER 64 per core, this would mean I can read 128 buttons, etc with one core.
So I would need 10 cores for the not motorized knobs etc alone.
Is this possible? Can I connect 10 cores all via usb to my pc and program them to one big controller?You can use DIN modules for switches and DOUT for LEDs, you can also use matricing too, to save some money and limit the size of your project.
You don't need so much AIN modules and Cores.
Keep the AIN modules for the faders... And for the pots if you decide to use VCA(or other) to automate your EQ and Busses sections.
Best regards
Bruno -
http://m.bareille.free.fr/midithrubox/midithrubox.htm
One buffer can support 12 input buffers, without too much capacitive load. Almost if it's on the same board, I'm pretty sure.
-
Except that I pretty sure you can remove some of the schmitt inverter buffers, you can do this. ;)
If the target MIDI devices have different MIDI channels they will receive separated Voices messages.
If the target MIDI devices are some midibox cores then just change their ID, as they can receive different SYSEX too. -
15 hours ago, Karg said:
I manage to send MMC message (currently MPC Live), but have not managed to receive them. Similarly, I do not manage to receive notes, and whatever I try to send to the Seq does not show up on the Midi Monitor.
MIDI Machine Control is not supported by the SEQ, it's a sub layer of the MIDI norm which is not implemented. Of course the SEQ can receive/send SPP and Realtime messages like start stop continue, midi clock etc..
More than that I think the MPC is not a regular USB MIDI Device and if it's the case it's via an internal USB HUB that the seq does not support.
Then just use regular MIDI DIN connection between the seq and the MPC, this will work.-
1
-
-
43 minutes ago, Phatline said:
is the jumper on the BOTTOM of the Dipcore?
yes VBAT smd jumper, just put a bit of solder to close it.
-
@Phatline close the VBAT jumper, on the bottom side if you use the pin 32 as 3v3 output.
MIDIbox TIA - Atari 2600 Synth
in MIDIbox User Projects
Posted · Edited by Antichambre
@Keeze Could you share your illustration as I can add it to the other