Jump to content

Speakjet - A PIC ready sound chip?


herr_prof
 Share

Recommended Posts

I've the software about 2-3 month every (second) day working on it... Only one time i got a bit trouble for minutes, which was working stabilizise til now... so i would test the fw further in future, but would be nice to get a burned PIC16F88 with new fw somewhere...

Do you think, the firmware will changed often in future?

If not, and if it isn't to complicated and you maybe order new electronic parts in future, you can add a PIC16F88 to that orderlist and burned the new firmware on it. I would send you money and you can send this chip to me with new firm... otherwise i'll ask Mike ...

Are you interessted and what would be the price? I think it would be not more expensive, if you can send me a new burnded chip instead i send my old out ... and so i can test this chip with old fw further ;) What you think? - would be nice...

Best Greets, Rio.

Link to comment
Share on other sites

  • Replies 345
  • Created
  • Last Reply

Top Posters In This Topic

my last reichelt order came yesterday, so it's a bit of a bad timing; but if you're not in any particular hurry, we can do it that way :)  (and price is free for you ;) )

and because I saw your question too late:

I guess that Mike has burned the 1.0 fw onto your PIC16F88, because I don't think he grabbed the 1.1 update from this forum page. but as I've written before, the only difference to 1.0 is that the IIC-input buffer is a bit decreased, so that chances are lower to overfill the SpeakJet's input buffer.

But I see this as a temporary fix only. The only really cool solution to it would be to connect the "Buffer-half-full" and "Buffer-full" pins of the SpeakJet to the PIC16F88 and control the buffer dynamically. That would reduce the amount of these annyoing pings one can hear from time to time if there are too many messages sent.

Cheers,

Michael

Link to comment
Share on other sites

The only really cool solution to it would be to connect the "Buffer-half-full" and "Buffer-full" pins of the SpeakJet to the PIC16F88 and control the buffer dynamically.

	btfsc	SPEAKJET_BHFULL_PORT, SPEAKJET_BHFULL_PIN

Is there a buffer full pin?

Link to comment
Share on other sites

yes looks funny, and seems that it works... ;D

PS: My K64 Modul Application makes great strides too. So please try to integrate the modifications for KII next. Let me take a look over it, before you release it... ;)

Greets Rio.

Link to comment
Share on other sites

Very innovative and great presentation! :)

I'm curious about the technical details of the hand tracker. Does it allow to scan for different gestures? And is it possible to generate 3d controller informations? Looks like you've invented the "3d beam" :)

Best Regards, Thorsten.

Link to comment
Share on other sites

i was wondering that aswell.. it seems that it detects distance to the "ceiling" and the "floor" and that it detects if there is actually something in the square.. otherwise it seems to me its just looping random stuff.. am i correct or FAR off..

Link to comment
Share on other sites

Hi friends :)

sorry for the delay, just came back from Hungary...

in the next days I will set up another working model to fix some bugs, add RIO's updates and implement one DIN for some basic hardware controls.

So; to answer your questions:

otherwise it seems to me its just looping random stuff.. am i correct or FAR off..

No' date=' you're indeed far off. There's nothing random except for the consonants.

As the SpeakJet is in phoneme mode (serial transmission with an input buffer) and it's synchronized, it may seem a bit untight, but it's absolutely realtime and interactive.

I just decoupled the consonants, 'cause the speech sounds more interesting with a larger variety of consonants.

I'm curious about the technical details of the hand tracker.

Thanks a lot for your kind words :)

In this version, there are four distance sensors (4-30cm), two on top and two at the bottom  -- in fact, the setup is a bit more complex like scribbled below, but the basic conecept is like this:

[tt]

  =    = 

  |^  ^|

  ||  ||

  ||  ||

  v|  |v

  =  =

[/tt]

I'm calculating the following numbers:

- opening state of the hands (top/bottom) => jaw state (from 'uh' to 'ah')

- relative height (max top) => pitch

- tilt (diff top) => tonge position (eg from 'err' to 'ih')

- speed (diff between the last openings) => volume and bend

I found a nice formula on the net to linearize the sensor's data. That way, the resolution decreases (from ~150..800 10bit => ~2..24 cm) but it makes sense to use that; as I am using kind of a phoneme map with 5*15 entries, it's quite sufficient and allows much better control.

An optional output of midi control messages is already implemented.

Does it allow to scan for different gestures?

And is it possible to generate 3d controller informations?

As you can see from the speed/opening calculations' date=' I think it's possible to implement quite advanced gesture controls. Maybe the sensor positioning can be improved for this purpose (in fact, I'm thinking about a real 3D-control with the sensors placed in a plane matrix and not a 2D space matrix like done in this project; but the opening of the hand as jaw-imitation was important to me this time).

I'm still using the PIC18F452 and I guess the current size of 14kB still allows some code.

By using a synchronized/timed event polling (and not the AIN-notifications), I guess the PIC's processing power should also have some additional resources. Anyway, I noticed that the Power Regulator does not get too hot, so this should also indicate that there's some space left for additional stuff...

I also think that an extension of this technology could one day be useful for those without the power of speech...

