Home

Coyote-1TM User`s Manual

image

Contents

1. A 17 Chapter 8 Restoring the Factory Configuration e eese eese e eee ee eene eene enne nen nnne arent nn na 18 Chapter9 Using OpenStomp Workbench 20 Connecting to the Co rt di ai 20 System RESOUMNGES cid iaa 21 erc Em 21 BUON pee 21 DE DS M P 21 10 2 0 it aida 22 A AN 22 Loading a Patch t A 22 Working in the Editor RE 22 Zoom and Paneer A IA 22 Moving Objects ttd A ee E EIE E e VE e e E E e eae ane E 22 Adding Effects to a Patch oer tte iti 23 Connecting Objects irt ite re e Re n EE d edo E e Ue uie ive 23 Modifying Static Assignments 24 Mali Menu Commands s ecole entr a aee S Ee t denn 24 Module List Menu 0 5 25 7 25 Conduit Routing Restrictions cocccnonoonoooonnononanononannnoncnnnnononnnnnnnnnnnnnonnnnnnnnnnnnnnnnenonnnnnnnnnnnnnrnonnnnnnnnnnenos 26 Chapter 10 Under the AAA OO 27 Block 27 Software tt A 28 Propeller Pin Assigrniments 45th et e DOR e n IER EE ER TERRIER YER ETE dS 29 MEMBUS Interface 5 ee eei a Tes be ge periit ad Poesie to eR ea euge 29 PLD Register CCR CODEC Control Register esses ener 0 29 0 30 Chapter 11 Creating Custom Effects Modules csccccsssscccc
2. Frames is not currently used but exists for future development Chapter 15 Module Descriptor format The module descriptor consists of 3 regions The module descriptor header the socket definitions and the module descriptor trailer Module descriptor header Bits Field Description 32 module_descriptor_format Identifies the module descriptor format for future expansion At present the only valid format is 0x3130444d MDO1 in ASCII 32 module_descriptor_size Length of the module descriptor in byte 32 module_size Length of the module code in bytes 32 module_code_address The address of the module code in Propeller RAM 32 module_signature A unique signature used to identify the module See Chapter 16 for a description of the module signature format 32 module_revision The module revision in the form OXXXAABBCC Rev AA BB CC 32 microframe_requirement Reserved for future use Set to 0 32 sram_requirement The amount of SRAM the module requires 32 ram_requirement The amount of Propeller RAM the module requires 32 reservedO Reserved for future use Set to 0 32 reserved l Reserved for future use Set to 0 32 reserved2 Reserved for future use Set to 0 32 reserved3 Reserved for future use Set to 0 32 num_sockets The number of sockets the module implements Socket definitions one for each socket Bits Field Descript
3. 0 Echo Delay 11 0 0x12 Reverb 0x2n EFFECTS 0x20 Distortion 0x21 Wah 0x22 Synth 0x3n EQ 0x30 Parametric EQ Ox4n EQ 0x40 Tuner 0x41 Note Detector 0x42 Signal Generator The current signature flag bits are 0x8 OpenStomp effect i e released by OpenStomp This bit is set for effects written and released by OpenStomp This bit should be a zero for user authored effects Ox4 Experimental effect This bit should be set when authoring effects for personal experimentation which will not be or have not yet been released to the public 0x2 Reserved 0x1 Reserved Chapter 16 Module Signature Format D B When you release an effect to the public it should have a signature of the form OxTTOVVVVV You can email support OpenStomp com to request a unique ID Value VVVVV for your publically released effects Chapter 16 Module Signature Format nu er Chapter 17 Module Control Block format n Oo Chapter 17 Module Control Block format The module control block MCB is the structure by which the O S interfaces with an effects module A pointer to the MCB is passed to an effects module when it boots and the effects module reads the various fields of the MCB to determine the location of its allocated memory if any SRAM or RAM was requested by the module The MCB is also the me
4. 2 mov p socket bupass p module control block add p socket bupass S husMCB OFFSET SOCKET EXCHRNGE 4 lt lt 2 mov p socket on p module control block add p socket on amp husMCB OFFSET SOCKET EXCHRNGE 5 lt lt 2 Initialization In this section any necessary data initialization is performed This section will be different for all modules and will be very application specific In the case of the tremolo module there is a single variable to initialize mov angle 16 16 fxp 0 The Synchronization Loop This code should be identical for all modules The synchronization loop waits for the start of a microframe boundary i e the start of an audio sample interval before dropping into the execution of the effect code It also detects overrun conditions i e whether the effect code took longer than its allotted sample interval to execute and reports them to the O S if they occur rdlong previous microframe p frame counter frame sunc rdlong current microframe p frame counter cmp previous microframe current_microframe wz atz jmp _frame_sunc add previous microframe 1 cmp previous microframe current_microframe wz if_nz wrlong current microframe p_ss_overrun_detect mov previous microframe current microframe The Bypass Block Most effects modules will choose to implement Bypass functionality which gives the user the ability to step on one of the foot switches to turn the effect on or off Effect Processing Th
5. drop down list to show all currently existing COM ports You may need to select this option if the Coyote 1 was attached after starting Workbench or was moved to a new USB port Help About Shows software revision revision history and copyright info Module List Menu Commands Load From File Loads a dynamic module from a Coyote 1 module file c1m and stores it in the Coyote 1 s EEPROM at the selected position This operation can not be performed on the first four positions which are reserved for static modules Save to File Saves the selected module to a file as a dynamic module This operation can be performed on both static modules and dynamic modules Erase Erases the selected modules This operation can only be performed on dynamic modules Add to Editor Patch Adds the selected module to the patch editor pane Copy From gt Copies the static module selected from the hierarchical sub menu to the currently selected dynamic module position Patch List Menu Commands Load From File Loads a patch from a Coyote 1 patch file c1p into the selected patch location in Coyote 1 EEPROM Save to File Saves the selected patch to a Coyote 1 patch file c1p pter 9 Using OpenStompTM Workbench me Ul Chapter 9 Using OpenStompTM Workbench N ep Erase Erases the selected patch from the Coyote 1 EEPROM Store the Current Editor Patch Here Copies the current patch from the patch editor pane to the selected patch location
6. I d start listening to iWoz again and it would fire me back up Now that I m done I ve listened to that book at least ten times It still gets me pumped to make stuff Revision History 1 0 Aug 7 2008 Initial Release 1 1 Aug 20 2008 Add Expansion Port Section Elaborate on Control Socket Value to Time Conversions Table of Contents Chapter 1 AAA o eno EN OA A T 8 Chapter 2 Licensing SUMMA Y 2 9 Chapter 3 Recommended 3 10 Propeller DOCUMENTATION aa 10 Propeller Information id 10 Digital Signal ProC SSing ccccssssssccececeecessesneaecececeseeseeeeeeecssesensaeseeesecssesseuseuaeaeseeseesseseuaeeesessseseaeaeeeeeess 10 Chapter 4 Recommended Tools 1 oo oriia coe sro ee een as a eua p eee a aga een saab eran era ee EA Ha ah esas 11 Chapter 5 Software 53 12 Chapter 6 iud HP 13 Chapter 7 Using the 0 14 Connecting EQUIDMENE e 14 DO dit a A As 15 7 15 7 15 Switching 5 16 Reformatting the 9 16 Patch Module Load Errors ccccssscccccsssscseseccececececsesenececeecseseceaeceesesesesenaeeaeceeeeseeesesenaeeeceeeeesenaeeesesens 16 Real Time Error Output 92 17 Real Time Error Time Overflow
7. If at any time you wish to restore the factory configuration instructions for doing so can be found in Chapter 8 Chapter 6 Overview I UW Chapter 7 Using the Pedal E D Chapter7 Using the Pedal Connecting Equipment Connect the Coyote 1 to your equipment as shown below The video output is not necessary unless you are running video applications the standard O S build and standard effects do not use it The PC connection via USB is only necessary when configuring the pedal or loading software the pedal can operate without a PC connection The functional assignment of the three inch jacks is patch dependant The standard assignment for monaural single input single output patches is to use IN L as the input and OUT L as the output Note The IN L jack is a very high impedance input 1M Ohm suitable for high impedance devices such as electric guitars The IN R input because of its dual function as OUT R is a medium impedance input Plugging a high impedance device like an electric guitar into IN R will result in a rolling off of the high frequencies If you need to plug a high impedance device into IN R try running it through another guitar stomp box first The other stomp box will act a pre amp to convert the signal to low impedance Guitars which contain built in preamps will work well with IN R Boot When you first apply powe
8. complaining that the world will not devote itself to making you happy GB Shaw If you have not already familiarized yourself with the Propeller chip s hardware and software architecture and with the Propeller IDE the Propeller Tool software you should take a look through the Propeller Manaul PDF and do so The Propeller Manual is installed when you install the Propeller Tool and can be accessed quickly from the Help menu within the Propeller Tool Before you learn to write custom effects take a quick look at the existing effects modules to familiarize yourself with their structure The effect module source files all have the form COYOTE1_MODULE_module_name spin This chapter will use the Tremolo effect COYOTE1 MODULE Tremolo spin as an example Inside OpenStomp Workbench the Tremolo effect looks like this The job of creating a custom effect is basically one of defining the effect s inputs outputs called sockets and then writing the software to read the input sockets and create the proper behavior on the output sockets The Coyote 1 uses a 44kHz audio sample rate which means that every 1 44000 of a second approximately every 22 7 microseconds the ADC analog to digital converter hardware captures a digital sample from each of the two analog input channels In L left and In R right and outputs a digital sample on each of the two analog output channels Out L left and Out R right In ge
9. in Coyote 1 EEPROM Load This Patch Into the Editor Copies the selected patch from Coyote 1 EEPROM to the patch editor pane Conduit Routing Restrictions The following restrictions apply to conduit routing Output Sockets can only be connected to Input Sockets Multiple Output Sockets cannot be connected to a single Input Socket A single Output Socket can be connected to multiple Input Sockets Signal Sockets blue can only be connected to other Signal Sockets Data Sockets brown can only be connected to other Data Sockets DNS i Initialization Sockets purple can only be assigned a static value they cannot be connected to other Sockets Chapter 10 Under the Hood Block Diagram I2S Serial Button 0 Button 1 USB To Serial Converter 5V amp 3 3V Linear Regulators DC Power Jack Propeller Processor sng eed Ya 8 IEHES 06 Headphone Amplifier 128K EEPROM 0 Code amp Data 128K EEPROM 1 User Defined E o Y ex gt a 2 5 o 7 jes 7 Ya Inch Output Jack Ya Inch Output Jack Headphone Jack Video Out 16x2 LCD Expansion Port Note The shipping configuration of the Coyote 1 actually contains 3 512K SRAMs The block diagram has not yet been updated to reflect this N N Chapter 10 Under the Hood Chapter 10 Under the Hood N 00 Software Architecture Full Duplex Serial Port Driver LCD Driver Combo LCD Serial D
10. not already have the appropriate NET framework installed you will be directed to Microsoft s website where you can download and install it You can install a higher rev NET framework than required if desired NOTE A copy of the NET 2 0 Compact framework is in C OpenStomp TM Workbench NET Framework 2 0 but have not yet been able to test it on a machine that did not already have the framework installed Complete the OpenStomp Workbench installation Chapter6 Overview The Coyote 1 is a digital guitar effects pedal based on the Propeller processor from Parallax The Propeller is a unique embedded microprocessor containing 8 independent cogs Each cog is essentially a dedicated microprocessor All 8 cogs execute simultaneously The Coyote 1 was designed to be Open Source A big part of that challenge was creating an infrastructure through which developers could create effects modules that could interoperate be configured by non technical end users and be freely exchanged To accomplish this the Coyote 1 uses the concept of effect modules An effect module is a piece of software which implements one or possibly more than one effect and which executes on one of the Propeller processor s 8 cogs Effect modules are interconnected by virtual signal pathways called conduits which connect to sockets on those effect modules Sockets are virtual data exchange ports through which a single 32 bit value is exchanged every audio sample p
11. the Coyote 1 distribution CD and the project is maintained here http forums parallax com forums default aspx f 33 amp p 1 amp m 168490 GEAR GEAR is a cool Propeller chip emulator written by Robert Vandiver There are a couple of times when got completely stuck because couldn t figure out what my code was doing was able to throw the offending snippets into GEAR single step them and figure out what was really going on A copy is included on the Coyote 1 distribution CD and the project is maintained here http forums parallax com forums default aspx f 25 amp m 164602 Chapter 4 Recommended Tools Im m Chapter 5 Software Installation Ha N Chapter 5 Software Installation Copy the contents of the Coyote 1 CD to a directory on your hard drive such as C Coyote1 The remaining steps are written assuming a C Coyote1 installation Install the Propeller Tool software by running its installer Located in C Coyote1 PropellerTool When prompted check Automatically install update driver recommended NOTE This is the software development environment for the Propeller Chip Even if you are not planning to develop Coyote 1 software at this time you need to perform this step because the installer loads the USB to Serial chip driver necessary for OpenStomp Workbench to communicate with the Coyote 1 Run OpenStomp Workbench Setup msi located in CX OpenStomp TM WorkbenchV If you do
12. 145725 Ox2FFFFD 71 493750 12 1572861 Ox17FFFD 35 746841 13 786429 OXBFFFD 17 873386 14 393213 Ox5FFFD 8 936659 15 196605 Ox2FFFD 4 468295 16 98301 Ox17FFD 2 234114 17 49149 OxOBFFD 1 117023 18 24573 OxOSFFD 0 558477 19 12285 OxO2FFD 0 279205 20 6141 0x017FD 0 139568 21 3069 OxOBFD 0 069750 22 1533 OxO5FD 0 034841 23 765 OxO2FD 0 017386 24 381 0x017D 0 008659 25 189 OxOBD 0 004295 26 93 OxO5D 0 002114 27 45 0x02D 0 001023 28 21 0x015 0 000477 29 9 0x09 0 000205 30 3 0x03 0 000068 Delay in samples will be 50000 FFFF max 1489 msec Default Value Half a second pter 11 Creating Custom Effects Modules Im N Chapter 11 Creating Custom Effects Modules UJ 00 When a knob is attached by a conduit to the delay socket and rotated fully clockwise the socket value will be Ox7fffffff maximum After right shifting 15 bits the value will be OxOOOOffff or 65535 decimal When that value is used to control the echo delay time in microframes the resulting delay is 65535 1 44000 1 489 seconds Note that the sample rate is 44kHz so the sample interval is 1 44000 of a second Chapter 12 Working with the Expansion Port Overview The Coyote 1 has an expansion port designed to interface with external control devices such as pedal switch boards and analog foot pedals or more experimental devices like accelerometers or proximity detectors The expansion port is an extension of the I C interface on the board on w
13. Coyote 1 User s Manual Version 1 1 August 20 2008 WARRANTY OpenStomp warrants the Coyote 1 against defects in materials and workmanship for a period of 60 days from receipt of product If you discover a defect OpenStomp will at its option repair or replace the merchandise or refund the purchase price Before returning the product to OpenStomp call for a Return Merchandise Authorization RMA number Write the RMA number on the outside of the box used to return the merchandise to OpenStomp Please enclose the following along with the returned merchandise your name telephone number shipping address and a description of the problem COPYRIGHTS AND TRADMEARKS This documentation is copyright O 2008 by Eric Moyer By downloading or obtaining a printed copy of this documentation you agree that it is to be used exclusively with OpenStomp products Any other uses are not permitted and may represent a violation of OpenStomp copyrights legally punishable according to Federal copyright or intellectual property laws Any duplication of this documentation for commercial uses is expressly prohibited by OpenStomp DISCLAIMER OF LIABILITY Eric Moyer and OpenStomp are not responsible for special incidental or consequential damages resulting from any breach of warranty or under any legal theory including lost profits downtime goodwill damage to or replacement of equipment or property or any costs of recovering reprog
14. H D Adams Chapter 18 Epilogue D N
15. associated Printed Circuit Board Prohibited Coyote 1 User Manual Provided Copyright Reproduction amp Redistribution Prohibited Open Stomp Workbench Closed Copyright Reproduction amp Redistribution Prohibited Patches l N A Creative Commons 3 0 Attribution Non l commercial by nc Coyote 1 Hardware N A Copyright Reproduction amp Redistribution Prohibited This list is for reference purposes only The licensing arrangements for each asset are declared on or within the assets Chapter 2 Licensing Summary WO Chapter 3 Recommended Reading O Chapter3 Recommended Reading Propeller Documentation The Propeller Manual Describes the architecture and operation of the Propeller chip the use of the Propeller Tool i e the Propeller IDE the SPIN language and the Propeller Assembly language Avalable from the the Help menu within the Propeller tool or from Parallax s website www parallax com Propeller Information The Propeller Forum Parallax maintains a forum for the Propeller chip here http forums parallax com forums default aspx f 25 deSilva s Machine Language Tutorial A growing reference of information about programming the Propeller in assembly language The document is maintained on the forums here http forums parallax com forums default aspx f 25 amp m 209237 Programming resources A collection of various Propeller Programming resources is maintained on the forums here http forums para
16. called HAM the Hydra Asset Manager to reload the entire EEPROM OS modules and patches to the factory configuration HAM was written by Richard Benson to manage EEPROM data for Andre LaMothe s Hydra Propeller based video game system http www xgamestation com view product php id 33 Because the Coyote 1 uses the same pins for video as the Hydra HAM will also work on the Coyote 1 To restore the factory configuration using HAM 1 Connect the Coyote 1 to your PC using the mini USB cable and power it on 2 Start HAM It should be locate in your C Coyote 1 Additional Utilities Hydra Asset Manager HAM V directory 3 Select the COM port on which the Coyote 1 is attached It is helpful but not necessary to connect a video monitor to the Coyote 1 so you can watch the progress of HAM 5 Click Load HAM Driver You will see the button change states when the load is complete If you have video attached you will see the HAM driver screen appear on the attached display 6 Drag the factory configuration eeprom file into the black Memory Map box in the HAM window The configuration file shoud be located in your C Coyote 1 Coyote 1 Firmware directory and will be named something like Coyote 1 Factory Configuration Image 001 OS 1 0 2 eeprom 7 Click Upload to Hydra When the upload completes a dialog box will appear 8 Cycle power on the Coyote 1 and it will boot into the restored
17. ch Buttons The function of the two foot switch buttons is patch dependant Typically the buttons are used to turn different effects on and off and typically the on off state is represented by the LED associated with each button Chapter 7 Using the Pedal Ha Ul Chapter 7 Using the Pedal Ha Oo Switching Patches To switch between patches step on both button simultaneously An arrow will appear pointing to the Clicking the right button will advance to the next patch Clicking the left button will go backwards one patch Stepping on both buttons simultaneously will load and start the currently selected patch current patch number NOTE If the selected patch is the same as the patch which was running when patch select mode was entered the patch will NOT be reloaded but will continue to run undisturbed Reformatting the EEPROM Performing a EEPROM format will erase all patches and modules stored in EEPROM Once reformatted patches and modules can be reloaded into EEPROM using the OpenStomp Workbench application NOTE It is recommended that the patches and modules you develop be archived on your PC and that you do not rely on the pedal s EEPROM as your only patch module storage Why reformat If you create a custom module or patch which crashes the pedal when it attempts to load Patch 0 on boot then reformatting can be used to get the O S booting again so that it will talk to the Workbench application To refo
18. chanism for the exchange of socket data inputs and outputs routed to and from the effect Bits Field Description 32 ss block p A pointer to the system status block 32 heap base p A pointer to the SRAM block granted to the module per the module s SRAM request via the sram requirement field in its module descriptor 32 ram base p A pointer to the RAM block granted to the module per the module s RAM request via the ram requirement field in its module descriptor 32 microframe base Reserved for future use 32 runtime flags Reserved for future use 32 reservedO Reserved for future use 32 reserved l Reserved for future use 32 reserved2 Reserved for future use 32 reserved3 Reserved for future use 32 n socket_exchange The number of sockets the module implements Chapter 18 Epilogue This was a triumph I m making a note here HUGE SUCCESS GLaDOS Portal Man oh man oh man This has been some ride It feels great to be finished but in many ways it s just starting began this project because wanted to play around with weird ideas in audio There was so much work to do to put the infrastructure in place that it s really only today this moment of completion that the real fun can begin Here we go Yes you will enthused Zaphod there s a whole new life stretching out ahead of you Oh not another one groaned Marvin HHGTT
19. configuration Richard Benson maintains HAM here http forums parallax com forums default aspx f 33 amp p 1 amp m 168490 NOTE It s also possible to use the Download from Hydra button in HAM to take a snapshot of your Coyote 1 s EEPROM which you could then reload at a later time using the method above pter 8 Restoring the Factory Configuration Cha LO Chapter 9 Using OpenStompTM Workbench N O Chapter9 Using OpenStomp Workbench Connecting to the Coyote 1 Before starting OpenStomp Workbench attach the Coyote 1 to your PC using the supplied mini USB cable Windows will assign the Coyote 1 a dedicated virtual COM port When you first start OpenStomp Workbench you will see the set of available System Resources green in the Patch Editor pane Both the Modules list and the Patches list will be blank Open Stomp TM Workbench E lelak File Patch Coyote 1 Communications Help m E Run Patch Patch Name Patch Author COM Port COM3 Connect Modules Patches SRAM Utilization OK of 1024K 0 1024K free RAM Utilization OKof 4K 0 4K free Zoom Using the COM Port drop down menu in the upper right corner select the COM port on which the Coyote 1 is attached and then click Connect The Modules list and the Patches list will be updated to reflect the Effect Modules and Patches c
20. ed and released The Momentary output reflects button s current state down or up LEDs There are 2 LED resources representing the 2 physical LEDs LED O is the left most LED pter 9 Using OpenStompTM Workbench E m N N Chapter 9 Using OpenStompTM Workbench Audio There are 4 audio resources representing the 4 audio ports Audio In Right and Audio Out Right share the same physical jack Gain There is a gain resource which 15 typically used as a final output volume control for a patch and 5 typically configured to be controlled by Knob 3 The In and Out conduits are the input and output audio conduits respectively The Gain conduit have you guessed already sets the gain Loading a Patch You can load a patch into the Editor by either selecting Open Patch from the File menu or by right clicking on a Path in the Patches list and selecting Load this Patch into the Editor Note The Editor cannot show an Effect Module in the Editor Pane if that Effect Module does not exist in the connected Coyote 1 device If you attempt to load a Patch which contains an Effect Module that is not currently present in the Coyote 1 either as a Static Module or as a Dynamic Module then an error will be displayed and the Patch will load without the missing Effect Working in the Editor The large black grid area is the Patch Editor Pane Patches are created by interc
21. eriod i e at a rate of 44 KHz which is approximately once every 22 7 microseconds There are two different types of conduits signal conduits which carry audio data and control conduits which carry control data such as the output of the buttons and knobs The pedal contains a number of system resources which implement sockets on which they output or input data the audio jacks the buttons the knobs the LEDs etc To turn an effect module into something you can actually use you must specify the conduit routing between the various system resources and the effect module This is accomplished using the OpenStomp Workbench application A specific configuration of effect moules system resources and the conduit routing which interconnects them is called a patch OpenStomp Workbench provides a graphical interface in which patches can be authored loaded saved and transferred to from the Coyote 1 OpenStomp Workbench also allows users to load save and transfer effects modules to from the Coyote 1 The Coyote 1 can hold up to 15 patches and up to 16 effect modules in its EEPROM memory and an additional 4 effect modules can be compiled into the O S at any given time Once the Coyote 1 has been loaded with a collection of patches and effects modules those patches can be accessed using the foot switches without connecting the Coyote 1 to a computer The Coyote 1 ships with a factory installed collection of patches and effect modules
22. et value by different amounts and in the rightmost columns by multiplying by an additional factor of 3 For example the Delay effect module has a delay range of 0 to 1489msec 0 to 1 489 seconds To accomplish this it declares a range of 0 to 1489 in its Module Descriptor block Socket 2 byte Delay 0 long 2 hu amp SOCKET FLRG INPUT bute 70580 0 long 0 long 1489 long 500 Socket name Socket flags and ID Units Range Low Range High And then computes the delay by shifting the delay socket value right 15 bits rdlong ri p_socket_delay shr ri 15 rl p_socket_delay ri gt gt 15 Read the delay control socket Shift right 15 bits so max val of S7fff ffff becomes 50000 ffff Unmodified Times 3 Bit Shift Decimal Max Hex Max Decimal Max Hex Max Delay in Sec 0 2147483647 Ox7FFFFFFF 48806 446523 1 1073741823 Ox3FFFFFFF 2 536870911 Ox1FFFFFFF 12201 611614 1610612733 Ox5FFFFFFD 36604 834841 3 268435455 OxFFFFFFF 805306365 Ox2FFFFFFD 18302 417386 4 134217727 Ox7FFFFFF 3050 402886 402653181 Ox17FFFFFD 9151 208659 5 67108863 Ox3FFFFFF 201326589 OxBFFFFFD 4575 604295 6 33554431 Ox1FFFFFF 762 600705 100663293 Ox5FFFFFD 2287 802114 7 16777215 OxFFFFFF 50331645 Ox2FFFFFD 1143 901023 8 8388607 Ox7FFFFF 190 650159 25165821 Ox17FFFFD 571 950477 9 4194303 Ox3FFFFF 12582909 OxBFFFFD 285 975205 10 2097151 Ox1FFFFF 47 662523 6291453 OxSFFFFD 142 987568 11 3
23. hich also sit the 2 local EEPROM devices External devices can be easily interfaced using any of a number of different I2C chips available commercially NXP makes 1 C chips that provide anywhere from 4 to 16 digital 1 0 lines like the PCA9536 and the PCA9539 as well as ADC and DAC chips like the PCF8591 Many other manufacturers also make 1 C compatible devices that interface to all kinds of interesting things The port can source up to 50mA of current at 3 3V so low power devices can receive their power directly from the Coyote 1 Software Paradigm The paradigm to follow when creating expansion port devices is to write an accompanying effect module which effectively functions as a device driver for the new hardware Most effect modules have both input and output sockets but an effect module which is the device driver for a piece of expansion port hardware like an analog foot pedal might only have an output socket representing the current pedal position Tips am currently working to create an expansion port device reference design for a simple device In the meantime here are some design tips for those interested in tinkering with the expansion port On the remote board e Protect against power reversal with a diode e Use an 12C I O expander to provide digital ins outs e Use an 12C ADC or DAC to provide analog ins outs e Provide pads for a transient line termination on SCL SDA just in case you need them I have tested without te
24. ion 8xn socket_name_string The socket name 32 characters max Zero terminated 32 socket_flags Length of the module descriptor in byte 8xn socket_units_string The socket units e g mSec Hz etc 32 characters max Zero terminated 32 range_low The max range for purposes of display only 32 range_high The min range for purposes of display only 32 default_value The module revision in the form OXXXAABBCC Rev AA BB CC Module descriptor trailer Bits Field Description 8xn module_name_string The socket name 32 characters max Zero terminated 32 segmentation_flags Reserved for future use Set to 0 Chapter 15 Module Descriptor format n QJ Chapter 16 Module Signature Format Each effect module must have a unique 32 bit module signature with the form OxTTFVVVVV where TT is the effect type F is a set of 4 signature flag bits and VVVVV is a unique ID value NOTE Itis important that every effect module s signature be unique The Coyote 1 O S uses the signature as the sole means of identifying effects modules If two effects modules have the same signature then the incorrect module may be loaded when the O S loads a patch The current effect type definitions are 0x0n MODULATION 0x01 Chorus 0x02 Flagner 0x03 Tremolo 0x04 Ring Modulator 0x05 Vocoder 0x06 PA Mic Control 0x07 Compressor DELAY 1
25. is is where the real work gets done The code will read the input sockets work its magic write the output sockets and end with a jump back to the synchronization loop to wait for the next sample Data Declaration This is where the variables and data are declared The Effects Module Creation Process To create a custom effect module you would 1 Author the effect module as a Propeller code module the existing COYOTE1_MODULE_Tremolo spin is an example of an effect module 2 Link the effect module into the O S build by modifying the COYOTE1_static_module_list spin module to include the new module 3 Recompile the O S creating a version which includes the new module as a static module i e as a compiled in module 4 Load the O S onto the device 5 Create a patch which uses the new module 6 Run the patch to test the new module 7 Iteratively test modify recompile load until the effect module is complete and functional 8 Use OpenStomp Workbench to save the module as a dynamic module Once saved as a dynamic module the new module can be easily distributed to other Coyote 1 users Chapter 11 Creating Custom Effects Modules WW Ul Chapter 11 Creating Custom Effects Modules WW o Linking an Effect Module as a Static Module Linking an effect as a Static Module means that it will be compiled into the O S build To link an effect module as a static module 1 Loadthe file COYOTE1 static module list spin into the Prope
26. itecture refers to this interval as a microframe Effect modules can self report to the O S if they take more than their allotted 22 7 microseconds and the O S will display a Time Overflow indication in the upper right hand corner of the display NOTE All standard Open Stomp modules implement Time Overflow reporting NOTE It is possible to write a module which operates at a lower sample rate by taking more than one microframe to process a sample Such a module can still implement Time Overflow reporting by self reporting when it goes over its self allotted processing interval Chapter 7 Using the Pedal Ke N Chapter 8 Restoring the Factory Configuration Ea 00 Chapter8 Restoring the Factory Configuration There are two different ways to crash the Coyote 1 One is to install a bad O S build or somehow corrupt the build you have That situation can be recovered by just recompiling a good O S build from the CD and using the Propeller Tool to load it onto the Coyote 1 The second way to crash is to corrupt the EEPROM data with bad patches or bad dynamic modules or bad configuration data That situation can be remedied by erasing the EEPROM per the Reformatting the EEPROM section of Chapter 7 but when you re done you ll have an empty EEPROM and you ll need to reload any patches or modules you were using If you don t want to go through the motions of restoring your configuration piecewise you can use a tool
27. llax com forums default aspx f 25 amp m 204210 Digital Signal Processing General Introduction A pretty good and not overly mathematical introduction to DSP can be found here http www dsptutor freeuk com Chapter4 Recommended Tools PASD Propeller Assembly Sourcecode Debugger PASD is a fantastic source level debugger tool for Propeller assembly code written by Andy Schenk Around August of 2007 realized that a source level assembly debugger would be immensely useful to Coyote 1 effect authors trolled around the Parallax forums to see what people thought and it turned out Andy had already written one but the manual was in German and he was waiting to get an English translation before releasing PASD to the public ended up writing the English manual translation for him and the rest is history A copy is included on the Coyote 1 distribution CD and the project is maintained here http www insonix ch propeller prop pasd html HAM Hydra Asset Manager HAM is a clever and handy tool written by Richard Benson for the Propeller based Hydra video game system to support loading and archiving data stored in the typically unused upper 96K of the Hydra s 128K EEPROM Because the Coyote 1 also uses a 128K EEPROM and uses the same pins for video as the Hydra HAM will run on the Coyote 1 and can be used to archive restore a snapshot of the entire OS the stored patches and stored dynamic modules see Chapter 8 A copy is included on
28. ller Tool 2 List the new module in the OBJ section as shown below The name in quotes must match the filename of the effect module excluding the spin extension 3 Replace any of the 4 static modules in the case statement with a call to the new module s get module descriptor p function 4 Save the modified COYOTE1 static module list spin file 0BJ tremolo COYOTE 1 MODULE Tremolo delay COYOTE1_ MODULE Delay chorus COYOTEi MODULE Chorus distortion COYOTE 1 MODULE Distortion tunstuff COYOTE1_ MODULE Tunstuff testtone COYOTEi MODULE TestTone Recompiling and Loading the O S To recompile the O S open the COYOTE1 OsS spin file in the Propeller tool select it as the currently displayed file if it is not already by clicking its tab and press F11 to build the O S and load it into EEPROM or F10 to build the O S and load it into RAM Useful Coyote 1 Control Socket Value to Time Conversions It is often desirable to have a control socket govern a rage of time such as the delay interval for an echo effect or the period of a Low Frequency Oscillator LFO A quick and efficient way to compute such an interval is to simply perform a right bit shift on the socket value so that the resulting numeric range translates into some useful time range when interpreted as a length of time expressed in microframes The following table can be used to determine the time range obtained by right shifting an input sock
29. lt Value Socket 4 byte Bypass 0 Name long 5 hw SOCKET FLAG INPUT Flags and ID byte 0 null string units long 0 Range Low long 1 Range High long 0 Default Value Socket 5 byte 0n 0 Name long 6 Flags and ID byte 0 null string Units long 0 Range Low long 1 Range High long 1 Default Value byte Tremolo 0 Module name long hwiNO SEGMENTATION Segmentation module descriptor end byte 0 A full definition of the module descriptor format can be found in Chapter 15 Great care should be taken when creating a module descriptor The module descriptor must be formatted exactly to the module descriptor format definition in Chapter 15 or the O S will not be able to interpret it properly A Word about Socket Ranges You will see in the module descriptor format that a socket range can be specified for each socket The range is used only for the purposes of displaying values to the user when they rotate a knob connected to that socket by a conduit For example a knob always outputs values from 0x00000000 to Ox7fffffff If you specify a range_low of O and a range_high of 100 and connect a knob to that conduit using Workbench and rotate the knob fully clockwise the user will see the value 100 displayed and the value arriving at the socket will be Ox7fffffff This universal ranging of control socket values i e that control socket values always operate across the full range 0x00000000 to O
30. nd Effects have connection points called sockets which can be connected to one another using wires called conduits To create a conduit 1 Hover your mouse over the right hand edge of an output socket i e one on the right hand side of an object A yellow circle will appear at the edge of the conduit Hover the mouse over the left hand edge of an input socket i e one on the left hand side of an object The input socket type Signal blue or Control brown must match the output socket type A yellow circle will appear when hovering over a valid input socket 100 mt Ow uli s d To delete a conduit 1 Hover the mouse over either the right hand edge of the output socket from which the conduit originates or over the left hand edge of the input socket to which the conduit terminates Click the right mouse button A popup menu will appear Select Remove Conduit pter 9 Using OpenStompTM Workbench pw WW No D Chapter 9 Using OpenStompTM Workbench RAM e n DENM E Modifying Static Assignments Any unconnected input socket i e a socket to which a conduit has not been attached has a default static assignment value which is shown in a light yellow bubble to the left of the socket To modify the static assignment hover the mouse over the left edge of the conduit and click the right mouse button A popup menu will appear Select Change Static Assignment from the popup me
31. neral an audio effect module must keep up with this sample rate which means that it has 22 7 microseconds to read its input sockets and write new values to its output sockets The exception to this rule is effect modules which are specifically written to operate at a lower sample rate A 22kHz effect module would Chapter 11 Creating Custom Effects Modules UJ Im Chapter 11 Creating Custom Effects Modules Uy N read its input sockets only once every 1 22000 of a second and write its output sockets once every 1 22000 of a second In the Coyote 1 system architecture the native 44kHz sample period is referred to as a microframe The Coyote 1 O S provides a mechanism by which effect modules synchronize to the start of a microframe and by which they can report an overrun error if they ever take more than a single microframe to process their data Socket Types There are three types of sockets signal sockets control sockets and initialization sockets Signal sockets carry audio data and are colored blue in the Workbench editor Their data is signed and they have a maximum range of Oxffffffff 2147483647 to Ox7fffffff 2147483647 Control sockets carry control information data values which affect the behavior of effect modules or system resources and are colored brown in the Workbench editor Their data is unsigned and they have a maximum range of 0x00000000 zero to Ox7fffffff 2147483647 Sometimes a control socket is de
32. ntrol registers which need to be initialized to configure their I O Doing so allows the user to arbitrarily unplug and re plug the external device without having to restart the Coyote 1 just to reinitialize the external device s I2C chips properly Chapter 13 Error Codes The following 15 a list of error codes which may be reported by the Coyote 1 device Value Constant Definition Description ERR__MODULE_NOT_FOUND The patch contains a module which 15 not currently compiled into the code static or located in EEPROM dynamic ERR__CONDUIT_ENG_START_FAILED Could not start the conduit engine Ea ERR 12C WRITE FAIL Error writing the I2C bus ERR INDEXED MODULE DNE A module was referenced which does not exist 9 ERR IC READ FAIL Error reading the I2C bus ERR OUT OF SRAM The modules in the patch taken together requested more SRAM than the total available SRAM pool Chapter 13 Error Codes D m Glossary of Terms iz Chapter 14 Glossary of Terms DSP Module Effect Module Conduit Socket Static Assignment Static Module Dynamic Module Patch System Resource SRAM RAM DAC ADC Microframe Frame Digital Signal Processing or Digital Signal Processor Using a digital computer to represent an analog signal as a sequence of discrete samples and performing operations on that signal digitally In the Propeller chip lexicon a Module is a single spin program file which may contain a mi
33. nu A dialog box will appear allowing you to modify the assigned value Add Static Assignment Mrana Vaiee 0 100 Cancel oK Main Menu Commands File New Patch Creates a Blank Slate in the Patch Editor Pane containing only the built in System Resources Open Patch Opens a Patch file c1p from disk into the Patch Editor Pane Save Patch Saves the current patch in the Patch Editor Pane to a Patch file c1p on disk Patch Run Loads the current patch onto the Coyote 1 and starts it executing The patch number on the u device will display as to indicate that the patch is a temporary load and is not stored in one of the regular numbered patch slots Unroute All Conduits Removes all conduits from the current patch in the Patch Editor Pane Coyote 1 Connect Attempts to establish a connection with the Coyote 1 device on the currently selected COM port Selecting this option is equivalent to clicking the Connect button in the main window Reset Performs a hardware reset on the attached Coyote 1 device Format EEPROM Erases the Effects Modules and Patchs from the Coyote 1 EEPROM Does not erase the Coyote 1 O S which is also stored in EEPROM Erase All Dynamic Modules Erases the Dynamic Modules stored in EEPROM but does not erase the Patches Erase All Patches Erases the Patches stored in EEPROM but does not erase the Dynamic Modules Communications Refresh COM Port List Updates the COM Port
34. onnecting System Resources and Effects Modules inside the Editor Pane Zoom and Pan Rotating the mouse wheel will zoom in and out the mouse cursor must be over the Editor Pane Zoom can also be performed by clicking the or buttons at the bottom right of the Editor Pane Clicking Home will return the Editor Pane to 1 1 zoom and will pan to the home position the upper left of the work area Holding down both the left and the right mouse buttons simultaneously while moving the mouse will pan the editor pane Moving Objects To move an Object i e a System Resource green or an Effect purple click the top Title Bar region of the object and drag it Objects cannot be overlapped If you attempt to overlap objects a red boundary will appear and if you release the mouse button while in an overlapping position the object will return to its original location Adding Effects to a Patch To add an Effect Module to a Patch right click an Effect Module in the Modules list and select Add to Editor Patch Static Modules shown in red in the Modules list and Dynamic Modules shown in purple in the Modules list can both be added to Patches The added Module will appear in the upper left corner of the working area you may need to zoom pan to see it and may overlap existing objects Play nice and drag it somewhere better before hooking it up Connecting Objects Objects System Resources a
35. oso 46 Chapter 18 ss mamc ni 47 Chapter 1 Introduction 00 Chapter1 Introduction SDO SDO 7 try command not found jmabt3r_y Welcome to my crazy little world Thanks for joining me You have in your hands the product of many late nights much day dreaming some speculative hunches a surprisingly large volume of caffeine and a willingness to take some risks If I d known quite how much work it would be might not have started but by the time realized what I d gotten into it was already far too late to quit hope you enjoy it as much as do Personally think it s pretty darn cool Like many of you I ve dreamed about the possibility of an open source audio effects processor for a long time A lot of different things kept me from starting until the day thought of creating one around the Propeller processor and that idea was so intriguing it dragged me kicking and screaming through just over a year of design really had no choice just had to do it Chapter2 Licensing Summary The Coyote 1 project consists of many different assets released under a mix of different licensing arrangements The following is a summary of the release licenses Source License Coyote 1 O S Source Code Open GPL3 Coyote 1 Effects Modules Source Open GPL3 Code and associated Dynamic Modules files c1m Coyote 1 Schematics and Provided Copyright Reproduction amp Redistribution
36. r end 8 module descriptor Module descriptor size in bytes long module end 6 module entry Module legth long 0 Module cod inter this is a placeholder which gets overwritten during lescriptor_p call long 03 80 00 00 long 00 01 00 00 long 0 long long long long long xx BB CC a b c ement ent internal propeller RAM RESERVEDO set to zero to ensure compatability with future OS versions RESERVED1 set to zero to ensure compatability with future OS versions RESERVED2 set to zero to ensure compatability with future OS versions long 0 RESERVED3 set to zero to ensure compatability with future OS versions long 6 Number of sockets Socket 0 byte In 0 Name long 0 hw SOCKET FLAG SIGNAL hw SOCKET_FLAG_ INPUT Flags and ID byte 0 null string units long 0 Range Low long 0 Range High long 0 Default Value Socket 1 byte out 0 Name long 1 hw SOCKET FLAG SIGNAL Flags and ID byte 0 null string Units long 0 Range Low long 0 Range High long 0 Default Value Socket 2 byte Rate 0 Name long 2 hw SOCKET FLAG INPUT Flags and ID byte mSec 0 units long LFO_PERIOD MIN MSEC Range Low long LFO PERIOD MAX 0 Range High long 500 Default Value Socket 3 byte Depth 0 Name long 3 hw SOCKET FLAG INPUT Flags and ID byte 0 Units lon 0 Range Low long 100 Range High long 100 Defau
37. r to the pedal it will display the Coyote 1 O S revision After booting the Coyote 1 0 5 will load Patch 0 and start it running In the default shipping configuration Patch O will be the Tremolo patch Controlling a Patch Knobs To modify patch parameters spin the knobs The functional assignment of the knobs is patch dependant When you rotate a knob the pedal will display the knob being changed KO in the image below for Knob 0 the parameter assigned to that knob Delay below the current value 835 below and the units mSec below or milliseconds 1000 milliseconds 1 second The O S implements sticky knobs which means that if you rotate a knob the knob will not begin to modify the assigned parameter s value until you have rotated its position to match the current parameter value If you start spinning a knob and the parameter does not change just keep spinning the knob across its full range when you match the current value the knob will become unstuck and the display value will begin to follow the knob position Some patches may not make use of all 4 knobs If a knob has not been assigned to a function then the parameter name will be displayed as lt Unassigned gt and rotating the knob will have no effect on the By convention the right most knob K3 is typically used to control the final gain stage output volume patch being heard of a patch Controlling a Pat
38. ramming or reproducing any data stored in or used with OpenStomp products Eric Moyer and OpenStomp are also not responsible for any personal damage including that to life and health resulting from use of any of our products You take full responsibility for your OpenStomp application no matter how life threatening it may be Dedication This project is dedicated to the memory of my dear friend Larry Altneu who died immediately after crossing the finish line in the 2007 Orange County Marathon Larry was 3 terrific mentor He significantly shaped the Engineer am today and introduced me to many of the people involved in manufacturing this device Hardly a week goes by that don t use some Engineering trick learned from him Engineers tend to live in the future We make long term plans dream new things and force them into existence When this world occasionally reminds us that we are not in control it comes as a bit of a shock Thanks First of all have to thank my awesome wife Krisula for sticking by me This project cut into my free time in a major way for the greater part of a year She knew it was something just had to do and she supported me all the way A huge thanks to Steve Wozniak both for creating the Apple computer and for writing the book iWoz had the audio version of iWoz playing in my car the night conceived the Coyote 1 and it was instrumental in inspiring me Whenever this project lost momentum
39. river Codec Conduit stie Engine Manager Static 32K Boot Bloc i Combo LCD Serial Driver Conduit Manager Module 0 Static Propeller Pin Assignments Alternate Function VIDEO 2 MEMBUS Interface MEMBUS_CNTL 2 0 Function Write SRAM Byte Read SRAM Byte Write SRAM Addr LOW SRAM_A07 SRAMAOO Write SRAM Addr MID SRAM_A15 SRAMA08 Write SRAM Addr HIGH SRAM_A20 SRAMA16 Set CCR CODEC Control Register Set GPIOO General Purpose I O 0 PLD Register CCR CODEC Control Register Chapter 10 Under the Hood N WO Chapter 10 Under the Hood UJ O CODEC_MC2 CODEC MP5 CODEC MP3 CODEC MP1 Note The CODEC yyy bits each control the corresponding CODEC yyy pin directly For an understanding of the various MCx and MPx pin functions refer to the NXP UDA1345 CODEC data sheet PLD Register GPIOO General Purpose I O 0 Reserved Reserved LCD_BACKLIGHT Note The LCD_BACKLIGHT is configured in hardware to be on whenever power is applied Toggling LCD_BACKLIGHT will have no effect Chapter 11 Creating Custom Effects Modules This is the true joy of living This being used for a purpose recognized by yourself as a mighty one This being thoroughly used up before being thrown on the scrap heap This being a force of nature instead of a feverish selfish little clod full of ailments and grievances
40. rmat the EEPROM hold the left button down while powering up the device then click the right button when prompted Clicking the left button will cancel the reformat and boot normally Patch Module Load Errors If a patch fails to load successfully due to a patch or module error then a numeric error code will be briefly displayed A list of error codes can be found in Chapter 13 The Error codes are defined in the source file COYOTE1 HW Definitions spin Real Time Error Output Clipping If the final digital output value i e the value sent to the DAC reaches its maximum then a small upward pointing triangle will appear in the upper right corner of the display This is an indication that the output is potentially becoming distorted by going outside of the available output range i e clipping Output clipping may be caused by too high an input signal or too much gain in the effects chain composing the current patch NOTE Clipping is only detected at the final output stage It is possible to have audible clipping distortion occur within a patch and not trigger the Output Clipping indicator if the clipping occurs in one effect module and some subsequent effect module reduces the gain Real Time Error Time Overflow The Coyote 1 operates at a standard sampling frequency of 44kHz That means that each effect module typically has one 44kHz sample window 22 7 microseconds in which to process a given sample The OpenStomp arch
41. rmination on the external device side with no problems and decent looking signals for a 3 ft cable run e Work whatever magic you like on the far side of the 12C devices e Design for use with a standard phone cable and try to keep the cable length around 3 ft or less Standard phone cables do not cross over so pin 1 which is 3 3V power on the Coyote 1 should connect to pin 1 also 3 3V power on the remote device e Put two RJ 11 ports on your device so that multiple devices can be daisy chained e Be mindful that if you disturb the operation of the SCL and SDA lines too much say by adding too much load or strong termination you may prevent the Coyote 1 from booting This is Chapter 12 Working with the Expansion Port UJ lo Chapter 12 Working with the Expansion Port A because the lC is shared with the internal Coyote 1 EEPROMs one of which contains the Coyote 1 s boot code On the Coyote 1 e The 0 5 needs to be updated to lock unlock the I2C semaphore around the O S s I2C accesses have not put that in yet but is very simple to add The I2C semaphore is declared in COYOTE1_HW_Definitions spin already just not used yet LOCK ID I2C e Write an Effect Module which is a device driver for the external device e found essential in my own testing to re initialize the external I2C device s on every pass through my main loop in the device driver code typically these devices have one or more co
42. signed to implement a two state on off function In these cases the convention is to name the socket with prefix Two state inputs treat all input values below 0x40000000 as false and all input values above 0x40000000 as true Two state outputs are set to 0x00000000 when false and Ox7fffffff when true Initialization sockets are a special form of input control socket which reads its input value only once during the startup of a patch They are colored light purple Their data is unsigned and they have a maximum range of 0x00000000 zero to Ox7fffffff 2147483647 The Module Descriptor The module descriptor is a data structure which describes the attributes of an effect module including its name its size its signature its revision how many conduits it has the conduit definitions how much SRAM it requires and how much RAM it requires Early on in the effect module code you ll see the get module descriptor p function which allows the Coyote 1 O S to get a pointer to the effect modules module descriptor PUB get module descriptor p Store the main RAM address of the module s code into the module descriptor long 6 module descriptor hwf MDES OFFSET CODE P 6 module entry Return a pointer to the module descriptor return 8 module descriptor Next you ll see the module descriptor definition module descriptor long hwiMDES FORMAT 1 Module descriptor format long 6 module descripto
43. ssssccccenssccccecssceccenssseccacsssessaasseeseanens 31 SOCK ETAT VD ict e tont teri A A AA AA iiv esee de AA 32 ThE Module Descriptor A tia 32 A Word abo t Socket 33 The Module Code ee ae sete Te valente erecti reve b VI eit 33 mni 34 IE 34 The Synchronization Loi ciirec eee ere d V ede a N 34 The Bypass Blocks 35 5 35 Data Declaration 35 The Effects Module 0 5 35 Linking an Effect 5 36 Recompiling and Loading the O S c ccccccccsssccssscecssececssecesssesseeecsseeeesaeceeseecseaeeesseceeseecseeeeaecesaeceesaeess 36 Useful Coyote 1 Control Socket Value to Time Conversions esee 37 Chapter 12 Working with the Expansion Port ssccccsssssccccssssccccasssceccecssseccacssceccaassssceaasseseeaes 39 IO AA A E E A A MM 39 et Ach eae Re ueteres oe ott ee taal toe ise vett 39 Onthe remote board eR e E e e RET AER ue IRR CREE ee 39 acces 40 OntlieCoyote 1 5er ipie Chapter 13 Error Codes eri aA ee eene uoi e eau eoa ea hu osa ee ro eau N ku Eee ea Ee Do eae e ra aM 41 Chapter 11 Glossary 017 05 22 43 Chapter 16 Module Signature Format cccoooccccnnnoccnnnnnonccnnnnncccnnnnonccnnnnonccccnnonccnnnnnoccccnnnnnccnnnnss 44 Chapter 17 Module Control Block format oomoocccccnononnccnonncnccnonocnccnonncnccnnnnccccnnonccccnonincccnn
44. urrently present on the attached device Note The Coyote 1 s COM port may not appear in the COM Port drop down menu if you attached it after starting Workbench or switched USB ports To update the COM port list select Refresh COM Port List from the Communications drop down menu te 1 Communications Help hNam Refresh COM Port List Advanced OpenStomp Workbench closes the COM port when not communicating with the Coyote 1 even though the state appears to be Connected This is done so that new O S code can be compiled in the Propeller IDE and loaded into the device without quitting Workbench or disconnecting Advanced f you added changed or removed Static Modules by compiling and loading a new O S build you can update the Modules list by clicking Diconnect and then clicking Connect System Resources Knobs There are 4 knob resources representing the 4 physical knobs on the Coyote 1 Knob 0 is the left most knob The Init conduit allows you to specify the initialization value of the knob when creating a patch 0 100 The output conduit outputs the knob s position Buttons There are 2 button resources representing the 2 physical button on the Coyote 1 Button 0 is the left most button The Init conduit allows you to specify the initialization state of the button s Toggle output The Toggle output toggles its value each time the button is press
45. x of assembly code Spin code constants and data An Effect Module is a piece of code which occupies a single COG and implements one or more audio effects Sometimes Effects Module is referred to as just a Module Effects Modules can be either Static or Dynamic see definitions A data path which connects one output Socket to one or more input Sockets A 32 bit portal thorough which data is exchanged between Effect Modules and System Resources Any given Socket is either an Input or an Output and caries either Signal or Control data A value assigned to an input Conduit to which no Conduit is attached An Effect Module which has been compiled into the Coyote 1 O S kernel An Effect Module which is stored in EEPROM A specific collection of Effect Modules and System Resources with a specific Conduit routing Objects which appear in OpenStomp Workbench and which represent available hardware and software resources within the pedal such as buttons knobs I O ports etc Static Radom Access Memory In this case SRAM refers to the 1 5Mbytes of memory in external chips i e outside the Propeller processor Random Access Memory In this case RAM refers to the 32K of memory inside the Propeller processor Digital to Analog Converter Analog to Digital Converter One 44kHz audio sample period 1 44000 of a second or approximately 22 7 microseconds Eight microframes NOTE The concept of
46. x7fffffff was done to ensure the maximum flexibility when interconnecting objects in Workbench The Module Code The module code will always consist of 6 basic regions 1 Pointer Loading 2 Initialization 3 The Synchronization Loop 4 The Bypass Block 5 Effect Processing 6 Data Declaration pter 11 Creating Custom Effects Modules n UJ pter 11 Creating Custom Effects Modules WJ Cha I Pointer Loading In this section the data pointer to the various system objects frame counter module control block etc are loaded and the pointers to all the socket locations are set up This section will typically have the same form for all modules though the socket pointers their names and their quantity will be unique module entry mov p module control block PRR rdlong p sustem state block p module control block mov p_frame_counter p sustem state block mov p ss overrun detect p system state block add 55 overrun 55 06 86 OFFSET OVERRUN DETECT mov p socket audio in p module control block add p socket audio in hw MCB_OFFSET_ SOCKET EXCHRNGE 0 gt gt 2 mov p socket audio out p module control block add p socket audio out hw MCB OFFSET SOCKET EXCHRNGE i gt gt 2 mov p socket rate p module control block add p socket rate S huSMCB OFFSET SOCKET EXCHRNGE 2 lt lt 2 mov p socket depth p module control block add p socket depth S husMCB OFFSET SOCKET EXCHRNGE 3 lt lt

Download Pdf Manuals

image

Related Search

Related Contents

1 Présentation de votre véhicule  3ポジション バックステップキット 取扱説明書  Equipo elevador Aqualift F (230V) de KESSEL Para  E-Sampler 9800 Manual Rev J  取扱説明書の表示  Bosch HEZ394301  Kullanım Kılavuzu & Garanti Belgesi User Manual & Certificate of  Samsung SGH-D830 Vartotojo vadovas  SmartLink_Installer_Manual  

Copyright © All rights reserved.
Failed to retrieve file