Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Bi-Lingual. Small Thumb movement in 4 directions
Said is a 45-year-old man who lives at home with his wife. Said and his wife are Kurdish and have lived in the UK for 10 years.. Said speaks and understands English, his wife has limited English and speaks to Said in Kurdish. He has Motor Neurone Disease which has now affected his speech to the point others can no longer understand him. His eyesight is poor. He still operates a TV remote by holding the remote between his thumb and forefinger – but can only operate the 4 way TV controls. He wants to spell out whole words and communicate his care needs with carers. He has tried eyegaze technology in the past but this has not been successful.
Bi-lingual. High-Contrast requirements
Fen is a 56-year-old woman who lives in the UK, she is a first-generation immigrant from China. She has had a brainstem stroke limiting her physical skills to a small thumb movement. It is not clear what Fen can see – her family and care staff feel she can hear better than she can see. Prior to her accident she spoke and understood verbal Chinese (Mandarin) well with her family members. Fen now lives in a care home where staff are English speaking. Fen would like to make her care needs known to staff and her family would like to communicate further with her. Fen has begun to use a partner assisted auditory scanning system using a paper-based book put together with her family. As this system is in Chinese it is not accessible to care staff.
English speaking child with developing vocabulary
Joel is a 6-year-old boy who has a significant visual impairment and physical difficulties. He lives at home with his Mum, Dad, baby brother and dog. His family speak both Portuguese and English. He has trialled some AAC by auditory fishing (dragging his hand across a device and hearing a cue about what is underneath it) and selecting with a switch – but this has proven difficult. He can activate a switch well with his head. He has begun to use a partner assisted scanning book with his mother e.g to choose activities to play with; to make comments like telling his mum he loves her.
Enable or disable the 4-way navigation tool. Remember - you can reposition this just by dragging it - and resize it by pressing and holding on the tool - then dragging one of the corners. Have a watch of this video to see how it works.
There are currently three options;
1 switch - Auto-Scan
2+ switches
Wheel (NB: Experimental!)
Switch access works by mapping keyboard keys to different actions. A box which allows one or several switches to be plugged in and then connect to the device is then needed. Be aware that for pasco we are looking at switch boxes that support keyboard presses without any additional software. Some (such as the JoyCable and the Crick USB switch box) emulate a joystick button which won't work. Also switch boxes such as the Hook+ won't work either unless you follow our guide on how to use iOS switch scanning with pasco. The following currently work with pasco on iOS:
By default switch access is set to Manual - which would allow someone to use the on-screen navigation tool - or use 4 switches to navigate the currently active language tree. For example the arrow keys - up, down, left & right - would allow someone to access the tree. Equally, the keys a (left), s (down), d (right), w (up) can be used. Lastly the keys 1 and 2 would allow a user to go left and right in the tree.
Automatic scanning, often called "1 switch scanning" allows a user with one switch to navigate pasco. The computer moves through each item so the user doesn't have to - and only selects the one they want when ready.
Be aware - you need to select which switch key selects (moves forward) - which you can do in the option "Switch key to select items". There are then some options you can configure:
Loops (Default: 3)
The number of times the automatic scan runs through each level of the tree before stopping.
Delay at first item (ms) (Default: 1000 ms)
It is sometimes useful to have a delay at the first item in each level of the branch to help someone to time their switch press.
Auto-scanning delay (ms) (Default: 3000 ms)
The time the scanner moves from one item to a next automatically. Want it to scan quicker/faster? Move it down. Want it to scan slower? Move it up.
Here you can choose your switches (keys) and what should do what action. Select the action (e.g. in Automatic/1-switch scanning you will need to just select the "Select item" action). Then add your key. Remove any keypresses that you don't want to be used by pressing the red cross.
By turning this on it stops the user selecting a large number of items in the tree before hearing the cue. You can change the default time here.
You probably want to keep it under 500ms other wise it can feel laggy
This feature stops the switches being responded to if they are hit within this timeframe. So for example, if a user presses a switch and hits immediately afterwards - pasco will ignore this second press if it is within the timeframe. Some
We will add additional 'helpers' (actions that alter the tree) here - but for now we only have one helper:
It's really useful for single switch scanners to get back a branch if they need to. This adds the option of 'Back' to the end of each Branch, at the beginning of each branch or not at all.
The cue voice - often called the private voice is the synthesised voice that is designed for the communication user to hear. Ideally this would be to a headphone or quiet speaker that only the communication aid user can hear.
Choose your voice and the related volume, pitch and rate (speed) of the voice as you wish. Note there is a plus symbol - this allows people who are using more than one language to add a different synthesised voice for that language. Note there is a line on each slider. This defines the default position so you can reset it if you ever slide this by accident.
The main voice - often called the public voice is the synthesised voice that is designed for the communication partner(s) to hear. This is often an amplified speaker.
Choose your voice and the related volume, pitch and rate (speed) of the voice as you wish. Note there is a plus symbol - this allows people who are using more than one language to add a different synthesised voice for that language.
For many people who are visually impaired its useful to 'hear' the items at each selected branch. This is like someone who is using their eyes to visually scan the interface. It give the user a fast way of scanning the items. If you turn this on we recommend making as fast as you can before the voice becomes hard to understand.
This won't increase the speed of any recorded messages. Note: This option is only available for automatic scanning.
This area defines how the application looks and feels.
Adjust the font size of the text shown in pasco
There are a number of themes - some designed for people with a visual impairment - to aid easier reading of the text
To change the language of the app (the menus and the configuration text) you can change it here.
This doesn't automatically change the language of the trees/vocabulary. For that you will have to use something like google translate.
Allows a user to switch the current active Tree. This means you could have one tree for social chat, another with spelling and another for a particular school or workplace. But more importantly it allows you to switch between a English only tree and a foreign language tree. More information, including how a user can switch without going into the configuration screen can be read here.
Pasco has some example vocabularies installed which you can load up. Select the tree, Press "load selected"", then "Save Tree".
Here you can export or import your vocabulary file as a zip file - or a OBF file - to be used in different AAC programmes.
Because you can have different "Trees" (Vocabularies) in pasco - you need to choose which tree you are working on, edit the tree - and then Save it when you are ready. If you want to make a new Tree - press new. More information on editing the trees can be found here
Tap on the edit button
Using the navigation menu - navigate to the node you want to edit
Tap the down arrow to go down, the right arrow to go into a sub tree element for example
Edit the text in the node.
Note that if you put text in brackets after the word - this will be the cue text. Other text is read out loud as the main text. For example My care (care)
will have the cue of care and read outloud My care
Hit the Save button (top right) when done.
Here is a quick video demonstrating this:
Tap on the edit button
Using the navigation menu - navigate to the part where you want to add a new element - or list of elements
So tap down to go down - right - to go into a sub tree element.
Use the Green Plus or Red Minus icons to add or remove elements
So pressing a plus above the selected element will add a new element above, pressing it below will add an item below - and right - will add a new sub-element.
Equally removing an item is easy by pressing the delete button.
There is no revert or undo! Be careful with the delete tool!
Hit save when done
Here is a quick video demonstrating this:
With the quick edit mode you can also add or remove audio recordings. Pasco is unique in that you can have an audio recording for the cue - and main item.
For example. This is a standard layout:
and you don't need to use -
dashes if you don't wish e.g.
ATX formats use 1-6 hash characters at the start of the line, corresponding to header levels 1-6. For example this is the same vocabulary file using ATX style headings:
Background on the markdown format we use
As well as the basic format - we use some basic formatting tricks:
Cue message. The main message is the first item. The cue is anything in brackets. e.g. My phrases (phrases)
will say "My Phrases" out loud but give the cue as "phrases"
You can either edit the text file directly in the app (go to Settings -> Vocabulary -> Edit Tree) - or in a seperate text file app and then paste it into this text area. A video demonstrating the two approaches is seen below.
These Docs will help get you up-and-running quickly, guide you through advanced features, and explain the concepts that make pasco so unique.
pasco is an open-source unique communication solution aimed at individuals who have a physical and visual impairment.
Note we definitely aren't trying to make something that already exists. There are many solutions those less visually impaired or with greater physical access can use - and should use! However if you want a purely auditory scanning interface you may want some features that these options struggle to provide as they try and meet the needs of a greater selection of indviduals. So what can we provide in pasco for auditory scanning?
Lets imagine you want a auditory cue in one language - but output your main "voice" in another. Thats difficult to do right now in many commercial solutions
If you want rapid 'pre' auditory scan - a auditory cue that is like quickly visually scanning the interface in front of you
You want a recorded audio file (e.g. someones actual voice) for the main spoken output - and a different recorded audio file for the cue.
Because the language file doesnt have pictures why can't you just write out somones list of phrases and messages in a text file?
you want a way of scanning in-app in a special way - but be able to use the entire device too - not just in a really slow in-efficient way that is great for all other apps - but not communication.
as well as simple text files wouldnt it be great to import and export to different communication apps? After all, your language is yours not a software companies.
AAC for Auditory and Physically impaired first. Other solutions exist for other purposes. pasco is not a tool to meet all needs
Need a cue in one language and main voice in another? Need recorded sounds and voices for the cue and different ones for the main? Need next letter word prediction? pasco has you covered for features not available elsewhere
pasco is being developed in the open. Want changes? Ask for them? Worried about obsolence? Pasco is here for good. Need some help right now that our documentation cant answer? Need a new feature? Please
COMPATIBILITY NOTE pasco is working best on iOS right now. Other platforms to follow.
Our small team truly appreciates every contribution made by our community: user stories, feature requests, bug reports, and especially pull requests!. If you have any questions please reach out to our Core team at .
So you use pasco? Like what we are doing? Got a real problem that needs fixing but don't understand all this code stuff? Please . We will try and help - but please note; this is very much a open source, and fundraised project. If you can please consider donating the project
This is the home to the project. Please fork and make changes on this project going forward.
Before we get into the full-blown "proper" way to do a pull request, let's quickly cover an easier method you can use for small fixes. This way is especailly useful for fixing quick typos in the docs, but is not as safe for code changes since it bypasses validation and linting.
Sign in to GitHub
Go to the file you want to edit (eg: )
Click the pencil icon to "Edit this file"
Make any changes
Describe and submit your changes within "Propose file change"
That's it! GitHub will create a fork of the project for you and submit the change to a new branch in that fork. Just remember to submit separate pull requests when solving different problems.
We like to keep a tight flow when working with GitHub to make sure we have a clear history and accountability of what changes were made and when. Working with Git, and especially the GitHub specific features like forking and creating pull requests, can be quite daunting for new users.
To help you out in your Git(Hub) adventures, we've put together the (fairly standard) flow of contributing to an open source repo.
Whether you're working on the API or the App, you will need to have your own copy of the codebase to work on. Head to the repo of the project you want to help out with and hit the Fork button. This will create a full copy of the whole project for you on your own account.
To work on this copy, you can install the project locally according to the normal installation instructions, substituting the name acecentre
with the name of your github account.
If you're doing more work than just a tiny fix, it's a good idea to keep your fork up to date with the "live" or upstream repo. This is the main acecentre repo that contains the latest code. If you don't keep your fork up to date with the upstream one, you'll run into conflicts pretty fast. These conflicts will arise when you made a change in a file that changed in the upstream repo in the meantime.
When using git on the command line, you often pull and push to origin
. You might have seen this term in certain commands, like
or
In this case, the word origin
is refered to as a remote. It's basically nothing more than a name for the full git url you cloned the project from:
is equal to
A local git repo can have multiple remotes. While it's not very common to push your code to multiple repo's, it's very useful when working on open source projects. It allows you to add the upstream repo as another remote, making it possible to fetch the latest changes straight into your local project.
When you want to update your fork with the latest changes from the upstream project, you first have to fetch all the (new) branches and commits by running
When all the changes are fetched, you can checkout the branch you want to update and merge in the changes.
If you haven't made any commits on the branch you're updating, git will update your branch without complaints. If you have created commits in the meantime, git will step by step apply all the commits from upstream and try to add in the commit you made in the meantime. It is very plausible that conflicts arise at this stage. When you've changed something that also changed on the upstream, git requires you to resolve the conflict yourself before being able to move on.
Conflicts You should always favor changes on upstream over your local ones.
Whenever you begin working on a bugfix or new feature, make sure to create a new branch. This makes sure that your changes are organized and separated from the master branch, so you can submit and manage your pull requests for separate fixes/features more easily.
Up-to-date Make sure to update your master branch with the one from upstream, so you're certain you start with the latest version of the project!
Prior to opening your pull request, you might want to update your branch a final time, so it can immediately be merged into the master branch of upstream.
Make sure to check if your branch is up to date with the
master
branch of upstream. An outdated branch makes it near impossible for the maintainers of acecentre to check and review the pull request and will most likely result in a delayed merge.
Once you've commited and pushed all the changes on your branch to your fork on GitHub, head over to GitHub, select your branch and hit the pull request button.
You can still push new commits to a pull request that already has been opened. This way, you can fix certain comments reviewers might have left.
Please allow the maintainers of upstream to push commits to your fork by leaving the "Allow edits from maintainers" option turned on. This allows our Core Team to help out in your PR! :::
The main thing to be aware of when submitting a new acecentre feature request, is our rule on edge-cases. To keep the acecentre core codebase as clean and simple as possible we will only consider adding features that at least 80% of our user-base will use. If we feel that less than 80% of our users will find the feature valuable then we will not implement it. Instead, those edge-case features should be added as Extensions.
Also, if you want to see the most highly requested features you can sort by :+1:
(the thumbs-up emoji).
If your idea passes the 80/20 test and has not already been submitted, then we'd love to hear it! Submit a new issue using the Feature Request template and be sure to include the enhancement
label. It's important to completely fill our the template with as much useful information as possible so that we can properly review your request. If you have screenshots, designs, code samples, or any other helpful assets be sure to include those too!
You can also vote on existing feature requests. As mentioned above, the :+1:
and :-1:
are used for sorting, so adding one of these reactions to the GitHub issue will cast a vote that helps us better identify the most desired (or undesired) features. And remember to add a comment if you have additional thoughts to help clarify or improve the request.
Our core team is always working hard to implement the most highly-requested community features, but we're a small team. If you need the feature faster than we can provide it, or simply want to help improve the acecentre platform, we'd love to receive a pull-request from you!
The easiest way to get up-and-running is with the , as it has all the features available. Alternatively have a play with the version online - just note features like splitting the audio channels or recording sound recordings aren't supported.
pasco is a and currently. Here are the features and quick overview that which features work where:
Feature | iOS | Web |
---|
So for the full-feature verison of pasco look at using it on a iOS device (iPhone, iPod Touch, iPad).
If you need switch scanning you will also need a compatible switch interface. Pasco is designed to work natively with switch interface boxes that support space and enter - or arrow keys. This includes: , , and the . For all these switch interfaces you need to put it into a mode that supports pressing 'space' and 'enter' keys.
You can use other switch interfaces designed to work purely with Apple's own switch scanning system such as the . Using these gives you the advantage of being able to use the entire device for scanning - and pasco's own features - BUT you need to be aware of how to create a switch recipe and the user having the ability of changing to this recipe when they are ready. Follow .
If you wish to use a second speaker - we recommend right now to use a wired headphone - and just the device's own internal speaker.
When you first load pasco you will see a quick setup screen. It should look a little like this
Depending on which device you are using these screens may look slightly different - and depending on whether you have your screen in potrtait or landscape. But all the same options should be available.
Locale Which language are you wanting the app to be setup in? Changing this will change the language of all the menu items and configuration buttons.
Choose an example tree "Trees" are what other communication apps call "Pagesets" or "Gridsets" or similar. We call them "Trees" in pasco because it defines how language is navigated - like an ever expanding network of branches. Here we have some example trees to get you started. Choose one to see some examples of pasco.
Automatic Scanning or Manual. Choose Manual if you want to try it out without a switch - or if you wish to try it with two or more switches. If you want to use it with one switch select Automatic scanning. When you do this, make sure your switch is set to Enter
Cue Voice is the voice to hear the auditory cue. Typically a user may hear what they can select right now with a cue (sometimes called Private voice). You can choose the voice, the rate, pitch and volume of this voice. You can try an example of the settings by pressing the Green play button
Main Voice is the voice that others will hear - typically the communication partner. Sometimes people amplify this using a secondary speaker. In other software this has typically been called the Public Voice.
Once you have pressed the Green "Start" button at the bottom of the quick setup screen - or you click on the small "Play" icon anywhere else in the app you should see a screen a little like this below.
The screen has two main components. The grey navigation bar at the top where you can access "Configuration", "Help" and "Edit" options, and the main language display area.
Let's now give you a quick overview of the parts of the screen.
The navigation menu (see left) is a small 4-way directional navigational tool to allow a communication partner to navigate the currently loaded language tree. Pressing up - moves up in the current branch, down - moves down and left will move into the next branch - if available - or select the current item. Right will go back a level - if there is a level to go to.
Although originally designed for the communication partner we have found some clients who have a small thumb movement to be able to use this
Simply press and hold and then release. It can take a little while to work out the timing. When you release you are looking for a dotted line to appear around the cursor (see right above). By dragging the corners you can resize the menu - larger or smaller. Want to get it back to the default size? Hit the reset button in the middle when in this resizing mode.
To move the menu press and hold on it as above and simply drag it to somewhere you need it on-screen
Pressing the edit button (the small pencil icon in the grey bar at the top of the screen) gives you access to a language editor.
When in edit mode - select an item in your language and press the small green plus signs to add an item or the red minus sign to remove an item. Simply write your message. If you want a different cue for the item simply type it in brackets. E.g. If you wanted the main message to be hello, how are you?
but the cue to be hi
you could write in your box hello, how are you?(hi)
You can't view cues or advanced meta-data commands in edit mode We want to make pasco as simple to use as possible. By providing some other means to view the cue would make this messy. So right now you can just listen for the cue - and edit if you don't like what you hear
Note it can be difficult to navigate to somewhere else in your tree on iOS - so do have the Navigation menu available to you when using this mode - it really helps!
As well as adding or removing phrases you can also add or remove recorded messages on iOS. To do this - select an item and you should see a small "spanner" item at the top right of the dotted area around the word/phrase selected. Tap this and you can now press the record button to add your own recorded main or cue voice.
👍 You've successfully installed and setup pasco!
The "vocabulary" for pasco is stored as a text file. You can read - and write this text file in a number of applications outside of pasco. We use our own internal format for this - but its based on a text file format used across the internet called . The app supports "ATX" style and standard markdown lists formats.
Be super careful with the use of tabs - and spaces. The lines have to have the right spacing to be read by pasco correctly. You can use tabs - or spaces but to make your life easier - try and use the same throughout. Confused? on how to do this correctly!
Pasco's language file is based on markdown - and the work by others who use markdown for mindmaps. See for where this inspiration came from
A nice and simple way of making pasco trees is to use a mindmap editor that exports in this markdown format. We have some details on how to do this using an app called mindnode .
Meta-data commands. We can add additional functionality, for example a way of switching which is the current active tree, using a recorded audio file - or controlling a internet enabled device such as a light switch - using these commands. e.g. Go Back <meta data-back-n-branch="1">
will control pasco to go back a level. For more information on all the commands you can use please read the .
As well as having its own vocabulary format, Pasco supports an open standard of vocabulary called the Open Board format. More information on this format can be seen . Apps that support the format can be seen .
To import OBZ formats - select the Import tool found at Settings -> Vocabulary -> Tools -> Import to import your format.
Loosely based on by
Before adding a new request, you should also first to see if it has already been submitted. All feature requests should include the enhancement
label, so you can filter by that. And remember to also check closed issues since your feature might have already been submitted in the past and either or already implemented.
Want a nice simple speaker that you can put in the headrest of a chair? Look for
For a full guide on all of the configuration options . The options seen on this screen are seen below:
Want to stop someone accessing these buttons? Check out Guided Access on iOS. Its a really neat built-in way to hide elements on the screen and lock a user into a app. Read about how to set it up
😞 Got a problem? Dang! See our guide.
Cue / Main voice splitting between headphone and speaker | ✅ | ❎ |
Import/Export of Vocab tree | ✅ | ✅ |
Offline support | ✅ | ✅ |
In-App Editing | ✅ | ✅ |
In-App Voice Recording | ✅ | ❎ |
Adjustable font size and Colour Themes | ✅ | ✅ |
Switch Access (1-4) | ✅ | ✅ |
On-Screen navigation tool, Resizable and Draggable | ✅ | ✅ |
It takes significant resources to maintain and advance pasco. If you'd like to help keep pasco active and open-source please consider supporting it through one of the methods below.
Our development and research all cost money. If you can spare the cash, we have a few ways to help us keep the lights on.
We accept memberships through our Patreon account. These monthly donations are the ideal financial contribution since they're a bit more dependable and we can roughly predict the monthly amount. (not yet released)
Please donate to us via JustGiving. Small or large donations welcome!
Whether squashing bugs, optimizing the codebase, increasing test coverage, or adding new features, submitting pull-requests through GitHub is extremely valuable.
No technical skills? Not enough time for a pull-request? No problem! We have plenty of user guides and documentation that could use some extra attention. Fix spelling, add code examples, help organize, write new articles, or just check for broken links... it all helps.
pasco is a worldwide project. Our team and users are spread out across the globe and often speak different languages. If you do too, we'd love to get pasco translated into your native tongue. It's easy, and each new translation opens the door to a huge number of new users.
This one is surprisingly underutilized. If you encounter a bug within pasco, no matter how small, we would love to hear about it. With such a small team, it's difficult for us to test every commit. Sometimes after we update a small snippet of code, a totally different piece of code breaks elsewhere. More people using and testing the software is always good, but if no one reports the issues they come across then it may not get fixed!
Have a few followers on Twitter? A quick post mentioning our @AceCentre account goes a long way. We've even been known to re-tweet some of our favorite shout-outs. And be sure to follow us to get the most up-to-date info on new features, releases, and sneak-peeks.
One sentence. Even that was a sentence and it was only two words! If you're a fan of pasco, we'd love to hear why with a short endorsement. Shoot us an email, Tweet, or Slack message. And if you'd like to have your testimonial on our website be sure to include your name, title, company, and picture.
pasco is very much in-development. Its largely being provided by Ace Centre staff for the purposes of named individuals. If you start using pasco and need more support follow the below options
Drop us an email at enquiries@acecentre.org.uk and we will try and help you!
pasco is a proud member of the OpenAAC group. OpenAAC is about creating a open set of standards and development environment for building AAC systems. You can join the group here #prj-pasco-public channel and ask away your questions.
So pasco is unique because we have thought about early switch scanners - and seasoned switch scanners from the start of development. The problem for many switch scanning users is they either learn to use a easy approach within a specific app - but usually the user is then stuck within the app; or they have to use the built-in iOS switch scanning which is often inefficient when using it for communication because you have to scan through screen elements and actions that you don't need access to.
In pasco you can either use our built-in scanning methods - or use the ios scanning method. How? Well to use the iOS scanning method we recommend setting up a switch recipe which "hold at point". With one switch - create the recipe by tapping at the point of the right arrow of the navigation menu. Put a timeout on the recipe - and this will allow the user to go back to normal scanning if they don't press anything after a while.
warning This is far from perfect To make this easier Apple really need to allow a long-press to toggle turning a defined recipe on or off. But you can't do that yet. Want it? Please tell them :::
pasco is designed to work well with an external headphone or speaker so the person communicating can only hear the cue rather than others in their environment hearing the cue constantly. Please note. This feature is only available on iOS at present. To do this plug in a wired headphone or speaker to the device (it does not work on bluetooth speakers yet!). When you do this all sound, by default, will now be directed to your headphones. To redirect the Main voice to the speaker of the iPhone/iPad you need to check the box to redirect the output in the Config->Speech.
Below are solutions to some common issues that you may experience when working with pasco.
Premium Support AceCentre is a charity, and we are providing this as-is. If you need something urgently and can pay, we ask you to donate to us - or another developer to help fix your problem
Its fair to say we haven't nailed bluetooth speakers yet. Its tough
Press and hold the small arrow in the bottom right of the keyboard.
Yes. Annoyingly there is no tab key on iPads/iPhones etc. So what to do? Follow these steps to make a keyboard replacement
Mindnode is a Mind Map editor. It works rather beautifully with pasco to develop complex deep language trees. Pasco supports its "Markdown" export file format. So for example a tree with two roots - may look like this:
and pasting the exported markdown file format into pasco we get:
There are three formats that pasco reads langauge trees in.
Mindnode - Markdown format. - ATX Style
Files look a little like this:
It's not the easiest to read - note that with markdown line breaks are key. It's easiest to generate this with something like MindNode - an iOS and Mac app to generate MindMaps. It really is a breeze
Tab OR Space Indented text file
Here a file looks like this:
It looks a little easier to read - but be warned - spaces and tabs at the beginning cannot be mixed. Don't put a space and then a tab. Its not the easiest.
Open Board format
To export - select Export in the Configuration screen and select 'obz' format. You will need a way of sharing this file - either via email or your files app (and then dropbox etc) to make use of this outside of your iPad. Note it exports all your sound files too.
'Meta-data' commands are commands added in-line to the tree file which changes the function of that part of the language. For example, we have commands that stop the tree automatically going back to the top - and commands that help with spelling. For example, If you want to change create a command to go back you would type this in your file
This is the Control data command - back-n-branch. This means you can set an action on the press of this command to go back up n levels. Maybe one or two branches if necessary.
The following is an example markdown for a metadata in a node
It's the replacement text for utterance for cue
To stay in a branch simply add this at the top level item:
e.g.
To go back one level or several you can use use back-n-branch=N where N = number of branches to step back to. e.g.
And lastly, to select an item and then exit use select-utterance
Spelling is possible. To start it you need a branch that defines a alphabet. So the root node should have spell-branch
:
To spell a letter use spell-letter
e.g. <meta data-spell-letter=" ">
It's the replacement for the text existed in that node. Instead this value will be added to list of letters
The option to delete the last letter selected
The option to remove last inserted character in spelling queue
Considers all leaf of that branch to be as spell letters, It used for defining where spell function should be used.
Firstly we need to tell pasco that there will be changes to the layout after each selection:
Next we need to define some aspects of prediction. For Word prediction we define it with data-dyn=spell-word-prediction
:
Next we say the number of predictions that are going to be presented:
And lastly, we can define after how many letters are spelt before we get predictions:
We can also use next letter prediction. This is done with data-dyn=spell-letter-prediction
:
Plays the selected audio for cue and main voice
Plays the selected audio for cue voice
Plays the selected audio for main voice
With meta tags you can specify attributes for any node in the tree file. For example. You can implement back function in a branch, When you select back node then it will move up from Its current position in the hierarchy. In the example below when "Go Back" has selected it will move to "Animals".
Meta tag is a regular html tag, And here is how we add attributes to a node. <meta data-name="value" [...]>
. All attributes should start with prefix data-
, Following with attribute name. Note that tag can contain more than one attribute.
In example above back-n-branch
specifies a behaviour for when It's selected.
auditory-cue
type: string
Auditory cue specifies what should get uttered when user scrolls over nodes, AKA move to next or previous.
auditory-main
type: string
Auditory main specifies what should get uttered when user selects a node.
It's not applicable to spelling branch
back-n-branch
type: integer (greater than zero)
To move up n
levels in the tree hierarchy when the node has select.
back-n-branch-notify
Back n branch attribute performs back functionality. And it does not utter (with main voice) the node itself. As selecting a node does that. When you include back-n-branch-notify
it notifies the user by uttering with main voice.
audio
The audio to play instead of utterance with speech synthesizer. It applies to cue and main voice.
cue-audio
The audio to play when user scrolls through nodes. cue-audio
overrides audio
attribute when you specify both.
main-audio
The audio to play when user selects a node. main-audio
overrides audio
attribute when you specify both.
locale
type: string
Specify locale for a node. At the moment this attribute has only effect on speech synthesizer voice selection. At config you can specify what voice to use for every locale, When you apply locale to a node it will change the voice accordingly.
Here are possible values you can set as locale.
"en-GB"
English (UK)
"de"
German
"fr-FR"
French
"es-ES"
Spanish
"ar"
Arabic
"gu"
Gujarati
"cy"
Welsh
You may also use only language part of locale. For example instead of "en-GB"
if you use en
. pasco will match it to first locale it finds with same language.
cue-locale
type: string
Same as locale
, This attribute is designed to override locale
for cue voice. cue-locale
precedes locale
when both are set in a node.
main-locale
type: string
Same as locale
, This attribute is designed to override locale
for main voice. main-locale
precedes locale
when both are set in a node.
spell-branch
pasco enables spelling with this attribute. You have to assign it to top level node that contains spelling branch. Here's an examples.
You may also set the attribute to root node like this.
spell-delchar
When user selects a node with this attribute. It removes a letter from existing spelling session.
spell-finish
You have to use "spell-finish" to finish the existig session. It also notifies with main voice similar to selecting a node outside spell-branch
.
spell-letter
type: string
You may use spell-letter
to specify next letter to add in the spelling session. By default it is going to use the text of the node itself.
spell-word
type: string
You can use spell-word
to complete a word in the spelling memory. Let's say you select letter A
and then select spell-word="apple"
. Then it will remove registered letter A
and then adds apple.
Spelling process allows the user to add more than one word by adding space in between them.
spell-update-dyn-onchange
When this attribute is given to spell-branch
node. It will update all dyn nodes inside this branch.
This attribute is primarily used when spell-branch
node contains dynamic nodes. With dyn="spell-word-prediction"
and/or dyn="spell-letter-prediction"
.
stay-in-branch
With stay in branch you can specify a branch to start over from when user selects a leaf node in that branch. Here's an example.
change-tree
When user selects change-tree
pasco tries to load the given tree and open it. Then it starts from beginning in the new tree.
change-tree-by-name
type: string
Change by tree is similar to changetree
. Except it loads the tree from saved trees inside pasco. You can manage saved trees at Vocabulary section of config page.
no-main
When you select a node that has no-main
it will not utter main voice.
webhook
type: url (string)
pasco has a set of webhook attributes that enables users to perform an http request to sites that support cross-origin xhr requests. It is specifically designed for use of iot webhooks like zapier.com, Here's an example.
webhook-method
type: string
Specifies method of the webhook request. Default value is POST
. Possible values are: GET/PUT/POST/DELETE
, etc.
webhook-content-type
type: string
Specifies request content type of the webhook request. Default value is application/json
.
webhook-body
type: string
Specifies request body of the webhook request. Default value is {}
(Empty json object) when content-type is application/json
. Otherwise body is empty.
webhook-success-message
type: string
You can set the message to utter when pasco receives success response from this webhook request. You can add this attribute to a webhook
node.
webhook-skip-validating-response
With this attribute added to webhook
. It will skip validating response when response is OK (200). This attribute was specifically designed for zapier.com webhook. By default it is false.
webhook-modify-headers
When this attribute is true, Only then webhook will actually modify request headers. Default is false, It is designed for when cross-origin server does not allow for modifying headers. At the time of design zapier.com webhook does not allow changes on headers.
dyn
type: string
Dynamic attribute introduces dynamic nodes into pasco. Below you can see possible values.
dyn="trees-switcher"
Lists saved trees, Each as a node. And when user selects any. It will change the tree to that.
dyn="spell-word-prediction"
Offers some words as prediction of current spelling. Here are the accepted attributes for this dyn. word-file
, max-nodes
and predict-after-n-chars
.
dyn="spell-letter-prediction"
Predicts order of alphabetic letters according to current spelling status. Here are the accepted attributes for this dyn. word-file
, max-nodes
, predict-after-n-chars
and alphabet
.
words-file
This attribute is required when spell dyn has set to a node.
Only for spell dyns
max-nodes
type: integer (greater than or equal zero)
Maximum number of nodes to show as predictions. Default: 3
Only for spell dyns
predict-after-n-chars
type: integer (greater than or equal zero)
Start predicting after n letters has inserted when spelling. Default: null (no limit)
Only for spell dyns
alphabet
type: string
String of letters to use for prediction. Default: abcdefghijklmnopqrstuvwxyz
Only for spell predict letters dyn
Path is of type string that is expected to be http(s) url or relative path in the package or relative path from base url.
No value is required, Since it is a boolean attribute, example <meta data-attr-name>
. You can also set Its value to false
or true
.
Pasco natively supports the . To use this simply upload your board(s) as a 'obz' file in the Configuration screen - and hopefully it should work! Note that we of course strip images - and right now there is no built in 'cue' for items. We use the label for this.
We need to define a corpus to predict from. There are a range of Corpus' already in pasco (see for some examples. These are effectively a list of words with their frequency.)
(A full example can be seen )
type:
type:
type:
type:
type:
type:
type:
type:
type:
type:
type:
type:
type:
type:
Words file used for word prediction. At the moment predictions have a simple method of sorting according to weight in words file.
pasco is a cordova app. The logic is largely in javascript with some custom work built for iOS.
To get you up and running this should get you to the point where you can work on the normal web version:
For the iOS version you will need to be on a mac with XCode. Here are the commands to get going with this:
You should find the xcode project in cordova\platforms\ios\pasco.xcodeproj
i.e. what goes where.
Before you edit the raw language file you must remember some rules!
Use a Plain Text editor. Don't use Microsoft Word, Wordpad, Apple Pages or similar. When you have a plain text editor - no fancy formatting like bolding text or underlining is possible. Which is great for pasco - as it will mess with its head!. The only formatting you can use is a tab to indent the text (or use spaces). For example:
Tabs and Spaces don't mix! Each line can start with either spaces OR tabs. Not both
So you cannot do this:
i.e. here the file has started with a space - but then given a tab. The next line has two spaces. In many text editors this is difficult to see - but effectively we have messed up pasco. Does it look at spaces or tabs?
Cues can be put in brackets
for example if you wanted the person to be able to say "Hello World" (Main Voice) but a cue to be "Hello" we could do this:
Unless you have a fancy iPad Pro - or are using an external keyboard you cant use tabs on the iPad - so you will have to use spaces instead. Where you would use one tab to indent - do the same with a space. Keep the number of spaces the same so your file looks nice and neat.
If someone is operating a single button and has learnt the basics of simple automatic scanning then they can use pasco to make their needs known. A video explaining scanning can be found . To configure pasco for this within the Config Screen change it to "Automatic-Scanning" Under "Switch Access". There are some options available when you do this.
Loops. This is how many times the scan will go through each level of the tree if no item is selected. It can be useful if the indvidual wants to listen first and then select. However if you are using it for this try and look at the "First time run" Option
Delay at first item. Sometimes its difficult for people who use auto-scanning to select start the scan AND select the first item. This delay time adds an extra delay to the very first item at each level of the vocabulary
Auto-scanning delay. This is the time it takes to move from one item to the next. Some people call this the "Scan Time".
There are some other settings too which are not specific to single switch scanning:
Switch key to select items Many switch boxes (the piece of equipment that connects your switch to the computer) use space or enter as the emulated key press. Which emulated key press are you using? This will be the key that selects items
First Time Run (Cue Voice) It can be useful to have a cue for the first time the scan goes through each level of your vocabulary. This may go a lot faster than the regular scan rate. This is called the First time Run. By turning this on you can change the rate and a different voice if required
Ignore second hits(ms) If the user has difficulty pressing the switch once - or for example tremors on a switch - increasing this time can help. It ignores second hits of the switch if they are within the time period selected
Ignore key presses under n ms This setting tells the app to ignore short switch presses. You can alter this time as you need to.
One last configuration that is very helpful for automatic scanning is the "Back option for all branches" Under Helpers. This puts a "Back" action at the bottom of each level of the vocabulary allowing someone with one switch to go back a branch if they make a mistake.
Some people may use two switches. One switch will move through the items - with a second switch selecting them. This is called Two-switch or Manual scanning. To configure pasco for this within the Config Screen change it to "Manual" Under "Switch Access". There are some options available when you do this.
Switch key to select items Many switch boxes (the piece of equipment that connects your switch to the computer) use space or enter as the emulated key press. Which emulated key press are you using? This will be the key that selects items.
**Move with the other switch (Step scanning)**You will need to select this if you are using two switch scanning. What does this button do? Lets imagine you select "Space" as your selection key. Checking this box will make "Enter" your move key. Equally if you have "Enter" as your selection key it makes "Space" the move key.
First Time Run (Cue Voice) It can be useful to have a cue for the first time the scan goes through each level of your vocabulary. This may go a lot faster than the regular scan rate. This is called the First time Run. By turning this on you can change the rate and a different voice if required
Ignore second hits(ms) If the user has difficulty pressing the switch once - or for example tremors on a switch - increasing this time can help. It ignores second hits of the switch if they are within the time period selected
Ignore key presses under n ms This setting tells the app to ignore short switch presses. You can alter this time as you need to.
One last configuration that is very helpful for manual scanning is the "Back option for all branches" Under Helpers. This puts a "Back" action at the bottom of each level of the vocabulary allowing someone with one switch to go back a branch if they make a mistake. NB: If someone can access a third switch you can set this switch to "A" or "Back arrow".
Some individuals can operate one finger or thumb with some dexterity once positioned in the correct place so that they, for example, can control the navigation arrows of a remote control. Pasco has a built in navigation aid that, although designed for a communication partner to use can be useful for the individual. To turn this on Select the "On" option of the "On-screen navigation".
The navigation arrow allows you to go up,down, left and right through the language of your vocabulary
Once on you can press and hold on the 4 way arrow to move the navigation tool around the screen to where you need it - and resize it. To resize it press and hold on the middle of the arrow then grab the edge of the dotted line surrounding it to resize the tool.
To use this, pair with your device (iPhone, iPad or other device using pasco). Make sure your numlock setting is on so you can use the arrow keys. The arrows allows you to go up,down, left and right through the language of your vocabulary
Some people may understand one language but need to communicate to others in a different language. Pasco allows you to do this by changing the voice of the cue (the voice that the pasco user would hear) - and the main voice (the voice that others would hear). There are two ways you can achieve this with pasco
Using the in-built Text to speech engine - and changing the language
Recording your own cue/main voice audio recordings
pasco has some simple and advanced editing available. We will first look at the simple - within app way of editing. To Edit within the app navigate to the tree or part of the tree you want to access (hint: enabling the navigation tool helps this) and then hit the Top right Edit icon (looks a little like a pencil and pad). Once in this mode tap on the item you want to edit. A white box will appear with small markers. If you want to edit the text (the label) - just tap in the white area and with the on-screen keyboard edit the text as you wish.
If you want to add a new item above or below this item - simply hit the plus symbol either above or below the item
If you want to change the recorded cue or main recording - you can do this by tapping on the spanner symbol next to the item you want to change. Then in the next window select which the recording is for (Main, Cue or Both) and press and hold the red "Record" button. Release the button when you are finished recording.
In the config it's possible to import and export your own language tree. This is simply a text file. There are two ways you can make this:
Copy and paste the file (either the markdown file - or the indented text file) into the Tree in the Config.
Some individuals can operate an external number pad (like ) - where one or more fingers can operate the arrow keys. This can be placed in the correct place - and mounted if required.
Within . A mindmap editor. Create your list then export to Markdown and import this file
Within a plain text editor (e.g. Notepad). Simply indent lines using the tab key under each heading. You can look at an example