Jump to content

MB SpeakJet K64 Modul


Rio
 Share

Recommended Posts

K64 reached 1.0 release state. It's an additional controller application for a K2 (modified v1) from AC.

You will found last version here:

http://powerhuhn.net/rio/SpeakJet/K64_v11d.zip

(currently down...back soon)

[img width=400]http://www.midibox.org/dokuwiki/lib/exe/fetch.php?w=400&cache=cache&media=http%3A%2F%2Fpowerhuhn.net%2Frio%2FSpeakJet%2FImages%2Fblackwhite.gif

What is that?

It's C64 keyboard controller unit for:

- using box as midi keyboard with additional SEQV3 remote / record support

- using box as SpeakJet Synth Controller

- using box as SpeakJet TextToSpeech Controller

features:

- playing notes on 2 keyfields (UPPER, LOWER) for seperate channels / transpose

- recording / editing SEQv3 tracks via remote

- trigger spoken text on the basis of incoming midi notes

- seperate adjust of 5 OSCs of SpeakJet

- 1 triangle LFO for CC Values

- graphical interface for Speakjet Synth

- graphical interface for Speakjet Text Input (realtime variations in speech)

- store your synth and speech patches on bankstick (32k or 64k), max. 8x

condition:

- for PIC18F452

- only for C64 Keyboard

- only for 2x40 LCD

- texttospeech for "german" language only

All infos about are here:

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

Dokumentation, tutorial, screenshots, examples are added in tutorial...

Hardware:

[img width=590]http://www.midibox.org/dokuwiki/lib/exe/fetch.php?w=590&cache=cache&media=http%3A%2F%2Fpowerhuhn.net%2Frio%2FSpeakJet%2FImages%2FK64-hardware.gif

At time K2mod (a modification of k2 application from audiocommander) is needed instead K2. AC will try to add that features in his application in further version.

Thanks to AudioCommander for his great preparatory work and support.

Thanks to Bill for his C64 Keyboard implementation.

Link to comment
Share on other sites

thxs for both comments :)

i'll add a tutorial "how to create synth patches" and "how to create german text patches" with several options and listening examples in august...

What you hear is a tuned chord of that 5 OSC with a very low ENV Sin frequency in sample 9. So the ENV Frequency works as an own LFO too.

Greets Rio.

Link to comment
Share on other sites

  • 3 weeks later...

Congratulations on getting this finished Rio. This is a really nice use for all these empty C64 cases, as well as a great way to control the Speakjet (i've always wondered about how that would work).

Are you planning a port into English phonetics? If so, it's probably something that I'd build for sure. My German's a little rusty i'm afraid ;)

Link to comment
Share on other sites

yes... thanks. Besides, big thank for audiocommander's and Bill's pre work too. Without that nothing would be possible.

A big advantage is that you can use two of your older PIC18f4520 from MBSID for that project.

German pronunciation sounds in most ways well. All in all, every letter can be vary. so your request after an english TextToSpeech isn't so easy to use, but it's maybe possible:

You change the preselected phonics in array of letters to english phonic in my code and you have to compile it again... e.g. you insert all combinations for english "e" + a pause phonic, because there is often the case that the "e" will not be spoken at end of a word. I think such little algorithm can be implemented for a preselection.

But every word you write down in application, have to be combined first in the correct pronunciation by variations (in german the pronunciation sound is often the same for every letter). It's still possible to combine variations in application. At least, you are able to store your modificated english phrase on eeprom.

The most problem of english pronunciation:

Many vowels change extremly from one word to another (o or oo --> u, a --> e, e --> i, ea --> i), some letters will not be spoken (maybe "e" at end of word) and so on... so for an english TextToSpeech many combinations have to be preselected maybe by hand in application itselfs or by algorithms. Here are some informations about english vowel rules:

http://pluto.huji.ac.il/~msyfalk/WordStructure/Vowels.pdf

oh my god!

With a last feature - implementing Remote Control for SEQV3, the application reached $7FFF so there's no space left to implement english algorithm (maybe only some few cases).

But if you have skills in C, you can try too implement that on a bigger chip or you use some parts from synth section in application. But one of my goals was to implement the whole application on a PIC 18f4520, so that people can use that chips from older applications (which are upgraded now).

Link to comment
Share on other sites

Indeed, the SpeakJet-Chip only supports the english (or more correctly: the North American English) phoneme range. It isn't for example possible to enunciate a german "r". If you listen to Rio's german example "Der Weltraum - unendliche Weiten" you can hear that "Weiten" - which would correctly be pronounced like "wighten" or "whiten" is pronounced like "weighten" or "waiten".

There is also the TTS-SpeakJet Companion Chip; a Text-To-Speech Chip that can be connected in-between the serial connection to the SpeakJet and simply contains the (EN-to-Phonemes-) Dictionary that is also contained in the Magnevation PC-Application.

Best regards,

Michael

Link to comment
Share on other sites

yes english phonemic - but the phonemes can be used for german speech too. Words like "RIO" are easy to speech with a rolling R too ;).

In application all letters can be combined in different variations too. So i'm pleased with results. You can listen that little change in the second speech example... I was comparing the spoken results of a letter to german pronunciation (oriantating by my ears). So i added different variations for a letter (max. 9 variations are possible), which can be assigned to a specific letter in a word.

So you can generate your pronunciation in combinations like you want. It's correct, that the chips sounds often like german with accent ;)

