Jump to content

Speakjet - A PIC ready sound chip?


herr_prof
 Share

Recommended Posts

Hello speakjetters out there,

I'm about to finish the control application; just have to fix the recording buffer...

now I'm wondering if I forgot something, that should definitely be part of a first release:

Features:

- Full MSA and SCP Control!

- Trigger Allophones and SoundFX by Notes on CH 1
- Trigger Allophones only by Notes on CH 2
- Trigger SoundFX only by Notes on CH 3
- Change the pitch of currently played Allophones by Notes 0..59 on CH 4
- Play the 5 Oscillators by Notes on CHs 11 to 15
  OSC Level is Note Velocity!
- Experimental harmonic Multi-OSC playmode by Notes on CH 16:
  OSC Level is Note Velocity!

- Change Pitch by using the 14bit PitchBend-Wheel
- Control Bend with CH_AFTERTOUCH
- Control Speed by CC (defined)
- Control Master Volume by CC (defined)
- Send Pauses by CC (defined)
- Send Next Slow/High/Low/Fast by CC (defined)
- Control OSC-Frquencies and Levels by CC (defined)
- Control ENV-Frequency and Type by CC (defined)
- Control Distortion (OSC 4 & 5) by CC (defined)

- Fire Phrases by PRG-CH 0 to 15 or CC (defined)
- Supports System Realtime Messages START, STOP, CONTINUE, RESET
- Send PANIC by Foot & AllNotes/SoundsOFF Messages
- Record, Preview, Store, Play Phrases with 64 byte buffer

most of it already works like a charm...

;D

Link to comment
Share on other sites

  • Replies 345
  • Created
  • Last Reply

Top Posters In This Topic

I'm about to finish the control application; just have to fix the recording buffer...

now I'm wondering if I forgot something, that should definitely be part of a first release:

Wow, that's amazing. I've receive a speakjet from HVW Technologies.

I intend to use a little AZERTY keyboard and integrate it in a box. Do you thinkk that is something easily achievable in terms of software ? On the hardware side, I know it's not so complex. I aim to write the sentences to be spelled.

Cheers,

ludo

Link to comment
Share on other sites

I don't know a lot about speech synthesisers, do you guys think that it compares to the speakjet, as far as speech is concerned?

There are sound samples up now, and they're clearly not quite as high quality as the speakjet. I think that for our purposes it's probably better to use the chip as a synth

There's also a datasheet, so:

I wanna know what's up with those mystery pins :) Q?

Sounding?

Why an input for OSC1 and an output for OSC2? Is that the waveform or the frequency or what?

Q looks like chip select but I'm not sure on that... It's not explicitly explained but it is mentioned in some timing diagrams

Sounding goes high when the chip should be producing sound, I assume that's for driving a noise gate/triggering external envelopes/etc

The OSC1 and 2 are for the crystal oscillator... Bummer I hoped that's be oscillator outputs ;)

2 days till the release :) Time for a new thread anyone?

Anyway on the speakjet front.... I was thinking that a good extension would use a keyboard which would use a combination of keypresses... Like:

CTRL+A = "AY"

SHIFT+A = "AI"

WIN+A = "AH"

etc...

Maybe footpedals for volume/pitch control?

AC would something like that work?

Link to comment
Share on other sites

I intend to use a little AZERTY keyboard and integrate it in a box. Do you thinkk that is something easily achievable in terms of software ? On the hardware side, I know it's not so complex. I aim to write the sentences to be spelled.

Anyway on the speakjet front.... I was thinking that a good extension would use a keyboard which would use a combination of keypresses... Like:

CTRL+A = "AY"

SHIFT+A = "AI"

WIN+A = "AH"

etc...

Maybe footpedals for volume/pitch control?

AC would something like that work?

In general, everything is possible... the main IIC_SPEAKJET_Class is nearly finished, most of the time I'm tweaking the main class only, where the MIDI 2 SJ-Functions are handled.

I am now quite satisfied, esp. by the experimental mode to play monotimbral sounds by setting all five OSCs and the ENV to the same freq +/- 1 octave; The ENV-Controls (SIN/SAW/TRI...) sound great; there's just a tiny disharmonic freq that I don't know yet where it's coming from... but this also makes the sound a bit dirtier :)

But the MSA-pitch thingy still makes me a bit of a headache:

