Jump to content

Speakjet - A PIC ready sound chip?


herr_prof
 Share

Recommended Posts

  • Replies 345
  • Created
  • Last Reply

Top Posters In This Topic

  • 4 weeks later...

It's pitchable. I guess.. maybe.. if you know how.. :o

Through the selection of these MSA components and in

combination with the control of the pitch, rate, bend,

and volume parameters, the user has the ability to

produce unlimited phrases and sound effects, with

thousands of variations, at any time.

As you see, datasheet makes it clear, thought ;)

Bye, Moebius

Link to comment
Share on other sites

  • 6 months later...

Yes!

I am already at work on this. I have been working with the speakjet for a while now and have unlocked pretty much everything it can do (which is a lot)... On the lowest level, it is a five voice synth with noise, LFO, and a few filters. I sounds great when you access the registers themselves and play the synths. Very funky.

Anyway... I have assembled some speakjet resources at http://music.calarts.edu/~lorinp/resources.html . I have a dictionary of raw decimal instructions, some max patches that interact with it and a schematic for a new board to place inside a modular system, like a midibox.

I have only just gotten to thinking about writing an application to control the speakjet. It receives UART serial (8 bits 1 stop bit, no parity). The baud rate is 2400 to 19,300.

My issue is that the UART TX and RX pins are tied up by MIDI in the midibox. Using those pins would be the easiest for coding purposes. I need a plan to send simple serial messages from the midibox at the speakjet's baud-rate. My ideas so far:

1. Use J10 (which is used to talk to the SID). Use pin RC4 to send the information. It would have to be coded the "old fashioned way", by calculating the baud rate and using a loop and delay to synchronize the signal (as you would on older pics without USART).

2. Again, use J10, but set up the  pin RC4 as an SPI transmitter. Maxim makes a chip that converts SPI to UART at any baud rate (using a crystal). That hardware could be placed on the speakjet board.

3. Use another PIC to make a MIDI to speakjet application. A PIC 16fxx with UART comes to mind. It would receive the MIDI (thru in this case from the core) and parse the data into speakjet commands. The code in this case wouldn't be too rough.

I have only just started putting together my midibox system. So, I am new to the PIC 18f452 (although I am not new to electronic instrument design), so someone please tell me what makes the most sense using the chip we already have. At this point, I want to reserve as many inputs for sensors as I can, which is why I wonder which pins I should use (I am running short). Also, I am frustrated that I can't just simply write instructions to a UART register for this...

I would love some input. I also need to think about it a little longer.

Lorin

Link to comment
Share on other sites

Hi Lorin,

wow, I didn't know about the SPI->UART converter, where can I find it on the maxim page? Maybe this is the easiest way (and it could be a generic solution for additional MIDI ports to MIOS).

1) possibly loads the CPU too much and affects the realtime capabilities. When sending a UART frame you've to disable interrupts so that stable timings are guaranteed. With 19200 baud and 10 bit (start bit/8 bit data/stop bit) this means that a single byte transfer takes 521 uS.

The problem: if a MIDI byte is received at this time, it could happen that it get lost (MIDI bytes are transmitted with 31250 baud). The PIC has a double buffered USART, so maximum time is about 640 uS that you have to ensure that both bytes will be queued into the MIDI In FIFO before an overrun)

2) as mentioned above, this is possibly the best solution.

3) also possible, but it's maybe better to access the second PIC via IIC instead of MIDI for better timings. Or via SPI

If 2) provides no FIFO, then you could implement this in 3) in order to increase the performance (the application can send a lot of data to the SpeakJet without waiting for an "unbusy" on the serial line). But 3) also means more programming effort and more support effort (if you want to publish your project)

Best Regards, Thorsten.

Link to comment
Share on other sites

The MAX3100 is the SPI -- UART chip. The datasheet says it is QSOP, but they also have a PDIP-16. It is for sale on digikey for about $5 or so.

http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1731/ln/

I would like to use midibox hardware to begin. So, using the MAX3100 makes the most sense.

I mentioned a MIDI interface to the speakjet because there is a growing community of speakjet fans that wish to use it directly with sequencers, keyboards and computers. In a midibox system, though, SPI makes the most sense to me too. That's where I will start.

Conveiently SPI is available too. I would like to keep I2C lines open for possible use of external memory.

I'll keep people posted.

Thanks for your input.  

Lorin

Link to comment
Share on other sites

Hi Lorin,

That is way cool! Please report back with your findings with the MAX3100 (damn... if only i'd known when i ordered samples from them last week).

;)