I don't know how that TTS Chip works and i don't have one. My routine sends out every letter (the choosen phoneme) in a bit timing distance, but fast enough to link the letters to a spoken word. So it's possible to do changes in Bend, Speed, Pitch and variation in realtime, while SpeakJet is speaking.

Maybe the TTS Chip will store and proceed the whole word or sentence before... I don't know. I use the K64 mainly for robot speech in music controlled by a sequencer.

Link to comment
Share on other sites

LMAO yeh.. I always tell people that if they want to see Dragon products do proper speech recognition without training it for a year, they need to remember it's an American product, so the vowels sound nothing like English spoken anywhere else. Fake a thick yankee accent and voila! It works!

Link to comment
Share on other sites

Hi,

Now i've added an additional SEQV3 Record/Remote Mode in K64 application. Besides, i reached the $7FFF border... so no more features are possible.

okay, it's time to clear up something:

K64 application is fitted out with 2 special modies (SYNTH MODE / TTS MODE) to controll functions of K2-application. Both applications, K64 and K2, communicate only through midi ports. The K64 modul can be used as Midi Keyboard without a speakjet too.

Edit: Now i've expanded the RECORD functionality feature in K64 v1.1c. For more information read the doku/tutorial in dokuwiki.

Link to comment
Share on other sites

  • 2 weeks later...

Hi Rio,

Great work!!! I have heard the samples and I plan on doing the speak jet module. I want to house the pcb behind a front panel for my modular synth. I want to use an oem keyboard, however, it outputs via usb or ps/2. the tech. docs are on the web are very limited.

My question is, will I be able to use this keyboard? Are there ways around this, since I can't see if there are analogue outputs?

Regards,

R

Link to comment
Share on other sites

hi and thx,

sorry, but it seems it will not work with another keyboard like that commodore keyboards. I used the C64 Keyboard board schematic from Bill and connected it to J8 and J9 like in his description. There is also a special keymap defined for C64 matrix and strictly used in the whole code. It will not work with another connector and i don't how a ps/2 adapter works with the sm-matrix...

but another solution: you can buy an old or defected C64-II from second seller market and cut/trim the backside of case. That C64-II case are not so high and useful as keyboardcase too.

look what i've done with an old C64-II case:

http://www.midibox.org/midibox_gallery/rio5.jpg

you can built the keyboard in another cases too..

Link to comment
Share on other sites

Well, if your PS2/USB keyboard just so happens to have a matrix laid out exactly like a C64 you'll be right ;)

If you want to actually connect the keyboard connector to the PIC (not tap directly into the switches) you'd need to write a PS/2 driver. I have some documentation and code if you're serious about it, it will tell you all you need to know.... But it won't be easy.

Link to comment
Share on other sites

i doubt that this could work - i believe it wouldn't work, because:

- the matrix of C64 is for 64 keys. so only 64 keys are defined in application

- the keys have a special Assignment and a special tag. I've oriented the application to that C64 Keyboard tags.. (e.g. I don't believe that the space key would be the same like PS/2 keyboard space key...)

- shortcut hardware problem with C64 keyboard (using more than 3 keys at same time - you could get in trouble... because it will short cut to other keys on C64 keyboard matrix and you would get randomly result in application, but i've solve the problem with implementing some workarounds for problematic key areas and my application reacts only limited to 3 keys at same time. It works in most cases well. So i don't know, if it have something to do with PS/2. i don't think so.

... so i can only say that the application will work correct with a C64 keyboard. I've nothing other tried.

Link to comment
Share on other sites

LOL I wasn't serious about the matrix mate ;D If you can find me a PS2 keyboard with the same matrix as a C64 one, I think you might also be able to find me a giant pink dinosaur.

However using a PS2 driver is possible, but of course would mean major modifications to the application, which i why I said it won't be easy.

Link to comment
Share on other sites

Hi Guys,

Thanks for all the replies and suggestions. I have discovered that they also have a serial AT conection available. Here are the url's

http://www.ikey.com/ProductsList/?menu=4

model number KYB-42-KIOSK and SL-75-OEM

One caveat, the keyboard is pricey, may be a group buy could bring the price down.

I am very finnicky about the layout and presentation of the module so it can match the other existing modules of my modular synth. I appreciate the old school look of the c64 case, but I very partial to modifications that look cut out or sawed out, hence the reason I went with wilba's boards and Altitude909's panelsfor MidiBox Sid.

I think SL 75 keyboard with illuminated keys would be rather dashing, plus the depth and size of the module makes it very easy to mount to the panel and leaves enough depth to put the pcb behind, and reduce mounting holes on the front pant panel.

I am not well versed with the software side of things, but plan on making a pcb for myself so it matches the footprint holes the sl 75 to piggy back the Core boards, the bankstick, the c64 keyboard pcb and tthe speakjet board. I am almost fininshed doing the board. I will put a jpeg up when I am done.

I would like to share the board with the midibox community. Is there an FAQ about this? If I were to make boards for other members, like the MB6582 project, I would like to do it respectfully and avoid a complication like the dude knocking off the sid project on Evilbay.

Any help and suggestions would be greatly appreciated, many thanks in advance for all the background work you have done to make this a wonderful community and project, KUDOS !!! KUDOS

Best Regards,

R.

Link to comment
Share on other sites

..and again...the application will only work with a C64 keyboard.

if you have a plan for connecting serial keyboards to core and knowledge in C, you can try to implement it. It should using the sm_matrix.

But i have reached the $7FFF border of 32k with optimizied code(!) ... maybe it could a bit difficult to add bigger changes.

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