Yeah, that will definitely be the case.

One of my wishlists contains a control for the SJ-synth. Though I have not thought over this enough ;)

Best regards,

Michael

Link to comment
Share on other sites

  • 3 weeks later...

I just packed up a beta version.

There is still no DIN-Input, but I overworked lots of things.

Before releasing, I'd like to know why the first phrase sometimes gets overwritten. I implemented an input buffer control (connected SJ:D2 to Core:J14), and of course there's the handTracker. And there are 16 playmodes, modes 11 to 16 are experimental and involve mixed speech/synth control by the handTracker. You might test this by touching the AIN-pins of the Core ;D

More "premium"-features:

- auto-sync (auto master/slave detection; midiClock recognition)

- harmonisation with 20 scales included

- optimized subtractive osc-synthesis & fixed envelope settings

Also included is a setup for a KORG microKONTROL, so if you have one, you're ready to rumble immediately :)


Version History:

mbhp_iic_speakjet Firmware (PIC16F88):

v1.0. 2006-04 X First version by TK
v1.1. 2006-11 Reduced input buffer, compiled by mess
v1.2. 2007-03 X Fixed baud bug that prevented right baud sync on some startups (by AC)
Thanks to stryd_one.


kII main application (PIC18F452):

v0.1.0 2006-05 First version
v0.1.1  2006-06 MIDI Control Interface for MSA
v0.1.2 2006-06 SCP Support
v0.1.3 2006-08 Added new Wrapper (MIOS_HLP_Dec2BCD-Fix)
    minor fixes
v0.1.4 2006-11 saved 4 kb by overall optimisations
(esp. note2freq handling)
    fixed note-off bugs, merged with note-on
    channel functions assignable by definitions
    improved midi-input handling
    reduced buffer on mbhp_iic_speakjet_v1_1 (thanks to mess!)
v0.1.5 2006-11 X vowel/lconsonant interface categorized by position in mouth
first public release
v0.1.6 2006-12 added AIN sensorMatrix: handTracker
    added ACSensorizer class with minimal config
v0.1.7 2006-12 improved phoneme maps, added opening/closing consonants
    fixed a bug that prevented consonants to trigger by channel notes
v0.1.8 2007-01 added new handTracker with merged sensorizer
    to save space and gain better results by a specialized sensor matrix
v0.1.9 2007-01 fixed deadband-bug, added speed detection, improved sensor matrix
v0.2.0 2007-01 added ACSyncronzier (based on mclock; added MASTER/SLAVE mode,
initializes in master mode, switches to slave if MIDI_CLOCK detected,
exits slave and switches back to master on MIDI_CLOCK timeout)
Syncronizer Features can be disabled => Gesture Polling on AIN
if enabled gestures get polled by Syncronizer within 1/16 note values
improved sensor readings & gesture detection
v0.2.1 2007-02 implemented linearizing algorithm and therefor greatly improved readings!
fixed, simplifyed and improved gesture detection
fixed syncronizer measure-overflow
fixed mclock bpm local variable shadowing
simplified cm-conversion and opening state (removed open bug)
v0.2.2 2007-02 added manual transmission mode to reduce IIC_start/stop transmissions
added UpdateLock() to prevent abortion of played phrases
experimented with buffer clearance for smoother vowel-smearings
improved tongue (is now roll)
improved release detection with higher resolution in the lower range
auto-presenter: hard-resets SJ every x measures (garbage cleaner) &
triggers startup message on idle) -> see ACSyncronizer.h: CTR_MEASURE_MAX
fixed Sync-Bug where triggers did not work inside the Timer() function
quantized events now poll properly each x clockTick (1/4, 1/8, 1/16, 1/32)
re-added bending (related to speed)
ACSim_Console or ACSim_Handtracker now work both within the same Xcode project
ACSim_Handtracker now contains a GlobalTracker panel to watch variables
Harmonizer defaults to H-Spanish (international: B-Spanish)
added randomizer to decouple the consonants from jaw opening
v0.2.3 2007-03 cleanup, added cycling startup message option
checked with new handTracker hardware and Amp Circuit
v0.2.4 2007-04 X fixed a bug where the SJ could stop enunciating when speed dropped to 0
cleaned up and reordered MIDI Output of sensor matrix values
added ACMidiProtocol to enable automatic harmony change requests
quantize values (ACSyncronizer) can now be changed dynamically by MIDI
the Speakjet now does a hard-reset each x bars; improved startup messages
after resets (added small delay). This should be quite secure for exhibitions.
first experimental speech output modes (additional OSC manipulations)
added random harmony function
added Buffer Half Full Check and IIC transmission lock (SJ:D2 -> Core:J14)
fixed & improved OSCSynthesis (partly based on suggestions by RIO, thnx)
rewrote ENV control and added ENV options for OSCs 4/5
fixed NOTE_OFF bug when harmonising synth input
added bpm set tempo by midi cc (60..187 bpm); only accepted if master

X release versions
[/code]

download kII 0.2.4. beta (pre-release)

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

(717 kB, sources included, of course)

Any Feedback welcome!

Cheers,

Michael