I hope to have the IC in the mail soon, and first i'm going to experiment with the 'SpeakJet SuperCarrier' from speechchips.com... There is a scheme of that circuit in this doc (scroll down on page):

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

(uses a Maxim DS275 for serial to CMOS level serial conversion)

Or i might buy an old Atari on ebay...

http://www.atariage.com/store/product_info.php?products_id=295

;D

Link to comment
Share on other sites

The development boards are great ways to go. I have one from the Mark III robot store http://www.junun.org/MarkIII/ -- They have really fair prices on stuff. It works great with a computer serial port. (mine's a tigerbotics brand board).

The schematic posted on my site is very similar to the development boards out there. I chose to use some transistors to switch the signal levels, rather than the maxds275 chip. Both work. There is a speakjet group on http://groups.yahoo.com/group/speakjet/ . There, you will find more discussion about such things...

Last I checked, speakjets were on sale at http://www.speechchips.com/ $10 off!!! I am waiting for my order before I start breadboarding new designs.

The Atari thing is pretty different, no?

Anyway, they make great sound, and they do handle pitch, speed and intonation really well. It's tricky to program them to be real understandable, but you get the hang of it after a while (you need to think about speed, pitch, bend, sluring.. etc to get a really good word). I think it's fun, and I've performed live with them here in LA, and people love it.

Link to comment
Share on other sites

Hey all,

I'm going to start experimenting with MIOS control of the speakjet soon. If anybody else has such intentions please let me know -- it's always better to have more people and more information. Also, I get busy, so I don't know how fast I'll be.

I'll start writing some code soon. Luckily, I have a collegue who is much more familiar with PIC18f452 and SPI than I am (that'll help). I'm going to try the maxim chip and SPI first. If anyone else is trying this or any other method, lets keep communicating!

Lorin

(http://shoko.calarts.edu/~lorinp/)

Link to comment
Share on other sites

I'm certainly interested in experimenting... however, my MIOS/assembler skills are limited. My biggest achivement so far was getting digital pots to work with SPI and that took me quite a while...  ;)

Let me know if you want specific help on something... (circuit testing/design/coding)

The Atari thing is pretty different, no?

I don't know what it can do... it's probably basic but it looks intriguing... and it is always übercool to have an old woodcabinet 2600 in your studio  ;D

Link to comment
Share on other sites

Thanks for stepping up! I'll post here when I get the ball rolling. Honestly, I don't know what to expect until I start doing it. Don't let that stop you from getting started, though! If you've done SPI with encoders that'll be similar.

Regarding the Atari:

So far as I know the atari speakjet simply makes speech possible for new atari games (yes there are new atari releases). It doesn't act as a synth -- just an add on for atari game players / designers. I need to find someone who has one... There's a "hacker's" club here in LA, and many people involved are game gurus and addicts -- I'll try and find someone who owns one. Could be educational :)

Lorin

Link to comment
Share on other sites

Okay, this is just one dreamer's suggestion...

Have you seen postings about the PS/2 keyboard/mouse interface for MIOS?  Wouldn't it be cool to be able to connect a QWERTY keyboard direct to the Speakjet module, display and edit text on an LCD, then hit "Speak".  Using special characters or modifier keys (shift, ctrl, etc) for different phonemes.

Link to comment
Share on other sites

T

Regarding the Atari:

So far as I know the atari speakjet simply makes speech possible for new atari games (yes there are new atari releases). It doesn't act as a synth -- just an add on for atari game players / designers. I need to find someone who has one... There's a "hacker's" club here in LA, and many people involved are game gurus and addicts -- I'll try and find someone who owns one. Could be educational :)

ive talked to the dev and he said that his 2600 driver allows access to all the features of the speakjet, so it should be good to go from there...

ps: this dev is already working on a atari seqeuncer that uses the atarivox to save seunces and may support speakjet sound generation

http://qotile.net/loopcart.html

peter

Link to comment
Share on other sites

  • 1 month later...

Okay... i got hold of one of them MAX3100 SPI to UART things. I'll try to breadboard this up in the next days/weeks...

Maybe someone can help me out and check if this is the correct way to hook it up to the Core module?

MBHP_MAX3100.gif

Datasheets:

http://www.magnevation.com/pdfs/speakjetusermanual.pdf

http://pdfserv.maxim-ic.com/en/ds/MAX3100.pdf

Any help welcome!

Link to comment
Share on other sites

Have you written some code to talk to the speakjet?

I've started writing some assembler for 18f452 -- it is a mios-less prototype at the moment and uses serial to talk to the speakjet. 

However, I figure that I can work the bugs out, condense it and switch the output to SPI once I'm happy with its performance. Though, it seems that you may already be there. If you have some code, lets share...

Let me know how the MAX3100 works -- mine are collecting dust for the moment.

Lorin

Link to comment
Share on other sites

Small update:

MBHP_MAX3100_002.gif

Now what i am concerned about is the following:

The SpeakJet does not accept actual RS-232A signal levels, and will be damaged if attempted to input these levels. In order to read data from a RS-232A type of serial data stream, a level shifter/line receiver must be used. This can be as simple as a small transistor or more robust device like the MAX232A from Maxim.

The SpeakJet serial configuration is fixed at: 8 bits, No- Parity, and 1 stop bit (8, N, 1) and non-inverted, (RS-232 is inverted logic and higher voltages).

But i am assuming that it is OK to connect the TX pin of the MAX3100 directly to the RCX Serial Input pin of the SpeakJet?

Link to comment
Share on other sites

Yes. If the whole thing is running on 5V regulated power, it is fine. PICs and most TTL devices use 0 and 5 volts for low and high (respectively). That's what the speakjet wants to see, and that is what the max3100 will send, as long as your power supply is 5V.

The speakjet is very sensitive to power fluctuations or surges, so be sure to use a voltage regulator when powering it. Also, if the power is a little too low, it starts tweaking out and speaking nonsense. Get as close to 5V as possible.

The whole rs232 issue comes from the fact that PC serial ports use 0 and 12V. 12V would fry a speakjet, so people usually use a different MAX chip to step down the voltage. The 3100 has no relation to rs232, though, it is designed for use with microprocessors which deal with 5V signals.

This leads to another issue, which is that you may want a development board for the speakjet so you can hook it up to your PC serial (stepping down the voltage, of course). It's much easier to set the baud rate and configure the speakjet using the speakjet utility "phrasealator"  before putting it in your microprocessor circuit.

Lorin

Link to comment
Share on other sites

:)