I'm supporting setting the Pitch by Notes. The problem with that is, that you can't set the pitch while playing a stored phrase :(

So you either have to pre-program the phrase with the right pitch (LAME!  :()

or we somehow find a way to trigger allophones in realtime in a convenient way... you know, it's not only the allophones, also the pauses and nextTone higher/lower/faster/slower are quite important to that...

so, kind of a SJ-control-control application...

It would be great to have a touchpad or a three-dimensional joystick for the vowels in correlation with some other haptic method of consonants and popping noises ???

any ideas?

ps: maybe I should release the first version now without phrase storing support; For example, if too much MIDI-message are being sent to the SJ, so that the 64-byte input buffer is overflowing, it could happen that some areas of the chip get overwritten...

and because tracking the input-buffer seems very complicated to me, because I don't know when a transmitted message has actually been completed and removed from the SJ's input buffer. Normally this doesn't happen (you have to move three or four faders simultaneously quite fast to get input buffer overflows); and if it does, you'll just hear some MSA-soundocodes which do not hurt. But the attempt of storing something without EOT or dunno what else is potentially dangerous to the chip.

So I think I'll disable this feature, but leave it in the code and up to tweakers to experiment with that by everyone's own responsibility...

Link to comment
Share on other sites

Really great work, AC!

Seems that you are one of the first guys who really makes complete applications from scratch :)

ps: maybe I should release the first version now without phrase storing support; For example, if too much MIDI-message are being sent to the SJ, so that the 64-byte input buffer is overflowing, it could happen that some areas of the chip get overwritten...

and because tracking the input-buffer seems very complicated to me, because I don't know when a transmitted message has actually been completed and removed from the SJ's input buffer. Normally this doesn't happen (you have to move three or four faders simultaneously quite fast to get input buffer overflows); and if it does, you'll just hear some MSA-soundocodes which do not hurt. But the attempt of storing something without EOT or dunno what else is potentially dangerous to the chip.

So I think I'll disable this feature, but leave it in the code and up to tweakers to experiment with that by everyone's own responsibility...

Could you please try following experiment: the transfer buffer of MBHP_IIC_MIDI has 96 bytes, which means: it can collect more data than Speakjet can process. Assumed that there are handshaking problems (D2/CTX line), a buffer full event could be prevented at the Speakjet side by making the transfer buffer of MBHP_IIC_MIDI smaller. Because in this case, the IIC slave will send retries until the buffer is free again, and this means that the PIC will also wait, so that no data can get lost.

Many words, small change: open uart.asm and set UART_TX_BUFFER_SIZE to 0x10 or 0x20 ... what happens?

(I never tried this, but currently don't have that much time to do my own experiments. I will be one of the first users of your app! :)

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 1 month later...

just to give a feedback on the last post: I haven't yet tried this suggestion, as this implies that I either have to get MPASM to work properly on my PC or GPASM on the Mac... I tried to recompile the PIC16 Firmware with GPASM some while ago, but that failed for some reason, whatsoever.

...and a vapor-ware-note ;D:

I've promised to release the code in about two months which is now; but I am still not pleased with the current version. If anyone is keen on the current version: PM me and I'll send you the sources!

Cheers!

Michael

Link to comment
Share on other sites

  • 3 weeks later...

Got this in the email today:

  New SoundGin Sound Coprocessor IC Released!

Posted by: "Ken" kenlem@maine.rr.com  kenprime2001

Wed Oct 18, 2006 8:24 pm (PST)

The SoundGin picks up where the SpeakJet left off!

http://www.speechchips.com/shop/item.asp?itemid=22

The SSG01 Sound Coprocessor (Soundgin) is a single chip 6-voice

electronic music synthesizer sound effects / voice synthesizer chip.

It produces complex sound effects, synthesizer style music and

English speech with an unlimited vocabulary. Soundgin provides wide-

range, high resolution control of pitch (frequency), tone color

(harmonic content) and dynamics (volume).

For use in manufactured electronics, educational and home projects.

The SSG01 (Soundgin) consists of six synthesizer "voices" which can

be used independently or in conjunction with each other to create

complex sounds. Each voice consists of a Tone Oscillator / Wave

Generator, an Envelope Generator, an Amplitude Modulator and

Ramping / Target controls. The Tone Oscillator controls the pitch of

the voice over a wide range. The Oscillator produces one of eight

waveforms at the selected frequency, with the unique harmonic content

of each waveform providing simple control of tone color. The volume

dynamics of the oscillator are controlled by an Amplitude Modulator

which can control by the Envelope Generator, the Ramping / Target

control or by another oscillator. When triggered , the Envelope

Generator creates an amplitude envelope with programmable rates of

increasing and decreasing volume. In addition to the six voices, two

mixers are provided to combine the waveforms outputs of the

oscillators.

Available in an 18-Pin DIP or SOIC package.

2.0 to 5.0 Volts Operation

16Khz Sample Output Rate

2400 or 9600 Baud Serial Connection

6 Independently Controlled Voices

Amplitude Modulation

Frequency Modulation

Ring Modulation

Hard Sync

ADSR Envelopes

Musical Notes

English Phonemes

Sound Morphing

In-Chip Presets

Object Class for ooPIC

Not all the info's available on the website but I bet it's an incremental update to the speakjet

Link to comment
Share on other sites

I think it's more of a branch than an update... The synthesis side of the soundgin is more advanced and I think it'd make a great synth, but it's speech is nothing on the speakjet's, which in turn has weaker synthesis... I want one of each heheh

It's interesting to see those designers go to a different company, doing something so similar in concept, and yet quite different in implementation... Can't help but wonder what's going on there... It was also very late, so I'll wait until I hear of people receiving them in working order before I grab mine. Call me paranoid but....  ;)

Anyway I think the soundgin is a project that could bear a pretty impressive outcome as a synth, but for speech, speakjet retains it's throne. Time to start a new thread maybe... Soundgin - A PIC based synth chip! ... Sounds familiar ;)

Link to comment
Share on other sites

  • 4 weeks later...

http://www.speechchips.com/shop/item.asp?itemid=22

The SSG01 Sound Coprocessor (Soundgin) is a single chip 6-voice

electronic music synthesizer sound effects / voice synthesizer chip.

It produces complex sound effects, synthesizer style music and

English speech with an unlimited vocabulary. Soundgin provides wide-

range, high resolution control of pitch (frequency), tone color

(harmonic content) and dynamics (volume).

Thanks th0mas for that link...

I'm infected by speech synthesis and ordered some speech-Chips. They have just 10$ shipping from US to Germany, that's good :)

