The Embedded Systems Conference in San Jose was a blast. Thanks to Parallax for inviting me, and thanks to everyone who stopped by to say hi.
When I got the invite I only had one completed unit in hand, with an unfinished paint job. I spent the weekend before ESC stuffing 2 more PCBs and painting up 2 chassis so that I'd have a spare unit with me (just in case the first unit died, which it didn't) and a PCB for show an tell.
Here's the Parallax booth. They had their Propeller based quad rover on display (you can see the nose of it peeking out on the left side of the picture) which drew a lot of people in. The Hydra and the Coyote-1 were up on the same table, so I got to do some double duty talking up the Hydra and occasionally showing some games that I had worked on (SpaceWar and Dodgey Kong). Paul Bouchard from Parallax loaned me his guitar amp, which enabled me to fly up instead of driving; Thanks Paul!
I brought my guitar along and pretty much played non-stop the whole time I was there. I think Wed may have been the most guitar playing I've ever done in a single day (9 hours, minus bathroom breaks and talking to people). I never did end up walking the show floor to see the other booths.
Here's a close up of the Hydra/Coyote-1 table. I had a couple glossies showing the software and hardware architecture, and a little tv connected to the Coyote-1 showing the live debug screens. People loved seeing the debug data coming from the pedal live while I was playing and effects were running. I ran my KT-Tunstall-ish delay loop for the show and used it to record backing loops which I would then solo over.
The second night in the Hotel I decided to mod the oscilloscope window of my debug app so that it would run continuously and sync to a zero crossing. I ran the code for the rest of the show and had the live guitar waveform on the TV while I was playing. You can actually see it in the image of me playing above, although there's a pop-up window on the screen in front of the waveform at the moment the photo was taken.
The Parallax guys were all great fun to work with and they took very good care of me while I was there. Unfortunately they did such a good job working the show that Chip decided he didn't need to travel down; I had been looking forward to meeting him. Hopefully that will happen some day; the Propeller design is a real piece of art and I admire what he did with it. For now I'll just have to offer my virtual hand-shake and say "well done".
I don't know why, but I·never read this thread until just now.
This pedal is really neat! I feel like an idiot for not getting down to ESC now. I heard that the show was going well, and I was tied up with getting the new SX-Key ready, so I figured there was no need to make the excursion. Besides, everyone was having a good time, and I figured they didn't need me suggesting that we all go eat some weird food, or something. I would have loved to have been there, though,·and seen the pedal and met Eric.
Thanks for contributing your time, Eric. I'm really glad you came to ESC and shared your work with everyone. This is the kind of thing I vaguely hoped would happen, but couldn't have wished for, exactly.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
Post Edited (Chip Gracey (Parallax)) : 4/24/2008 3:46:44 AM GMT
I have not had a chance to touch base with you personally since seeing you at the ESC. I want·to publicly say thank you for your time and your incredible effort at the show. Anyone who has ever worked at a trade show knows the work and effort that is involved and for you to play guitar, answer questions and basically represent yourself· and your product in the manner you did was amazing and a huge bonus for Parallax. I believe you have a·winning product and judging by the enthusiastic reaction from those in attendance you should be very successful. Again, on behalf of Parallax thank you so much. Hopefully we can meet again soon. I'll take the blame for Chip not being there. We have him locked away in a room until the SX Key is complete so he was not able to attend. I'm sure you guys would have had alot to talk about. If your ever up this way or just want to make a trip to Rocklin let me know and we can get the two of you together.
Post Edited (Paul Bouchard (Parallax)) : 4/24/2008 5:35:24 PM GMT
This is really impressive. I was wondering about a couple of things...
1. What ADC are you using?
2. Did you ever get your FFT algo to work on the prop?
3. Any idea for time line and market price on when sale of the Coyote-1 in either kit or complete form?
I've been swamped in my real job ever since ESC, but that's over the hump as of today so I expect to be able to drive this project home now.
I'm working with a company which is going to help me turnkey the manufacturing for production. I expect to build the first production lot through them and setup an eBay store or something to sell through. I know everyone is looking for a final price; I am too[noparse];)[/noparse] We're working through the contracts and I should be able to figure that out relatively soon.
On the software side, I've made a huge push there and I'm very pleased to say that the lions share is done, all the tricky parts are finished and working, and what remains is largely turning the crank on a bunch of low risk items and polishing the interface. There's still a bunch of code to write, but it should be relatively easy to execute.
The biggest and by far the most exciting news (for me at least) is that the Workbench app is now functional and very usable (though not completely polished). Getting all the pc/device communications interfaces working was a lot of work, and it's all humming along beautifully now. The project has reached a kind of tipping point where so much is working and there are so may useful debugging tools in place that the final stages of development are flying along rapidly.
The task I'd been most concerned about was implementing the conduit engine, which is an assembly code process that manages the passing of data between system resources and modules. It essentially moves the data along the signal paths (called "conduits") which you create between objects in the Workbench GUI. Because of the need for speed and efficiency the conduit engine is written in assembly code, but because the conduits change with every patch the engine is generated by spin code "on the fly". There is basically a "mini compiler" written in spin which creates the workhorse section of the conduit engine each time a new patch is loaded.
Now that all the pieces have come together you can very quickly rewire anything to anything in the Workbench GUI, click one button, and immediately demo the patch on the device.
I've attached a screen shot of the current Workbench GUI showing an effects chain I was testing this evening. It's dangerously fun to play around with. Must....keep....coding........ [noparse];)[/noparse]
(J.A.Streich - I'll look up the ADC for you tomorrow. Haven't worked on the FFT port yet; focusing on the software which must complete before shipping. Can't quote a date because I have to fit this project into the cracks between the rest of my life. Trying to get a price figured out within the week).
Looks great. That looks a lot like Quartz Composer (visual programming program included with Mac OSX developer tools.) How many patches can you put in before delay becomes a problem?
stevevnmess2004 said...
How many patches can you put in before delay becomes a problem?
· In the OpenStomp lexicon a "patch" is a specific wiring configuration·between "effects" and "sytem resources" using signal pathways called "conduits".·
· The audio sample rate is 44kHz.·· Each effect adds·1 sample delay to the chain, each conduit adds 1 sample delay, and the D/A and A/D process each add 1 sample delay.· The amount of delay is really on signficant when you start to look at the phase issues related to mixing two signals from paths with different amounts of delay (in which case you'd just take care to equalize the delay in the two paths).· From an end user "responsiveness" standpoint you'd ususaly be looking at a max of about a 10 sample delay for a chain for 4 effects, which is only 10/44000 = 227 microseconds, which isn't noticable at all when playing (for reference, that's 40 times less delay than the amount of time it takes sound to get to your ear from a guitar amplifier placed 10 feet away).
I've attached a screen shot of the current Workbench build. Right now I'm in the middle of adding support in the device firmware for "static assignments", which allow you to make a fixed value assignment to any control socket not hooked to a dedicated knob or button. The support for static assignments is in Workbench now (you can see them in the screen shot as the yellow labels hanging off the Chorus and Distortion effects). The buttons at the bottom of the window are all debug stuff which will go away or become pull down menu items in the final release.
The device OS now supports storage and retrieval of modules and patches in EEPROM. I finally have a handful of patches loaded up on the device which makes it much easier to cart around and demo.
The device display is now modal, and briefly displays knob settings whenever a knob is tweaked before returning to the main patch info screen. All in all, the thing is quite usable these days, and the outstanding issues are all pretty much the final infrastructure details which need to be in place for the community to be able to create inter-compatible modules.
Somebody emailed me asking how much of the design would be open source, and inquiring about creating custom peripherals. Since there may be others out there asking themselves the same question I'll post my response here too:
epmoyer said...
All the propeller code (a mix of spin and assembly) and all of the schematics are going to be open source. The PLD equations and the source code for the Windows application (OpenStomp(TM) Workbench) are likely to be closed source. My goal is to enable software developers to have full reign with the hardware platform, but to maintain a unified PC-to-device protocol for standard patch creation/loading/etc. Not only are the schematics in the manual, but the memory map, PLD register definitions, and anything else I need to add to make the hardware architecture clear and accessible will be included.
The device has an expansion port which is basically I2C over standard phone cable, so you can easily build external peripherals that interface with it. The initial release of the device OS will not natively contain support libraries for gluing effects to external expansion devices, but I expect that will come in later releases. In a nutshell, if you don't find that you can easily create peripherals for the platform then I haven't done my job properly [noparse]:)[/noparse]
There is a brand new audio demo of the Coyote-1 posted on Parallax's new audio demo's page here: www.parallax.com/tabid/645/Default.aspx
Come hear the Coyote-1 in action and make fun of my voice-overs!
The drum (a djembe) and cabasa in the background of the first recording are from an attached microphone.· The Coyote-1 has·three 1.4 inch jacks, and the middle is bidirectional so it can be used as an output or an input.· I wrote the "Tunstuff" effect to accept both inputs and·mix them together, which allows me to plug a guitar and a microphone in·at the same time so that I can layer both sources into the repeat loop.
One of the things I'm excited to try once I get the core software released and shipping is writing some modulation effects that use a mic'd voice to modulate a guitar or synthesizer (ala Peter Framton, Laurie Anderson, Imogen Heap, etc.).
The workbench application is pretty much done. All functionality required for the shipping release is implemented, and the only remaining items are some robustness improvements to the com interface, 2 minor bugs, and final testing.
Most of the device firmware is complete. I am down to 6 open issues and they're all pretty straight forward (all are just unimplemented features). At present there are no known bugs in the firmware.
I just added up the Spin/Asm code (6873) and the Workbench code (5694) and I'm now at 12,567 lines of code for this project. Whew!
I've attached a screen shot of the latest Workbench build. Here are some of the things that have been added since the last post:
1) SRAM Utilization is now tracked and displayed
2) RAM allocation has been added (allowing effects to request blocks of propeller RAM). It is also tracked and displayed below the main pane.
3) Static assignments have been fully fleshed out with min/max/units/default assignments, and now always appear on any input control socket which does not have an attached conduit.
4) The concept of "Initialization" sockets has been introduced. They are the purple sockets in the image. Initialization sockets are read once at patch initialization time and hence cannot be connected to conduits, but instead always have an associated static assignment value. They are currently used to set the initialization state of the "+Toggle" output of button objects, and to set the initial value of knobs.
5) Knobs now support "sticky" values. They boot at their Init value and retain it unit the knob on the device is physically rotated to the initialization position, then they become active.
6) Conduits now support a "switchback" drawing style, which allows you to draw conduits between an output and an input which is to that output's left. The drawing style auto routes (rather simplistically for now) as objects are dragged around.
7) Very robust mouse zoom/pan controls are in place. Wheel zooms. Hold both buttons to pan.
8) All the proper conduit connection rules are now enforced (you can't hook a signal conduit to a control conduit, or two outputs to one input; you can hook one output to multiple inputs, etc.)
9) All high level functions moved to pull down menus
Great coverage in MAKE Magazine, Gizmodo, Engadget this week on the OpenStomp! The articles were very complimentary and stressed the Propeller multiprocessing processor's advantages.
Yeah, I figured something must be up when I woke up to 50+ emails in my in-basket this morning [noparse];)[/noparse] Now I've got an automated mailing list registration in place to handle the load.
so first off great idea, any idea when to anticipate the release?
also the real deciding factor for me on this pedal would be the inclusion of a step sequencer and an analog sequencer for use with a pitch mod pedal, basically to achieve effects such as in Map of The Problematique by Muse. So if sequencers aren't included, since the project is opensource whats the likelihood of being able to write up our own effects beyond the combination of ones included.
also some random ideas, if a metronome and guitar tuner aren't already programmed in, it could be possible to right?
Somebody said...
Its third bi-directional quarter-inch audio in/out can be configured either as an output for stereo effects, or as an input for modulation effects (like vocoders, where one audio input is used to modulate a second).
mean that i can take my synth and mic outputs and plug them into the pedal for a vocoder effect?
Milestone: Firmware done. Workbench COM robustification complete.
The firmware is now finished, and all the communications robustness modifications are in Workbench, so all software is now DONE (hurray!). From here on out both are in a "feature freeze", and any remaining work between now and the first release will be limited to bug fixes and documentation cleanup.
I still have a couple of minor things to double check in hardware before I begin producing units in volume.
The manual is in progress and is shaping up nicely.
I'm meeting with some manufacturing folks on Thursday to coordinate the first build and the store deployment.
Workbench works very nicely with the new communications architecture; it's very easy to navigate and does a proper job of error recovery/reporting when things go south. I changed the connection model to one in which Workbench closes the COM port whenever it's not talking to the device so that it would be easier to develop and debug code using the Propeller IDE (which also closes its COM port when not loading code). Now you can have both apps up and running side by side without constantly having to open/close the Workbench connection to keep it from stepping on the IDE's connection.
Here are a smattering of answers to questions posed here and in the online Mailing List registrations:
themachines said...
also does this...mean that i can take my synth and mic outputs and plug them into the pedal for a vocoder effect?
Yes (presuming that someone is clever enough to write a vocoder). In general you can configure the pedal to be 2 ins/1 out, or 1 in/2 outs. The ins and outs are not forced to be associated in any way, so you can treat them as stereo pairs or as totally separate signals. I'm dying to delve into writing a vocoder myself, but I have other fish to fry until I get units shipping. Once they're out there perhaps someone will beat me to it [noparse]:)[/noparse]
themachines said...
so first off great idea, any idea when to anticipate the release?
I'm working on getting the store up and committing to a manufacturing schedule now. Expect an announcement pretty soon.
themachines said...
whats the likelihood of being able to write up our own effects beyond the combination of ones included?
That's my whole goal. The architecture is designed from the ground up to enable users to freely create and exchange custom effects at many different skill levels. Here's kind of what I had in mind for the range of levels at which the device can be approached:
1) Take existing patches and twiddle the knobs (child's play)
2) Download new effects/patches from the community (easy)
3) Take existing effects and create new patches (easy to moderate)
4) Modify existing effects at the source code level (moderate to intermediate; programming skill required)
5) Modify the OS at the source code level (moderate to intermediate; programming skill required)
6) Write new effects (intermediate to complex; programming skill required)
7) Customize the OS and do something completely different with the 4 open cogs (complex; programming skill required)
(Examples: Graphical tuner with TV out, spectrum analyzer, effect loop analyzer, room response analyzer, TV out "light pattern" generator, Audio Oscilloscope, Audio tone generator)
8) Dump everything and write something completely custom using all 8 cogs (complex; hardware knowledge and programming skill required)
(various Mailing List subscribers) said...
Will Mac be supported? Will Linux be supported?
The short answer is: HAHAHAHAHAHA. How much sleep do you think I get a night now? That's a good one! You kill me!
The long answer is: The Coyote-1 is based on the Propeller chip, and the Propeller IDE runs on Windows. Windows currently holds a 92% market share, making it the deployment OS of choice for reaching the most users with a single solution. Part of my own motivation for working on this project was that it gave me an outlet to learn some C# programming, so Windows is where I ended up.
as for the cross platform support... i believe i heard of someone working on it for the propeller IDE at the post for the coyote's comments at makezine
Eric said...
it gave me an outlet to learn some C# programming, so Windows is where I ended up.
Eric,
When time permits you may want to look into Mono if you haven't done so already.
What is Mono:
Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant .NET compatible set of tools, including among others a C# compiler and a Common Language Runtime. Mono can be run on Linux, BSD, UNIX, Mac OS X, Solaris and Windows operating systems.
FAQ:
Can Mono run binaries produced by Visual Studio?
Yes, Mono can run binaries produced by Visual Studio, there is no need to recompile.
Where is the firmware? I really am dying to have a look [noparse]:)[/noparse] Will it only be available when the Coyote-1 is released?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I am 1011, so be surprised!
Advertisement sponsored by dfletch:
Come and join us on the Propeller IRC channel for fast and easy help!
Channel: #propeller
Server: irc.freenode.net or freenode.net
If you don't want to bother installing an IRC client, use Mibbit. www.mibbit.com
I was excited to find this page...I thought I had a unique idea on my hands about 6 months ago!! Looks really promising and I am excited about what I see so far. Looks really well thought out and the pedal physically looks great.
Noticed that there are MIDI In modules available for this chip...will there by any way to connect MIDI to the Coyote-1 to access MIDI clock, CCs or note messages? Is there any plan to support MIDI in the workbench?
I notice that there is an RJ-45 for expansion but haven't seen too much about what types of expansion are possible. Will this act as a general set of Analog I/O connections that could be used for whatever???
oh the other thing is when someone mentioned the firmware... i was thinking it would be a good idea if you could hear an audio input running through the effects in the firmware when designing the effect if you haven't done that already. that way you can hear it as you make it instead of having to bring it over to the pedal.
The web site has been updated with price information, schedule, a FAQ section, a new screen shot, and some file format information. I know there are still a couple questions posted here which I have not answered yet; some are addressed in the FAQs and I'll try to get to the rest here later tonight.
Since this is open source, where would one go to download the schematics and source code? Or do we have to purchase the preassembled hardware to receive that?
KodeDaemon said...
Since this is open source, where would one go to download the schematics and source code? Or do we have to purchase the preassembled hardware to receive that?
There are a lot of different components (both hardware and software) to this project and they will be released under different licenses. I'll be putting together a summary licensing table for the manual and I'll post that to the web site when complete. I'm still working through a few of the licensing details so it's not finished yet. I'm not particularly planning to post the design publicly, though all the device software (OS and effects) will be released under a license which allows non-commercial distribution of derivative works; releasing it that way will make it possible for users to freely exchange effects modules and custom device applications.
For the moment, the schematics will be distributed with the unit but not licensed for re-distribution. There is a hardware block diagram in the user's manual and I'll probably add that to the web site shortly.
The goal is that pedal owners be given complete hardware and software documentation sufficient to modify any piece of existing pedal software or create any pedal hosted application, and that they be given sufficient licensing flexibility to allow them to distribute their software creations and enhancements without encumbrance.
themachines said...
i was thinking it would be a good idea if you could hear an audio input running through the effects in the firmware when designing the effect if you haven't done that already. that way you can hear it as you make it instead of having to bring it over to the pedal.
Effects are implemented in Propeller code and need to be compiled in the Propeller IDE and loaded onto the device before they can be heard. The Workbench application makes it very quick and easy to hook effects modules up to system resources (buttons, knobs, etc) to create a patch, and to move patches and modules between the device and files on disk. In practice, the process of creating a new effect is an iterative one of tweaking code, compiling, sending the code to the pedal, and running it from Workbench. The way in which Workbench manages its connection to the device and its use of the COM port has been designed specifically to make that process as streamlined as possible. For example, after modifying code in the Propeller IDE, hearing it on the pedal requires one button press in the IDE and one click in Workbench. You can make that process even simpler by just building a patch which uses the new effect in Workbench and storing that patch in patch slot 0; a single click in the propeller IDE will rebuild the OS including your patch, load it onto the pedal, start it running, and the pedal O/S will load and start Patch 0 by default. I work that way all the time when I'm developing effect code; tweak the code, press F10, play the guitar, see what it sounds like, repeat as necessary.
Awesome device. Cant wait to show the kids. I teach technology to High School students, and guitar on the side. This will bring both worlds together! Can't wait to get one. Signed up, and just waiting for the email saying they are ready to go.....
Comments
The Embedded Systems Conference in San Jose was a blast. Thanks to Parallax for inviting me, and thanks to everyone who stopped by to say hi.
When I got the invite I only had one completed unit in hand, with an unfinished paint job. I spent the weekend before ESC stuffing 2 more PCBs and painting up 2 chassis so that I'd have a spare unit with me (just in case the first unit died, which it didn't) and a PCB for show an tell.
Here's the Parallax booth. They had their Propeller based quad rover on display (you can see the nose of it peeking out on the left side of the picture) which drew a lot of people in. The Hydra and the Coyote-1 were up on the same table, so I got to do some double duty talking up the Hydra and occasionally showing some games that I had worked on (SpaceWar and Dodgey Kong). Paul Bouchard from Parallax loaned me his guitar amp, which enabled me to fly up instead of driving; Thanks Paul!
I brought my guitar along and pretty much played non-stop the whole time I was there. I think Wed may have been the most guitar playing I've ever done in a single day (9 hours, minus bathroom breaks and talking to people). I never did end up walking the show floor to see the other booths.
Here's a close up of the Hydra/Coyote-1 table. I had a couple glossies showing the software and hardware architecture, and a little tv connected to the Coyote-1 showing the live debug screens. People loved seeing the debug data coming from the pedal live while I was playing and effects were running. I ran my KT-Tunstall-ish delay loop for the show and used it to record backing loops which I would then solo over.
The second night in the Hotel I decided to mod the oscilloscope window of my debug app so that it would run continuously and sync to a zero crossing. I ran the code for the rest of the show and had the live guitar waveform on the TV while I was playing. You can actually see it in the image of me playing above, although there's a pop-up window on the screen in front of the waveform at the moment the photo was taken.
The Parallax guys were all great fun to work with and they took very good care of me while I was there. Unfortunately they did such a good job working the show that Chip decided he didn't need to travel down; I had been looking forward to meeting him. Hopefully that will happen some day; the Propeller design is a real piece of art and I admire what he did with it. For now I'll just have to offer my virtual hand-shake and say "well done".
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
Looks like the conference was a real blast.
I'm looking forward to adding your effects pedal to my collect.
Thanks!
--Andrew Arsenault.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Share the knowledge: propeller.wikispaces.com
Lets make some music: www.andrewarsenault.com/hss
I don't know why, but I·never read this thread until just now.
This pedal is really neat! I feel like an idiot for not getting down to ESC now. I heard that the show was going well, and I was tied up with getting the new SX-Key ready, so I figured there was no need to make the excursion. Besides, everyone was having a good time, and I figured they didn't need me suggesting that we all go eat some weird food, or something. I would have loved to have been there, though,·and seen the pedal and met Eric.
Thanks for contributing your time, Eric. I'm really glad you came to ESC and shared your work with everyone. This is the kind of thing I vaguely hoped would happen, but couldn't have wished for, exactly.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
Post Edited (Chip Gracey (Parallax)) : 4/24/2008 3:46:44 AM GMT
I have not had a chance to touch base with you personally since seeing you at the ESC. I want·to publicly say thank you for your time and your incredible effort at the show. Anyone who has ever worked at a trade show knows the work and effort that is involved and for you to play guitar, answer questions and basically represent yourself· and your product in the manner you did was amazing and a huge bonus for Parallax. I believe you have a·winning product and judging by the enthusiastic reaction from those in attendance you should be very successful. Again, on behalf of Parallax thank you so much. Hopefully we can meet again soon. I'll take the blame for Chip not being there. We have him locked away in a room until the SX Key is complete so he was not able to attend. I'm sure you guys would have had alot to talk about. If your ever up this way or just want to make a trip to Rocklin let me know and we can get the two of you together.
Post Edited (Paul Bouchard (Parallax)) : 4/24/2008 5:35:24 PM GMT
This is really impressive. I was wondering about a couple of things...
1. What ADC are you using?
2. Did you ever get your FFT algo to work on the prop?
3. Any idea for time line and market price on when sale of the Coyote-1 in either kit or complete form?
I've been swamped in my real job ever since ESC, but that's over the hump as of today so I expect to be able to drive this project home now.
I'm working with a company which is going to help me turnkey the manufacturing for production. I expect to build the first production lot through them and setup an eBay store or something to sell through. I know everyone is looking for a final price; I am too[noparse];)[/noparse] We're working through the contracts and I should be able to figure that out relatively soon.
On the software side, I've made a huge push there and I'm very pleased to say that the lions share is done, all the tricky parts are finished and working, and what remains is largely turning the crank on a bunch of low risk items and polishing the interface. There's still a bunch of code to write, but it should be relatively easy to execute.
The biggest and by far the most exciting news (for me at least) is that the Workbench app is now functional and very usable (though not completely polished). Getting all the pc/device communications interfaces working was a lot of work, and it's all humming along beautifully now. The project has reached a kind of tipping point where so much is working and there are so may useful debugging tools in place that the final stages of development are flying along rapidly.
The task I'd been most concerned about was implementing the conduit engine, which is an assembly code process that manages the passing of data between system resources and modules. It essentially moves the data along the signal paths (called "conduits") which you create between objects in the Workbench GUI. Because of the need for speed and efficiency the conduit engine is written in assembly code, but because the conduits change with every patch the engine is generated by spin code "on the fly". There is basically a "mini compiler" written in spin which creates the workhorse section of the conduit engine each time a new patch is loaded.
Now that all the pieces have come together you can very quickly rewire anything to anything in the Workbench GUI, click one button, and immediately demo the patch on the device.
I've attached a screen shot of the current Workbench GUI showing an effects chain I was testing this evening. It's dangerously fun to play around with. Must....keep....coding........ [noparse];)[/noparse]
(J.A.Streich - I'll look up the ADC for you tomorrow. Haven't worked on the FFT port yet; focusing on the software which must complete before shipping. Can't quote a date because I have to fit this project into the cracks between the rest of my life. Trying to get a price figured out within the week).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
· The audio sample rate is 44kHz.·· Each effect adds·1 sample delay to the chain, each conduit adds 1 sample delay, and the D/A and A/D process each add 1 sample delay.· The amount of delay is really on signficant when you start to look at the phase issues related to mixing two signals from paths with different amounts of delay (in which case you'd just take care to equalize the delay in the two paths).· From an end user "responsiveness" standpoint you'd ususaly be looking at a max of about a 10 sample delay for a chain for 4 effects, which is only 10/44000 = 227 microseconds, which isn't noticable at all when playing (for reference, that's 40 times less delay than the amount of time it takes sound to get to your ear from a guitar amplifier placed 10 feet away).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
I've attached a screen shot of the current Workbench build. Right now I'm in the middle of adding support in the device firmware for "static assignments", which allow you to make a fixed value assignment to any control socket not hooked to a dedicated knob or button. The support for static assignments is in Workbench now (you can see them in the screen shot as the yellow labels hanging off the Chorus and Distortion effects). The buttons at the bottom of the window are all debug stuff which will go away or become pull down menu items in the final release.
The device OS now supports storage and retrieval of modules and patches in EEPROM. I finally have a handful of patches loaded up on the device which makes it much easier to cart around and demo.
The device display is now modal, and briefly displays knob settings whenever a knob is tweaked before returning to the main patch info screen. All in all, the thing is quite usable these days, and the outstanding issues are all pretty much the final infrastructure details which need to be in place for the community to be able to create inter-compatible modules.
Somebody emailed me asking how much of the design would be open source, and inquiring about creating custom peripherals. Since there may be others out there asking themselves the same question I'll post my response here too:
Into the final stretch....
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
There is a brand new audio demo of the Coyote-1 posted on Parallax's new audio demo's page here: www.parallax.com/tabid/645/Default.aspx
Come hear the Coyote-1 in action and make fun of my voice-overs!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
a microphone signal into that unit.... [noparse]:)[/noparse]
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Getting started with the Protoboard? - Propeller Cookbook 1.4
Updates to the Cookbook are now posted to: Propeller.warrantyvoid.us
Got an SD card? - PropDOS
Need a part? Got spare electronics? - The Electronics Exchange
The drum (a djembe) and cabasa in the background of the first recording are from an attached microphone.· The Coyote-1 has·three 1.4 inch jacks, and the middle is bidirectional so it can be used as an output or an input.· I wrote the "Tunstuff" effect to accept both inputs and·mix them together, which allows me to plug a guitar and a microphone in·at the same time so that I can layer both sources into the repeat loop.
One of the things I'm excited to try once I get the core software released and shipping is writing some modulation effects that use a mic'd voice to modulate a guitar or synthesizer (ala Peter Framton, Laurie Anderson, Imogen Heap, etc.).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
That's a real impressive demo. Congratulations, your almost there.
Bob
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob
The workbench application is pretty much done. All functionality required for the shipping release is implemented, and the only remaining items are some robustness improvements to the com interface, 2 minor bugs, and final testing.
Most of the device firmware is complete. I am down to 6 open issues and they're all pretty straight forward (all are just unimplemented features). At present there are no known bugs in the firmware.
I just added up the Spin/Asm code (6873) and the Workbench code (5694) and I'm now at 12,567 lines of code for this project. Whew!
I've attached a screen shot of the latest Workbench build. Here are some of the things that have been added since the last post:
1) SRAM Utilization is now tracked and displayed
2) RAM allocation has been added (allowing effects to request blocks of propeller RAM). It is also tracked and displayed below the main pane.
3) Static assignments have been fully fleshed out with min/max/units/default assignments, and now always appear on any input control socket which does not have an attached conduit.
4) The concept of "Initialization" sockets has been introduced. They are the purple sockets in the image. Initialization sockets are read once at patch initialization time and hence cannot be connected to conduits, but instead always have an associated static assignment value. They are currently used to set the initialization state of the "+Toggle" output of button objects, and to set the initial value of knobs.
5) Knobs now support "sticky" values. They boot at their Init value and retain it unit the knob on the device is physically rotated to the initialization position, then they become active.
6) Conduits now support a "switchback" drawing style, which allows you to draw conduits between an output and an input which is to that output's left. The drawing style auto routes (rather simplistically for now) as objects are dragged around.
7) Very robust mouse zoom/pan controls are in place. Wheel zooms. Hold both buttons to pan.
8) All the proper conduit connection rules are now enforced (you can't hook a signal conduit to a control conduit, or two outputs to one input; you can hook one output to multiple inputs, etc.)
9) All high level functions moved to pull down menus
Cheers
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
Post Edited (epmoyer) : 6/25/2008 6:12:41 AM GMT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
JMH
Yeah, I figured something must be up when I woke up to 50+ emails in my in-basket this morning [noparse];)[/noparse] Now I've got an automated mailing list registration in place to handle the load.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
also the real deciding factor for me on this pedal would be the inclusion of a step sequencer and an analog sequencer for use with a pitch mod pedal, basically to achieve effects such as in Map of The Problematique by Muse. So if sequencers aren't included, since the project is opensource whats the likelihood of being able to write up our own effects beyond the combination of ones included.
also some random ideas, if a metronome and guitar tuner aren't already programmed in, it could be possible to right?
mean that i can take my synth and mic outputs and plug them into the pedal for a vocoder effect?
The firmware is now finished, and all the communications robustness modifications are in Workbench, so all software is now DONE (hurray!). From here on out both are in a "feature freeze", and any remaining work between now and the first release will be limited to bug fixes and documentation cleanup.
I still have a couple of minor things to double check in hardware before I begin producing units in volume.
The manual is in progress and is shaping up nicely.
I'm meeting with some manufacturing folks on Thursday to coordinate the first build and the store deployment.
Workbench works very nicely with the new communications architecture; it's very easy to navigate and does a proper job of error recovery/reporting when things go south. I changed the connection model to one in which Workbench closes the COM port whenever it's not talking to the device so that it would be easier to develop and debug code using the Propeller IDE (which also closes its COM port when not loading code). Now you can have both apps up and running side by side without constantly having to open/close the Workbench connection to keep it from stepping on the IDE's connection.
Here are a smattering of answers to questions posed here and in the online Mailing List registrations:
Yes (presuming that someone is clever enough to write a vocoder). In general you can configure the pedal to be 2 ins/1 out, or 1 in/2 outs. The ins and outs are not forced to be associated in any way, so you can treat them as stereo pairs or as totally separate signals. I'm dying to delve into writing a vocoder myself, but I have other fish to fry until I get units shipping. Once they're out there perhaps someone will beat me to it [noparse]:)[/noparse]
I'm working on getting the store up and committing to a manufacturing schedule now. Expect an announcement pretty soon.
That's my whole goal. The architecture is designed from the ground up to enable users to freely create and exchange custom effects at many different skill levels. Here's kind of what I had in mind for the range of levels at which the device can be approached:
1) Take existing patches and twiddle the knobs (child's play)
2) Download new effects/patches from the community (easy)
3) Take existing effects and create new patches (easy to moderate)
4) Modify existing effects at the source code level (moderate to intermediate; programming skill required)
5) Modify the OS at the source code level (moderate to intermediate; programming skill required)
6) Write new effects (intermediate to complex; programming skill required)
7) Customize the OS and do something completely different with the 4 open cogs (complex; programming skill required)
(Examples: Graphical tuner with TV out, spectrum analyzer, effect loop analyzer, room response analyzer, TV out "light pattern" generator, Audio Oscilloscope, Audio tone generator)
8) Dump everything and write something completely custom using all 8 cogs (complex; hardware knowledge and programming skill required)
The short answer is: HAHAHAHAHAHA. How much sleep do you think I get a night now? That's a good one! You kill me!
The long answer is: The Coyote-1 is based on the Propeller chip, and the Propeller IDE runs on Windows. Windows currently holds a 92% market share, making it the deployment OS of choice for reaching the most users with a single solution. Part of my own motivation for working on this project was that it gave me an outlet to learn some C# programming, so Windows is where I ended up.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
Eric,
When time permits you may want to look into Mono if you haven't done so already.
What is Mono:
Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant .NET compatible set of tools, including among others a C# compiler and a Common Language Runtime. Mono can be run on Linux, BSD, UNIX, Mac OS X, Solaris and Windows operating systems.
FAQ:
Can Mono run binaries produced by Visual Studio?
Yes, Mono can run binaries produced by Visual Studio, there is no need to recompile.
www.mono-project.com/Main_Page
Mono - Wiki
en.wikipedia.org/wiki/Mono_(software)
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I am 1011, so be surprised!
Advertisement sponsored by dfletch:
Come and join us on the Propeller IRC channel for fast and easy help!
Channel: #propeller
Server: irc.freenode.net or freenode.net
If you don't want to bother installing an IRC client, use Mibbit. www.mibbit.com
Post Edited (tpw_man) : 6/25/2008 9:02:51 PM GMT
I was excited to find this page...I thought I had a unique idea on my hands about 6 months ago!! Looks really promising and I am excited about what I see so far. Looks really well thought out and the pedal physically looks great.
Noticed that there are MIDI In modules available for this chip...will there by any way to connect MIDI to the Coyote-1 to access MIDI clock, CCs or note messages? Is there any plan to support MIDI in the workbench?
I notice that there is an RJ-45 for expansion but haven't seen too much about what types of expansion are possible. Will this act as a general set of Analog I/O connections that could be used for whatever???
Thanks in advance.
Cheers!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
There are a lot of different components (both hardware and software) to this project and they will be released under different licenses. I'll be putting together a summary licensing table for the manual and I'll post that to the web site when complete. I'm still working through a few of the licensing details so it's not finished yet. I'm not particularly planning to post the design publicly, though all the device software (OS and effects) will be released under a license which allows non-commercial distribution of derivative works; releasing it that way will make it possible for users to freely exchange effects modules and custom device applications.
For the moment, the schematics will be distributed with the unit but not licensed for re-distribution. There is a hardware block diagram in the user's manual and I'll probably add that to the web site shortly.
The goal is that pedal owners be given complete hardware and software documentation sufficient to modify any piece of existing pedal software or create any pedal hosted application, and that they be given sufficient licensing flexibility to allow them to distribute their software creations and enhancements without encumbrance.
Effects are implemented in Propeller code and need to be compiled in the Propeller IDE and loaded onto the device before they can be heard. The Workbench application makes it very quick and easy to hook effects modules up to system resources (buttons, knobs, etc) to create a patch, and to move patches and modules between the device and files on disk. In practice, the process of creating a new effect is an iterative one of tweaking code, compiling, sending the code to the pedal, and running it from Workbench. The way in which Workbench manages its connection to the device and its use of the COM port has been designed specifically to make that process as streamlined as possible. For example, after modifying code in the Propeller IDE, hearing it on the pedal requires one button press in the IDE and one click in Workbench. You can make that process even simpler by just building a patch which uses the new effect in Workbench and storing that patch in patch slot 0; a single click in the propeller IDE will rebuild the OS including your patch, load it onto the pedal, start it running, and the pedal O/S will load and start Patch 0 by default. I work that way all the time when I'm developing effect code; tweak the code, press F10, play the guitar, see what it sounds like, repeat as necessary.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
The World's First Open Source Guitar Pedal:··http://www.OpenStomp.com
-- Jim
27keith@gmail.com
One question though - I have only seen it described as a guitar effects pedal. It will be ok for other instruments, won't it?
Thanks.
Gordon Charlton
thereminist
myspace.com/BeatFrequencyUK
youtube.com/GordonCharlton