The HS-80 is an Alpha Juno 2 for the casual home user, with a slightly less appealing cosmetic appearance. The Alpha Junos have been used by Mundo Muzique, Vince Clarke, Matt Megaton Haines, Paul Hardcastle, Fatboy Slim, Massive Attack, Bomb the Bass, The Prodigy, Faithless, Youth, Joey Beltram and Human Resource.
- Juno Editor 2 3 3 Walkthrough 3
- Juno Editor 2 3 3 Walkthrough 4
- Juno Editor 2 3 3 Walkthrough Xbox 360
The reason the Roland JUNO DS88 won me over was because I instantly fell in love with the sound quality of the instrument. It sounds as powerful and deep as other strong synthesizers like the TYROS 5 and the Montage 8 but it comes nowhere near those options in terms of pricing; the DS88 is much more inexpensive. Tabular Editor lets you work offline by opening a Tabular Model directly from a Model.bim file. You can save your changes back to the file, or deploy the model to a Tabular server. You can also open a Tabular Model that was previously deployed to a server, make offline changes and then deploy those changes back to the server with a single click. The latest stable version of Scalastyle is 1.0.0 for Scala 2.10/2.11/2.12. See the Release Notes. There are several ways of using it: Maven Plugin; Eclipse plugin (for 4.2 Juno and 4.3 Kepler and 4.4 Luna) SBT plugin; Command line; Gradle Plugin.
- Navigation
- Main Page
- Community portal
- Current events
- Recent changes
- Random page
- Help
- Toolbox
- Page information
- Permanent link
- Printable version
- Special pages
- Related changes
- What links here
This page describes functionality first available in the Helios (Eclipse 3.6) release.
A brief example of the editor is followed by the description of the Ecore representation.
A tutorial introducing OCL and its integration with Ecore forms part of the OCLDeveloper Guide accompanying the OCL release and is available online atOCL Developer Guide.
- 2Ecore Representation
- 2.1EPackage configuration
- 2.2EClassifier invariants
- 3Registration
OCLinEcore Editor
The Sample Ecore Editor is convenient for maintaining a couple of OCL constraints, but it has distinct limitations as an Integrated OCL Development Environment:
- maintenance of the EAnnotations needs care.
- the OCL expression is difficult to read in the Properties View.
- syntactic and semantic errors in the OCL are not detected.
The OCLinEcore Editor overcomes these limitations. The Editor has been available for use since Eclipse OCL 3.0.0 by installing the Eclipse OCL Examples and Editors functionality.
- The Examples functionality may be installed directly using Help->Install New Software from the Indigo, Juno site or Kepler sites; Select the OCL Examples and Editors Feature from the Modeling category.
With the OCLinEcore Editor installed, you may select the Ecore file in a Navigator (Resource Explorer, Package Explorer,..) and invoke Open With->OCLinEcore Editor from the context dependent right button menu. The display should show
The above display is the unchanged result of opening Company.ecore.
Beware that the editor is very new; there is validation of name references but not of their types; this is work in progress. Sometimes spurious errors are displayed, which may go away with a Save, but may require an editor close and reopen.
The OCLinEcore Document may be edited with the aid of syntax and semantic validation and completion suggestions.
Whitespace and OCL comments within and surrounding the OCL expressions are persisted in the Ecore EAnnotations. If you want to persist comments outside of the OCL context, invoke SaveAS OclInEcore for the Document root in the Outline.
The OCLinEcore uses strict OMG syntax for OCL expressions and an extrapolation of that to the surrounding Ecore. A full write up is TBD. The surrounding syntax of the example editor is open to debate and may change once the editor ceases to be an example in the release after Helios.
Ecore Representation
OCL can be embedded in Ecore using annotations. Maintenance of these annotations is performed automatically by the OCLinEcore editor described later. This section explains the underlying representation and so descibes their direct maintenance using the Sample Ecore Editor. An example is shown below.
The relevant annotations (a purple dumbbell with a paperclip) may be added by selecting New Child->EAnnotation and then New Child->Details Entry.
EPackage configuration
Juno Editor 2 3 3 Walkthrough 3
The embedded OCL becomes active when the appropriate delegate functionality is specified. In practice all three functionalities should be specified. This specification provides EMF with the required configuration information to access the extended functionality provided by these delegates.
Setting Delegate
The setting delegate functionality enables OCL expressions to define initial or derived value of an EStructuralFeature. Thus when eGet(CompanyPackage.Literals.COMPANY__SIZE) or Company.getSize() is invoked the OCL expression is evaluated to provide the value. In an OCL context, the corresponding eSet or setSize is not applicable.
The setting delegate is specified by an EPackage EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'settingDelegates'
Value = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'settingDelegates'
Value = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
The delegate value matches an org.eclipse.emf.ecore.setting_delegate extension point usage in the org.eclipse.ocl.ecore plug-in that provides the delegate functionality. Multiple comma-separated delegates may be specified.
Invocation Delegate
The invocation delegate functionality enables OCL expressions to define the body of an EOperation. Thus when eInvoke(CompanyPackage.Literals.EMPLOYEE__REPORTS_TO) or Employee.reportsTo() is invoked the OCL expression is evaluated to provide the value.
The invocation delegate is specified by an EPackage EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'invocationDelegates'
Value = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'invocationDelegates'
Value = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
The delegate value matches an org.eclipse.emf.ecore.invocation_delegate extension point usage in the org.eclipse.ocl.ecore plug-in that provides the delegate functionality. Multiple comma-separated delegates may be specified.
Note: When generating the java classes from your genmodel, remember to set the genmodel option 'Operation Reflection' to true. (From EMF 2.8 onwards, 'true' is the default.)
Validation Delegate
The validation delegate functionality enables OCL expressions to define one or more invariants of an EClassifier. Thus when the EValidator is activated to validate the classifier, the OCL expressions are evaluated.
The validation delegate is specified by an EPackage EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'validationDelegates'
Value = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'validationDelegates'
Value = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
The delegate value matches an org.eclipse.emf.ecore.validation_delegate extension point usage in the org.eclipse.ocl.ecore plug-in that provides the delegate functionality. Multiple comma-separated delegates may be specified.
EClassifier invariants
Ecore provides two different representation for an OCL invaraint that refines the behavior of an EClassifier. One representation exposes the invariant as part of the EClassifier API.
Each non-API invariant is represented as an EAnnotation for the named OCL-invariant constraint and an EAnnotation to enumerate the invariant names. This form of OCL invariant is called a constraint in Ecore documentation. The invariant does not contribute to the EClassifier API.
Each API invariant is represented by an EOperation for the named OCL-invariant constraint, with an EAnnotation to define the operation body. This form of OCL invariant is called an invariant in Ecore documentation. The EOperation contributes to the EClassifier API allowing it to be invoked by application code; perhaps for incremental re-evaluation of invariants.
non-API invariant
Juno Editor 2 3 3 Walkthrough 4
The example shows the specification of the body for the Employee mustHaveName invariant equivalent to the following OCL Document snippet.
The body is specified by an EClassifier EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'mustHaveName'
Value = ..the OCL expression..
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'mustHaveName'
Value = ..the OCL expression..
and an EClassifier EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'constraints'
Value = space-separated list of invariant names
Source = 'http://www.eclipse.org/emf/2002/Ecore'
Key = 'constraints'
Value = space-separated list of invariant names
API invariant
The example partially shows the specification of the body for the Employee noManagerImpliesDirectReports invariant equivalent to the following OCL Document snippet.
There is no need for any EClassifier EAnnotation. The invariant body should be specified as an EOperation body.
The EOperation must have an EBoolean return, and two parameters of type EDiagnosticChain and EMap<EjavaObject, EJavaObject>.
EStructuralFeature initial and derived values
The example shows the specification of a derived value for the Company::size EStructuralFeature equivalent to the following OCL Document snippet.
The derived value is specified by an EStructuralFeature EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'derivation'
Value = ..the OCL expression..
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'derivation'
Value = ..the OCL expression..
An initial value may be similarly specified with:
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'initial'
Value = ..the OCL expression..
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'initial'
Value = ..the OCL expression..
EOperation bodies, preconditions and postconditions
The example shows the specification of the body for the Employee::reportsTo(Employee) EOperation equivalent to the following OCL Document snippet.
Juno Editor 2 3 3 Walkthrough Xbox 360
The body is specified by an EOperation EAnnotation with:
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'body'
Value = ..the OCL expression..
Source = 'http://www.eclipse.org/emf/2002/Ecore/OCL'
Key = 'body'
Value = ..the OCL expression..
A precondition or postcondition may be similarly specified using 'precondition' or 'postcondition' as the Key.
Note that preconditions and postconditions are currently ignored by Eclipse OCL (4.1.0).
Registration
Plugin
Within Eclipse, the OCL delegate functionality should be provided automatically by the plugin registrationprovided you have Eclipse OCL installed. The OCLinEcore editor requires the Eclipse OCL Examples and Editors to be installed too.
Standalone
If running standalone, you need to register the OCL delegates by hand, using code such as:
(An initialization routine will be provided in a future release.)
Troubleshooting
Problem: I cannot set 'Operation Reflection' to true. / I do not get Java-Code for my OCL method bodys.
Solution: Ensure that Compliance Level in the genmodel is set to at least 6.0.
Retrieved from 'https://wiki.eclipse.org/index.php?title=OCL/OCLinEcore&oldid=338520'
One of the first couple of synthesizers I really felt was outstanding is the Juno DS88 by Roland, simply because of how powerful and memorable the sounds were. Of course, that was an 88-key keyboard which I am often more comfortable with. Fast forward a couple of months, and I had the opportunity to try out the smaller version of that synthesizer – the Roland JUNO DS61. My first impressions of the instrument were that the keyboard felt like a more crammed version of the larger brother, and it wasn’t favorable over the 88-key version. However, since then I have had more time to play around with the synthesizer and really digest the product. I have come to the conclusion that this keyboard deserves to be noted as one of the best 61-key synthesizers of 2019, and it is definitely comparable to the JUNO DS88.
User Interface/Style
The DS61’s UI is almost the same as that of the DS88 as far as button layout and orientation goes. Yes, since this keyboard is slightly smaller and has fewer keys, the layout is a little bit more crammed than the larger version of this synth. Is it one of the best synths to look out for during the year? Probably not, but that doesn’t mean it’s not close. The Roland JUNO DS88 made that list and since this keyboard is nearly identical to that one, it definitely has a case for being in the top 20, at the very least. The style is nice and soft on the eyes. The 61-key layout might not be your favorite, but the shortage of keys actually makes for a more lightweight, portable product. This is great for those who like to travel, yet still need a high-performance instrument (i.e. not a toy). Thankfully, the smaller size does not come at much of cost, other than the lack of fine-tuning which you get from those extra keys. Everything else remains the same, for the most part.
Sounds Enfocus pitstop pro 18.
The reason the Roland JUNO DS88 won me over was because I instantly fell in love with the sound quality of the instrument. It sounds as powerful and deep as other strong synthesizers like the TYROS 5 and the Montage 8 but it comes nowhere near those options in terms of pricing; the DS88 is much more inexpensive. When you take a look at the Roland JUNO DS61, you see that it’s even more inexpensive than that, yet you keep many of the same features and all wonderful, authentic Roland sound quality. This has made the DS61 a very popular option over the last few years, and the only reason you would want to upgrade to the 88-key version would be to get more control over the sounds. Obviously, if you can afford it and it is something you want, then it is pursuable. The variety of sounds is pretty great too.
Features
Because this is essentially a smaller Roland DS88 synthesizer, you’ll get many of the same features. If you’d like to find out what those features are, check out my reviews. It comes with enough features that anyone musically experienced can have quite a bit to work with, yet it is not so complex that it would make a newbie overwhelmed. It’s not my first option for a beginner, and click here if you want to see some better options. Some of the features of the Roland JUNO DS61 are:
- Lightweight, gig-ready instrument with pro sounds, enhanced performance features, and battery-powered operation
- Includes all the sounds from the popular JUNO-Di, plus newly updated acoustic and electric pianos, additional organs, and other stage essentials
- Wave expansion slot enables users to download new sound waveforms, available for free at Roland’s Axial website
- Sample import function for playing user WAV files on the JUNO-DS61’s keyboard
- Intuitive eight-track pattern sequencer with non-stop recording for quickly developing song ideas; USB audio/MIDI and DAW Control model
Overall – Is The Roland JUNO-DS61 Worth It?
I have a massive amount of respect for this synthesizer keyboard, mainly because of my prior experience with the larger version. I am very big on sound quality and if that’s how you feel as well, then consider checking out either this model or the 88-key DS88. Something else I did not get a chance to mention in this review or my other reviews of Roland synths has been build quality and durability. Over the couple of years of touring and playing with my Roland JUNO’s they remain almost exactly the same as when I had first bought them. They are very durable and wear/tear does not show on these synthesizers as they would on some other synthesizers, like the MS20.