btw: I resumed working on the SpeakJet Application... I'm currently sorting around some vowels and consonants based on their position in the mouth (did you know that "VV" is labiodental wheras "TH" is interdental ;D ?)...

...and I wanted to adapt the new buffer size for the PIC16F firmware...

But apparently I am too dumb to generate a new hex-file. I'm generating a new makefile based on (unchanged settings) in the makefile.spec, a new hex-file is generated, that is apparently nearly the same as the original one, but as soon as I try to load this hex-file in PBrenner, the app crashes :( With PBrenner NG (newer program version), I get an error "Fehler bei Bereichsprüfung" (Error in Range Check)... Do I have to adapt the linker-script? hmm...

any hint is greatly appreciated!

Cheers!

Michael

Link to comment
Share on other sites

Hey, Michaël!

that's great!! :)

...although, I got the feeling that it may be some misconfiguration in my GPASM installation  :-\

I uploaded the modified files here:

http://www.audiocommander.de/downloads/midibox/mbhp_iic_speakjet_v1_1.tgz

It's just that one line 62 in uart.asm:

62: ;; #define UART_TX_BUFFER_SIZE 0x60
63: #define UART_TX_BUFFER_SIZE 0x20

Thanx alot –

Cheers,

Michael

Link to comment
Share on other sites

Hi TK :)

its gpasm-0.13.3 beta

I just checked on sourceforge; the latest is 0.13.4

should I upgrade?

cheers,

Michael

Edit: Michaël has been so kind to compile the project; I discovered some differences to my compiled version; so I know now it has someting to do with my version of GPASM :-\  ...keep you updated!

Link to comment
Share on other sites

I'm using 0.13.3 on my Windows PC as well... just tried it on my laptop (Linux, gpasm 0.13.4) and get a different output. Strange! It makes sense to compare the listings, where the hex codes with the appr. assembly instructions are listed, but I currently haven't so much time for such checks... maybe you could try to find the differences.

Best Regards, Thorsten.

Link to comment
Share on other sites

hmm, that's really strange...

there's definitely an issue with my GPASM config.

I just upgraded to 0.13.4 but it still generates the same hex file as with 0.13.3

This is strange because I didn't have had any problems with C-projects. So it seems to be an issue with plain ASM-files only. I'm investigating this further, as soon as I have more time.

however, I just burned the hex file from mess and it works like a charm.

I noticed no more strange sounds and everything seems to work very robust. The adaption to the input-buffer of the SpeakJet is definetely a good idea!

In the meanwhile here is the converted hex-file by mess to be used as firmware for the PIC16 chip:

(many thanks for that, Michaël!!! :) )