Right, i got the SpeakJet / PC Serial / PhraseALator combination working with the LTC module.

The Phrase Editor keeps locking up for some strange reason, but other than that everything works. I have it set to the default 9600 baud for the moment.

With the MAX3100 module / PIC i have less success...

I trying to echo incoming MIDI back out (PIC > SPI > MAX3100 > LTC module), but the leds don't light up, nor does my PC detect any serial activity. The TX pin of the 3100 stays high no matter what...

:(

My application first sends 16-bits with the write config and 16-bits with data next.

It also one-way, i'm not reading the DOUT of the MAX3100, only CS, SCLK and DIN are used to interface with the PIC.

If anyone wants to have a look, PM me and i'll send the code...

Link to comment
Share on other sites

  • 3 months later...

I have developed a speakjet based synthesizer instrument. I premiered it in April at the BENT festival in New York City. Currently I am integrating new features, updating code and getting ready for another version. It is not MIDI compatible but is CV controllable (0 to 5V). I think you guys should check it out to see exaactly what the speakjet can do.

It is on my webpage (in the inventions section):

http://music.calarts.edu/~lorinp/

Listen to "Parts of Speech". That track uses ONLY the "insanium" synthesizer and voice (no other synths -- just reverb and panning). The synth is essentially speakjet with a PIC 18f452 at the core. It also has some analog pre-amps, filters and VCAs. I think everyone will enjoy the sounds possible with the speakjet.

It would be easy to use the AOUT module to interface my design. I will be redesigning the PCB, streamlining the code, adding envelope generators, more memory and some other features soon. I plan to post the code and PCBs as soon as they are ready. People can also email me (use my website to contact me) if you are interested in getting a PCB or code examples from me.

I don't know when / if I will do a MIOS module, per se, but this is a step in the right direction, no?

Lorin

Link to comment
Share on other sites

Hi Lorin,

I don't know when / if I will do a MIOS module, per se, but this is a step in the right direction, no?

definitely! The example track sounds very impressing, I would build one! :)

Maybe I can help you to port hardware and code to the MIOS platform - are you planning an open source release?

Best Regards, Thorsten.

Link to comment
Share on other sites

Yes, I am planning to post all the code as Open Source.

I am hoping to finish the next version by September.

It is a great instrument, and I am using it quite a lot. I'll keep everyone posted. Once I get the current versions finished, I will be very interested to try porting some design to the MIDIBOX.

Lorin

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