Link to comment
Share on other sites

1. Lässt sich leider nicht für die anderen Einstellungen (z.B. AIN = 0) compilieren..

2. Nach Raufladen der funktionierenden Einstellung (AIN = 1, SYNC = 1) wird die READY Phrase durch two, one ersetzt... (na das hab ich mal gleich per phraselator wieder zurückgesetzt - sollte aber auch in der Applikation deakt. werden können) und es kommen dann komische laute im ziemlich hoher Tonhöhe, in gleichmäßigen zeitlichen Intervallen oder zufällig. sobald ich irgendeinen Channel anspiele werden die Laute auch wiedergegeben...

Also ich konnte bisjetzt noch nichts damit anfangen.

3. Ich finde (das ist aber meine subjektive Meinung und nicht so vordergründig) die Darstellung am Display (216) nicht grad so übersichtlich...zummal mir die bezeichnungen auch fremd sind.

Link to comment
Share on other sites

1. To deactivate the AINs, do not use AIN = 0, instead use KII_AIN_ENABLED = 0 in main.h

There was an error, too in this setting, but without this option, there are the best features missing (handTracker matrix and syncronizing stuff)  ::)

Anyway, I fixed it. You can download the files again.

2a. The phrases shouldn't be altered. As I already mentioned, I have to look into this further:

Before releasing, I'd like to know why the first phrase sometimes gets overwritten.

What I can say now, is that this does definitely has nothing to do with the uploading process, it most probably happens when operating with the handTracker mode set to the experimental synth channels 11 to 16.

2b. What you hear is the auto-garbage collector that resets the SpeakJet each 32 bars and then enounciates the first phrase and one of the phrases 2 to 16. This is to keep the device all time working, collect hanging notes; performing an overall cleanup.

You can deactivate this option by ACSYNC_GARBAGE_SERVICE in ACSyncronizer.h

3. The current version is optimized for a 2x8 LCD. The 2x16 is not yet adapted.

Regards,

AC

Link to comment
Share on other sites

ok i test it again...

mhh... i mean of course that:

// application defines

#define KII_AIN_ENABLED 1 // if AIN (sensorMatrix) enabled, default: 0

and i couldn't compiled the project.. if this is 0

to 1) what is that sync stuff?

to 2b) it's normal that the speakjet talks some high pitched or gliding vocals again and again?? don't understand...

Link to comment
Share on other sites

Hi Rio,

// application defines

#define KII_AIN_ENABLED            1   // if AIN (sensorMatrix) enabled, default: 0

and i couldn't compiled the project.. if this is 0

that's okay, I fixed that (dl is the same as before, but new contents)

to 1) what is that sync stuff?

There's an ACSyncronizer Class with auto master/slave mode (slave if clock signal on midi-input detected, falls back to master mode if clock stops). The handTracker is syncronized to 1/4, 1/8, 1/16 or 1/32 note values. That's one of the features I'm absolutely proud of and I will improve this concept for the next sensorizer version. Maybe a standalone MB Quantize Box, too (someday ;D )

I recorded a video yesterday showing the LCD to see and hear the possibilities; going to upload that on youtube... I'll post a note as soon as it's online!

to 2b) it's normal that the speakjet talks some high pitched or gliding vocals again and again?? don't understand...

It's normal if ACSYNC_GARBAGE_SERVICE is enabled and there are 32 bars in between (that's a noticeable delay).

However, it's not normal if you can hear one or more Sonar Pings on startup followed by a neverending gibberisch blahblah.

I do not hope for you that this is what I fear it is: you probably found out the downside of the PIC16F88 firmware version 1.0 / 1.1 and what made me cry and nearly sink in despair for a whole month –

Could you please do the following test:

if the SJ behaves in that way (one or more sonar pings at startup, then continuous grababbeling):

- leave it on

- connect by RS232 to the pc and start Phrase-A-Lator

- set the baud rate to 19200 (I think it's the connection-tab)

If it works again, it's the startup-baudrate-sync bug, where the PIC16F88 is sending the baud-sync signal too fast and the SJ is missing that. The SJ then operates with 9600 baud while the PIC18F452 sends with 19200 baud... that's what you hear...

I would not wonder if this bug finally found you, too (I would have wondered why it only should hit me). You can also try to switch the box on/off multiple times, but it will become worser, you have my word for that. With the firmware 1.2 I never experienced this behavior again (until now... knock on wood... knock...knock...knock...)

I will order at Reichelt in the next weeks, I have not forgotten sending you a new PIC16 with fw 1.2

Cheers,

Michael

Link to comment
Share on other sites

mhhh.. no sonar pings...

- set the baud rate to 19200 (I think it's the connection-tab)

i've done a connection test... wasn't a problem...but the speakjet try talking in high pitched values...something miiaaoooo or muuuu.... hhhheeeeyyy.... but i've used the compiled KII_AIN_ENABLED = 1 mode..., because the other settings doesn't compiles..

maybe that was the problem..

i don't know..

i've upload my k2mod app. again and all works fine again..

so it isn't definitly the evil bug you describe...

i'll test the new download version at evening again.

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...