:020000040000FA
:0200000036299F
:020008001429B9
:100010008316243098004030990083121A089030DB
:100020009800B601B501B701BA01B901BB010800DA
:100030000511051685113420342005155530990019
:100040008316981C21288312342034203420342035
:100050003420342034203420342034203420342000
:1000600034200512851508006400BC01BC0B36283D
:1000700008003708080037085F3C0800B400360A5B
:10008000603A031D603A840035060319080004082D
:10009000B600103E84003408831780008313B70A2B
:1000A0001E30BE000800B50A3508603A0319B501D4
:1000B0003508103E8400831700088313B703080037
:1000C0003B0808003B081F3C0800B8003A0A203AE9
:1000D000031D203A84003906031D71288B17380848
:1000E00065288B138B1B71280408BA00903E84008E
:1000F0003808831780008313BB0A83160C168312FB
:100100008B170800B90A3908203A0319B9013908D0
:10011000903E84001E30BD00831700088313BB038C
:10012000080064006020031D922808008316981CB4
:1001300097288312990008003E080319A228BE03DD
:100140000510A32805143D080319A928BD0385102F
:10015000AA288514080083168E140E1483123630D4
:100160009400B720831694018312B2010800203056
:10017000061B0238861B043883169300831208007E
:10018000831614088312B000301CFA28141FD328D9
:1001900083168B178B138B1BCA28141EC928831236
:1001A0001413130809291308B100B01AD828ED2830
:1001B0006220FD3E031C1417851A141731086520B0
:1001C000141FED2883168B178B138B1BE428141E2A
:1001D000E32883121413130809298C1D0929831697
:1001E00014088312B000301C09298C118B138B1B4F
:1001F000F628C6288B17B01A0129B20100300A214F
:100200000929301D08298615B20A00300A2109295A
:1002100014160800831614180B29831294139300E4
:10022000941F0E2914160800F000030E8301F1003C
:100230000408F2008C1E1F298C121A083E20831617
:100240000C1E2E2983120C1E2E2939083A06031D76
:100250002C2983160C122E298220990083127208F1
:100260008400710E8300F00E700E090003308500CB
:10027000213086008316E0308500D63086009B0151
:1002800007309C0083128316FF30810083120A0816
:1002900007388A0008201820AB2001309000831610
:1002A00020308C008D01831218121A081816C030E5
:1002B0008B00061064000C1C61290C10EC308F07B9
:1002C0009C208B138B1B61298C1D68298C11C020ED
:1002D0008B17831614088312103903196129B7206C
:1002E000392003197529532065205A2983160317CD
:1002F0008C170C140000000083128D0A03198F0A5A
:060300000C0803130800C5
:02400E004E3F23
:00000001FF

Cheers!

Michael

Link to comment
Share on other sites

Hello everybody,

in the mood for an interim report :) :

I worked a lot on the application interface the last days. I've built in phoneme maps, jaw and tongue controls and now I'm waiting for an order to check it out with a matrix of four short distance sensors to control it by hand-movements in space (like talking handpuppets...)

I'm currently adding some harmonic synthesis stuff to use the oscillators of the SJ as single-voiced mini-synth... for the puristic ones of us ;D

And I decided to drop the recording possibilities, meaning the saving possibilities in the SpeakJets EEPROM, because:

- I ordered a TTS256 speakJet compagnion chip, that receives text and shall be able to convert it by an integrated dictionary to allophone-"orders" sent to the SJ.

- The second reason is that there's a PC program that does this quite good with a predefined dictionary, no need to reinvent the wheel...

- and the last reason remains: if there's a slight error somewhere in my program, it might possibly lead to a destruction of the speakjets firmware. There is a rough buffer storage/previewer already implemented, but as I never used this the past weeks, I don't see a point in developing this further.

While working on all that, my SoundGin arrived :D

Got this in the email today:

  New SoundGin Sound Coprocessor IC Released!

After reading the (excellent!, btw) datasheet of the SoundGin, I must say that this chip seems to have a lot more cool possibilities than the SpeakJet. There's an integrated note2freq table and the OSC control seems a lot more sophisticated. It has full envelope controls (Ctrl, Atack, Decay, Release) together with a bunch of informations how to synthesize vocal similar sounds. Of course it has also predefined phonemes, but unlike the speakjet it's not so limited to simple allophone-triggering.

And finally, I really like the idea of having a simple powered device that could also be battery operated (compared to the +/-12 V FM or SID boxes)!

I will surely port the control app to the SoundGin once I finished the SJ app! :)

Cheers,

Michael

Link to comment
Share on other sites

finally!

it's done :D

...at least I think it's a nice beta-version...

http://www.midibox.org/dokuwiki/doku.php?id=midibox_speakjet

check out the new audio-example (no artistic musical stuff, just demonstrating the rough possibilities; 'cause my sensor board is not yet finished):

http://www.audiocommander.de/downloads/midibox/SpeakJet_kII_03.mp3

comments welcome!

Cheers,

Michael

ahh, nearly forgot this: I also implemented a very nice small harmonizer module ;D

to be continued...

8)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...