Generic vs. specific userID in PI Interfaces

Hi All
We have many interfaces that are running between R3 and PI. Due to recent performance problems in R3 system, Basis team wants to differentiate between which application is causing and suggested to create Interface specific user id vs ALEMASTER which is used now.
Can anyone suggest if this is best practice to use PI Interface/application specific user id in PI channels or use a one channel with ALEMASTER. I know we have to create that many RFC destination and PI channels...which might bring down performance of the system connectivity.
Also for RFC channels we use logon groups with specific application servers on it.
Any inputs on this is appreciated.
Thanks,
Giridhar.

Hi,
>>>Basis team wants to differentiate between which application is causing and suggested to create Interface specific user id vs ALEMASTER which is used now.
this is not an issue of PI user it's because:
- the receiving application don't have any source system identifiers
- the message which posts the transaction does not have any additional keys (like in IDOC function code etc.)
so don't change the user, change the error determination procedures in order to do it correctly
Regards,
Michal Krawczyk

Similar Messages

  • What is generic & location specific bom & its difference

    what is generic & location specific bom & its difference
    Madan

    Hi Madan,
    The BOM which is created on Client level i.e. without Plant assignment would be a generic BOM which can be used in any plant by extending it that plant.
    The BOM which is created using plant is Plant level BOM, which is specific to that plant i.e. that plant is the owner & creator of that BOM so that specific plant will be authorized & responsible to editing it.
    Hope i have answered your question.
    Regards
    Rehman
    Reward Points if useful

  • User-Specific Variable in Web Interface

    I have created a manual planning layout with User-Specific variables – one for Sale Group and one for Sales District.
    The variable successfully restricts user access to data when executed in SAP GUI.
    A Web Interface was successfully generated from the Planning Folder containing the manual planning layout described above.
    When I execute planning via the web, all possible values are displayed, even though the User-Specific variable limits this user to a single value for each variable.
    Is there a way to restore the restriction defined in the User-Specific variable ?
    I saw an earlier thread indicating that the “Planning Level” property of the Selector Variable Value for each variable used in the Web Interface Builder had to be set - but that field is protected from input.
    Any insights would be appreciated !
    Thanks,
    Lyle

    Narasimha,
    Each variable was created as :
    -     Replacement Type = User-Defined Values.
    -     Restriction of Values required by User = OFF.
    -     Input Allowed by User = OFF.
    Several users are defined within each variable.
    Most users represent Sales Representatives, with a single value assigned to each – a single Sales Rep is assigned a single Group and District ( i.e one-to-one relationship ).
    The other type user represents a Sales Manager, and includes all the values assigned to the Sales Reps reporting to him.
    When Restriction functionality is turned on, the following error message is received :
    Restrict variable UDSALDST (Sales District - User-Defined) (area ZBILLIC (IC Billings Estimate)) to single value
    <b>Diagnosis</b>
    Variable UDSALDST (Sales District - User-Defined) (planning area ZBILLIC (IC Billings Estimate)) is defined so that the user must restrict the values of the variable (indicator 'Restriction of values required by user' is set). However, you have not defined a restriction.
    <b>Procedure</b>
    Restrict the variable or change the definition of the variable so that restriction is no longer required.
    •     To restrict the variable, choose Goto -> Set variables and search for variable UDSALDST (Sales District - User-Defined) in the list. Make the restriction and subsequently continue the planning session.
    •     To change the variable definition, choose the tab page Variables in the context of planning area ZBILLIC (IC Billings Estimate) and reset the indicator 'Restriction of values required by user'.
    While the first option ( Goto > Set Variables ) seems to defeat the purpose of a User-Specific variable, I tried it.  When I use F4 to determine available values, it displays those previously assigned when creating the User-Specific variable !? – this doe not seem to add any more than I already have.
    The second option effectively puts me back to where I was when I posted the question.
    Of interest though, I noticed when the Restriction functionality was turned on, the “All” value previously displayed as available for selection was no longer available – but the specific values for each of the other Sales Reps continue to be reflected, and this user can select values related to another Sales Rep..
    As mentioned in my original posting,
    I saw an earlier thread indicating that the “Planning Level” property of the Selector Variable Value for each variable used in the Web Interface Builder has to be set – but that the field is protected from input.
    Should this object property be ‘open’ to permit input ?  If so, is there a step or setting that needs to be performed.  Could authorization be an issue ?
    Thanks,
    Lyle

  • Restricted to generic papers - Specific canon papers grayed out?

    I am attempting to print a "Profile Target Image" so that I can receive a Profile for my printer. 
    I'm using Photoshop CS4 and checked the "no color management" for Photoshop and have also disable color management for the printer.
    I.  I begin by checking the PRINT button on the Photoshop CS4 menu -
    2. Than I check the "no color management" on the Print menu and click on the print button at bottom of Print Menu
    3. Then I click on following: Layers than Quality & Media than Media Type.  The generic papers are listed and are in black but the Canon's Specific papers are listed but are grayed out. Therefore, I can't  choose any of Canon's papers as I set up parameters to print my Profit Target Image.
    I'm new at this.  What are I doing wrong?  Would greatly appreciate any help you could provide.
    Russ

    Russ,
    Sorry, I didn't fully explain in my first post.
    When you print the target, you don't want to influence the output in any way by any kind of color management. And you've taken care of that by allowing neither the printer or PS to manage color.
    But the system does control some mechanical parameters that you want to be the same for the profiling step as it will be when you are actually printing to your desired paper. Those parametes include printing resolution, whether printing will be bi-diretcional, print speed, "print quality" which is a combination of these kinds of factors, etc.
    The program and the printer drivers try to be smarter than us (rather, the programmers of these try to prevent us from certain combinations of settings they they feel don't belong together) and present certain combinations of settings only. That's why you're getting the error message. You probably need to set Page Size correctly as the driver doesn't accept the paper type and the page size as valid combinations (the paper type probably doesn't come in the size you currently have set for Page Size).
    Once you have that "error" cleared, set all the parameters in the Print Dialog just as you will when really printing. That means, selecting the correct printer name, all your desired settings in "Print Settings," "Printer Color Management" (off - none) and "Paper Configuration." You can save all these settings under a meaningful title in the Print dialog in "Presets." These are the printing conditions for your target file and for actual printing when using the profile generated from these conditions.
    Hope that makes sense.
    Rich

  • Implementing generic and regular version of same interface

    I wanted to create a class that extends AbstractMap<Integer,Integer> and implements org.apache.commons.collections.BidiMap. BidiMap extends java.util.Map (not generic). I've gotten completely confused on how Java handles classes that implement multiple versions of an interface. Seems like you're not allowed to do it unless you introduce a layer of indirection. Even this is not really consistent
    public class A {
      public interface B<T> {public T a();}
      public interface C extends B {}
      public class D implements B<Integer> {public Integer a() {return 0;}}
      // Illegal
      public class E implements B<Integer>, C {public Integer a() {return 0;}}
      // why is this allowed?
      public class F extends D implements C {public Integer a() {return 0;}}
      public interface G<T> {public void a(T pArg);}
      public interface H extends G {public Object b();}
      public class I implements G<Integer> {public void a(Integer pInt) {}}
      // Illegal.  Huh?
      public class J extends I implements G {public Integer a() {return 0;}}
    }Anyone care to enlighten me on how this works? Is there any way to accomplish the original goal (extending AbstractMap<Integer,Integer> and implementing BidiMap)?

    I've gotten completely confused on how Java handles classes
    that implement multiple versions of an interface.It doesn't handle classes that implement multiple versions of an interface.
    why is this allowed?On my machine, it isn't.A.java:9: A.B cannot be inherited with different arguments: <> and <java.lang.Integer>
      public class F extends D implements C {public Integer a() {return 0;}}

  • I accidentially clicked "BLOCK" on an imbedded video from my home page news outlet. Of course now I CAN'T SEE the video or any others . How do I access the Unblock feature- PLease be specific I find your interface very obtuse

    I accidentally clicked BLOCK on an embedded video in my home page news outlet. Now I can't see any imbedded video. How do I get ride of the BLOCK - Please be specific as I find your program to be very confusing and obtuse.

    I have same issue:  CS 5 on a dead computer. I was able to chat just now with Adobe. I still need to try this to see if I can do as she says.
    Chat 
    Your case number: #######
    Here's what we know about your issue so far. It relates to:
    Other product or service change
    Downloading, installing, setting up change
    Licensing and activation change
    Thank you for contacting Adobe.
    A representative will be with you shortly. 
    Thank you for your patience.
    While you wait, you can try our community forums where experts are available 24 hours a day, 7 days a week.
    You are now chatting with Rachana.
    Rachana: Hello! Welcome to Adobe Customer Service.
    Rachana: Hi Linda.
    Linda : Hello Rachana
    Rachana: How may I assist you today?
    Linda In 2012 I purchased Adobe Creative Suite 5 to use in my retirement. I installed it only on my home computer as I had different software at work. Now my home computer has died. I cannot get it to start up. I have a new computer and want to install it on that computer. Can you please deactivate the dead software on my old computer so that I can install AND ACTIVATE it on the new one?
    Rachana: I will check and help you with this.
    Rachana: May I have the serial number for the product?
    Linda : mastercollection # provided acrobat # provided
    Rachana: Thank you.
    Linda : there are also individual serial numbers for 4 other unidentified products on the back of the package discs came in. do you need those also?
    Rachana: I have made the necessity changes to the software, you can go ahead and activate without any issues.
    Linda: thank you Rachana

  • Generics in interfaces parameters

    My post is a feature request. If anyone have informations on forthcoming and related developments, please send me.
    I want to implement a graph class with nodes and edges collections and express in the implements section that this class supports such features (I don't take into account any delegation mechanism), graph can be considered as a String / Node map or as String / Edge one :
    public class Graph implements Map<String, Node>, Map<String, Edge> {
    but when compiling, I have interfaces method conflicts such as :
    "The return type is incompatible with Map<String,Edge>.get(Object), Map<String,Node>.get(Object)"
    because one get(Object) method is present in each interface. I would have rather liked to have a get(Node) and a get(Edge) methods. In other words, I would have liked to have Map<K,V>.get(K) method in Map interface.
    Does anyone know why Java Generics are not fully introduced in interfaces and maybe in some classes ? Is it a technical reason ? A workaround ? An intermediate development stage ?
    Thx.

    public class Graph implements Map<String, Node>, Map<String, Edge> {The problem is that after compilation, when the object code is produced, any "type parameter" information is erased (you need to read up on Java reflection more closely).
    Thus, there is only one Map class in the runtime (not one for every possible combination of type parameters). and any references to, say, Map<String,Node>.put() become, at runtime, just Map.put().
    So you can't do what you want, because at compile time, your two parent interfaces are "different", but at runtime, they would be the same. The message could be better, I agree.
    To do what you want:
    * If your two classes (Edge and Node) have no relationship to each other, then you'll have to implement Map<String,Object>.
    * If they do have a common ancestor, you can declare it as extending Map<String,CommonAncestor>.
    In both cases, you'll have to, e.g. downcast the result of get() to the right type.

  • Generic WSDL vs Specific WSDL

    Hi All,
    Can you list down the differences between Generic WSDL vs Specific WSDL?
    When do we need to prefer Generic against Specific or vice versa?
    Also, following are my concerns on Generic WSDL:
    If my front end application developed is using Generic wsdl and lets say there are changes to my rule base like adding/deleting entities in data model, or adding/deleting attributes or changing attributes text or changes to public names, then does the client stubs need to regenerate because of the changes to rule base?
    Regards,
    Mohan

    Generic WSDL = XML structure does not change when policy model changes (i.e. new entity in model will mean a new data value is supported, but no change to WSDL)
    Specific WSDL = XML structure changes with policy model (i.e. new entity in policy model means new XML element in NEW WSDL)
    General Pros / Cons:
    - Generic WSDL:  WSDL doesn't change, stubs don't change, No useful compile time checking, validation can not occur because the XML elements are fixed regardless of policy model changes.
    - Specific WSDL - better compile time checking, can do validation of XML against WSDL, but need to regenerate stubs for policy model changes. 
    In both cases, you still need to change the code to handle any changes to the policy model that impact the inbound or outbound data "contract".  In the generic case, you would be changing which values should be put into the XML or should be expected from the XML (e.g. ID or name attribute values).  In the specific WSDL case, you will be dealing with new or deleted XML elements, so generate stubs again and see the new / deleted stubs.  Personally, I would use the specific WSDL approach because you will get more compile time checking following a policy model change and regenerating stubs. 

  • A question about a method with generic bounded type parameter

    Hello everybody,
    Sorry, if I ask a question which seems basic, but
    I'm new to generic types. My problem is about a method
    with a bounded type parameter. Consider the following
    situation:
    abstract class A{     }
    class B extends A{     }
    abstract class C
         public abstract <T extends A>  T  someMethod();
    public class Test extends C
         public <T extends A>  T  someMethod()
              return new B();
    }What I want to do inside the method someMethod in the class Test, is to
    return an instance of the class B.
    Normally, I'm supposed to be able to do that, because an instance of
    B is also an instance of A (because B extends A).
    However I cannot compile this program, and here is the error message:
    Test.java:16: incompatible types
    found   : B
    required: T
                    return new B();
                           ^
    1 errorany idea?
    many thanks,

    Hello again,
    First of all, thank you very much for all the answers. After I posted the comment, I worked on the program
    and I understood that in fact, as spoon_ says the only returned value can be null.
    I'm agree that I asked you a very strange (and a bit stupid) question. Actually, during recent months,
    I have been working with cryptography API Core in Java. I understood that there are classes and
    interfaces for defining keys and key factories specification, such as KeySpec (interface) and
    KeyFactorySpi (abstract class). I wanted to have some experience with these classes in order to
    understand them better. So I created a class implementing the interface KeySpec, following by a
    corresponding Key subclass (with some XOR algorithm that I defined myself) and everything was
    compiled (JDK 1.6) and worked perfectly. Except that, when I wanted to implement a factory spi
    for my classes, I saw for the first time this strange method header:
    protected abstract <T extends KeySpec> T engineGetKeySpec
    (Key key, Class<T> keySpec) throws InvalidKeySpecExceptionThat's why yesterday, I gave you a similar example with the classes A, B, ...
    in order to not to open a complicated security discussion but just to explain the ambiguous
    part for me, that is, the use of T generic parameter.
    The abstract class KeyFactorySpi was defined by Sun Microsystem, in order to give to security
    providers, the possibility to implement cryptography services and algorithms according to a given
    RFC (or whatever technical document). The methods in this class are invoked inside the
    KeyFactory class (If you have installed the JDK sources provided by Sun, You can
    verify this, by looking the source code of the KeyFactory class.) So here the T parameter is a
    key specification, that is, a class that implements the interface KeySpec and this class is often
    defined by the provider and not Sun.
    stefan.schulz wrote:
    >
    If you define the method to return some bound T that extends A, you cannot
    return a B, because T would be declared externally at invocation time.
    The definition of T as is does not make sense at all.>
    He is absolutely right about that, but the problem is, as I said, here we are
    talking about the implementation and not the invocation. The implementation is done
    by the provider whereas the invocation is done by Sun in the class KeyFactory.
    So there are completely separated.
    Therefore I wonder, how a provider can finally impelment this method??
    Besides, dannyyates wrote
    >
    Find whoever wrote the signature and shoot them. Then rewrite their code.
    Actually, before you shoot them, ask them what they were trying to achieve that
    is different from my first suggestion!
    >
    As I said, I didn't choose this method header and I'm completely agree
    with your suggestion, the following method header will do the job very well
    protected abstract KeySpec engineGetKeySpec (Key key, KeySpec key_spec)
    throws InvalidKeySpecException and personally I don't see any interest in using a generic bounded parameter T
    in this method header definition.
    Once agin, thanks a lot for the answers.

  • How java support multiple inheritance by the use of interface.

    As per my understanding, Interface is just having the signatures of the methods not the implementation.
    So How java support multiple inheritance by the use of interface?
    Answer 1: we can institate interface reference by its implemented
    class.
              ����� interface inf...
              ����� class aa implements inf..
              ����� class bb implements inf....
               Now, inf i = new aa();
               inf i = new bb();
    Answer 2: We can extends as many interface as we want in the
    single
               interface.
               i.e. interface infFirst....
               interface infSecond....
               interface infThird....
               Now ,
               interface ingMulti extends infFrist, infThird...
    By above two answers its not prity clear as per the multiple inheritance in C or C++.
               i.e.
               class first{
               method abc();....}
               class second{
               method bbc()......}
               class multi::first::second{
               we can call to abc();.....as well as bbc();
    -Please give your important suggstion on the same.(Hope I explain it well.)
    -Jeff

    The keyword implement is used only for interfaces not
    for abstract class. If i am wrong correct me.I believe your right, but I will double check.
    As for the multiple inheritence think about the following code:
    class Animal {
        //  Animal generic stuff in this class
    interface Eat {
        //  Generic stuff that models eating behavior
    interface Runs {
        //  generic methods that model running behavior
    public class Horse extends Animal implements Eat, Runs {
        //  Stuff specific to a horse
    }The Animal class is generic but has stuff in it common to all animals.
    The Eat interface models behavior that is generic to eating, all living things have to eat something to survive. Herbavore are different from carnivores.
    The Runs interface models generic behavior to running, such as speed. A cheeta definately runs faster than a human.
    This brings us to the Horse class. It extends the Animal class because it "is-a" animal, and it implements the eat and runs interface because they are behaviors a horse has.
    I hope that helps.
    Extending an abstract class is the same as extending a regular class with the exception you MUST override all abstract methods in the abstract class. Thats not too difficult but I believe when designing classes, designing an abstract can be more diffecult than modeling the base class, and generic behaviors in interfaces. JMO.
    JJ

  • Designs for interface/implementation factory APIs

    I've been building a complex data store for geographical information based on JNDI.
    The store is basically working but I've been trying to make the API for programs accessing it more regular.
    I'm dissatisfied with the way that new objects for addition to the store are instanciated. It's all a bit ad-hoc at the moment so I want to create a proper factory system, separating interface from implementation and allowing for the case where the interface has a different implentation for remote and local contexts.
    I'm thinking the best approach would be to have a single create method, probably as a member of the extended context interface.
    What I want to get is a sample of how programmers feal about different methods of passing creation parameters to such a factory method (or for that matter, to invite comments on the basic idea).
    One possibility would be as a Hashtable or Hashmap. Generic keys (like datastore path) would be defined as constants in the context or factory interface, type specific keys in the interface which is used to access the object being created.
    e.g.
    Hashtable fsCreate = new Hashtable(5);
    fgCreate.put(DataContext.PATH_KEY, "test.features");
    fgCreate.put(DataContext.FORMAT_KEY, format);
    fgCreate.put(DataContext.BOUNDS_KEY, boundaryRectangle);
    FeatureSet fs = (FeatureSet)dataContext.create(FeatureSet.TYPE_VALUE,fsCreate);Another possibility would be some kind of parameter bean, with an fundamental parameter class and different extensions for each type of object to be created.
    FeatureSetParams fsCreate = new fsCreate();
    fsCreate.setPath("test.features");
    fsCreate.setFormat(format);
    fgCreate.setBounds(boundaryRectangle);
    FeatureSet fs = (FeatureSet)dataContext.create(fgCreate);The Hashtable method has a slightly clumbsy feel, but it does avoid directly instanciating a whole bunch of new concrete classes (which seems to go against the spirit of interface/implementation separation).

    If there's a create method in the interface, wouldn't
    that make it accessible from anything that knows about
    the interface? This would nullify the factory
    pattern, wouldn't it?Not necesasrilly, that would depend how the create method was implemented. I already have a "retriever" object associated with each implentation class that can be retrieved from the data store. I can add a "create" method, effectively adding a factory class function to these. These retrievers are already registered with the concrete implentation of the JNDI Context.
    Granted the implentations are in several different packages, so I can't restrict acces to these retriever objects to the package level.

  • IOS XR Interface up/down trap

    For interface up/down trap
    In IOS it used to be:
    Generic: 2; Specific: 0; Enterprise: .1.3.6.1.6.3.1.1.5;
    Variables:
    [1] mgmt.mib-2.interfaces.ifTable.ifEntry.ifIndex.34 (Integer): 34
    [2] mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescr.34 (OctetString): POS2/1/0
    [3] mgmt.mib-2.interfaces.ifTable.ifEntry.ifType.34 (Integer): 171[4] private.enterprises.cisco.local.linterfaces.lifTable.lifEntry.locIfReason.34 (OctetString): Keepalive failed
    Annotations:
    In IOS XR we are missing ifDescr

    Thanks Joe.
    This solves the problem.
    One more question. we do not see LDP traps coming from the XR router.
    here is the config; when i enable LDP traps it just does not show up in the config:
    snmp-server host 10.10.141.253 traps ovadmin
    snmp-server view N ip included
    snmp-server view N system included
    snmp-server view N cpwVcMIB included
    snmp-server view N entityMIB included
    snmp-server view N interfaces included
    snmp-server view N cpwVcMplsMIB included
    snmp-server view N mplsTeStdMIB included
    snmp-server view N ciscoCBQosMIB included
    snmp-server view N ciscoPingEntry included
    snmp-server view N ciscoProcessMIB included
    snmp-server view N ciscoMemoryPoolEntry included
    snmp-server view N ciscoEnhancedMemPoolMIB included
    snmp-server community admin RO
    snmp-server community admirw RW
    snmp-server traps snmp
    snmp-server traps config
    snmp-server traps entity
    snmp-server location Y
    snmp-server trap-source MgmtEth0/8/CPU0/0
    Tried to enable it:
    RP/0/8/CPU0:P1(config)#snmp-server traps mpls ?
      frr          Enable MPLS FRR traps
      l3vpn        Enable MPLS L3VPN traps
      ldp          Enable MPLS LDP traps
      traffic-eng  Enable MPLS TE traps
    RP/0/8/CPU0:P1(config)#snmp-server traps mpls ldp ?
      down       Enable MPLS LDP session down traps
      threshold  Enable MPLS LDP threshold traps
      up         Enable MPLS LDP session up traps
    RP/0/8/CPU0:P1(config)#snmp-server traps mpls ldp ?
      down       Enable MPLS LDP session down traps
      threshold  Enable MPLS LDP threshold traps
      up         Enable MPLS LDP session up traps
    RP/0/8/CPU0:P1(config)#snmp-server traps mpls ldp down ?
    RP/0/8/CPU0:P1(config)#snmp-server traps mpls ldp down
    RP/0/8/CPU0:P1(config)#snmp-server traps mpls ldp up  
    RP/0/8/CPU0:P1(config)#commit
    RP/0/8/CPU0:P1(config)#end
    does not show up in the config.

  • Pros & Cons of Using SAP PI Interfaces for Report Generation

    Hi Guru's
    I have a Scenario's like
    I have to generate a customized report in SAP with the main data's available in SAP ECC and some required data available in the Legacy System.
    I want to know the Pros & cons of using SAP PI RFC/Proxy adapter interface to get the data from the legacy system for each time the user execute the report in SAP ECC.
    Thanks in Advance

    There are couple of "dimensions" to consider in your PI interface design. For exemple when you are running the sizing exercise (Since we are considering adding a net new interface), you will need to capture specific information about new interface.i.e. S/A, adapters, frequency, avg payload size. etc..Note that the last two attributes will be hard to size properly in this case since you can't predict how frequent the end user will run the report which will impact the latency time required to pull the data. Latency will affect the user experience as visible side affect and definitely the SLA for other interfaces running at the same time.
    On the other hand, the data you are trying to retrieve from the legacy won't be used for transactional purpose but for the end user to pull KPIs from the system which can affect ECC as well. You may end up doing lot hot fixes for your report (Assuming that the report is a medium complexity code)
    There are other factors to consider but let's consider these are the major one.
    Cheers,
    F

  • Setup for Controlling Articulations (or Patches) as an Interface

    Hi,
    Here is a new set-up I've created (though, I'm sure others have
    done this or similar things before).
    The objectives of this set-up are to provide a way to deal with
    situations where I have limited processing power and limited
    computer memory during the compositional process. This
    set-up is not necessarily meant to be used to produce
    professional, platinum recordings.
    I am new to Logic Pro, so this set-up may have weaknesses and
    flaws that I am not aware of; or, there may be a far better way
    to achieve the ends than this.
    The main concept I am using is that of an interface. An example
    of an interface is a light switch on a wall; if you turn it on, the
    light goes on, if you turn the switch down, the light goes off.
    This is one type of light interface; another might be a chain
    you pull; another might be a light dimmer switch.
    In this set-up, a multi-instrument is used as an interface to Violins I.
    I first began by setting up a new layer in the environment, and I called
    it "Violins I Layer".
    I then created a new multi-instrument, and labeled it "Violins I". It's icon
    box is checked so that it shows up in the arrange menus.
    All other objects to be created or used within this environment layer have
    their icon checkbox unchecked.
    To use Violins I in the arrange window, you simply select it. There is no
    hint in the arrange window what the implementation of this Violins I section
    is. It could be produced by an outboard sampler, or it could be produced
    by Apple's JamPack orchestral Strings, or it could be produced by Garritan
    Orchestral Strings (as a few examples). It could even be produced by
    a flute patch, but this would simply be confusing to someone trying to
    use the overall system.
    Because there is no hint in the arrange window as to what actually
    produces the Violins I sound, this is one reason I call it an interface.
    You know that "Violins I" represents the first violin section, but you
    do not know the details of the implementation.
    In this example, there will be three implementations of the Violins I
    section set up within the Violins I Layer within the Environment. The
    three implementations use the following facilities: Garritan Orchestral
    Strings (light patches, i.e., less memory patches), Apple's JamPack
    Orchestra, and an outboard sampler-player called a Proteus/2.
    We can call these three implementations each a "sub-instrumental-box" for
    lack of a better name. That is, each implementation will have 16
    MIDI channels, so it is like an outboard sampler-player as a stand-alone
    box.
    The environment will be configured so that only one of these three
    sub-instrumental-boxes can play at a time. Thus, you either choose
    the Garritan Orchestral Strings (GOS) implementation, the Apple
    JamPack implementation, or the Proteus/2 implementation.
    You will be able to change the implementation by adjusting a Cable
    Switcher within the environment, or you will be able to send a MIDI
    program change to the Cable Switcher, where a program change of 0
    means the cable switcher sets itself to 0, a program change of 1
    means the cable switcher sets itself to 1, and a program change of 2
    means the cable switcher sets itself to 2.
    If the Cable Switcher is valued at 0, GOS is used. If the Cable Switcher
    is set at 1, Apple's Jampack Orchestra is used. If the Cable Switcher
    is set to 2, the out-board, Proteus/2 is used.
    Each sub-instrumental-box will have, potentially, up to 16 unique sounds.
    Each unique sound will be accessed by what channel the input note is
    playing on.
    Thus, if an incoming note is on channel 1, it will be played arco (regardless
    of whether the implementation is GOS, Apple, or Proteus/2).
    If an incoming note is on channel 6, it will be played pizzicato (regardless
    of whether the implementation is GOS, Apple, or Proteus/2).
    Let it be assumed, that the Garritan Orchestral Strings (light) will use more memory
    and more processing power than Apple JamPack. Whether it is a significant
    difference I do not know. And, of course, the out-board, Proteus/2 uses the
    most minimal of computer resources, because it generates its own sounds
    externally (though these strings sounds are not very good when compared to
    Apple and GOS).
    So, the idea of this set-up, here exemplified only in the Violins I section, is that
    while one is composing, and adding more instruments, sometimes the limitations
    of your computer will require you to "downgrade" from Garritan Orchestral Strings
    to Apple's JamPack strings, or even down to the out-board, Proteus/2.
    For example, one might already have a sketch of the string section for a
    passage, and now one is adding a trumpet; perhaps this trumpet uses
    up the next bit of processing power such that the passage no longer
    plays correctly. This, one hopes (as this set-up is brand new), could
    be alleviated by taking the Violins I (and other string
    sections), and switching them to play on the out-board Proteus/2. While the
    Proteus/2 strings are poor, they still are strings, and they could play while one
    focuses on the trumpet part.
    Once I have given more details about this set-up, I will not then go into the
    details of how you use the score editor. But, this set-up is meant to be used
    with the Score Editor. Let me add these small points of detail about how
    this set-up will interact with the Score Editor:
    1. Within the score editor, you can select on or more notes, then click and
    hold on the channel number in the left pane, and move the mouse up and
    down to set all the notes to a given channel (assuming you also hold down
    the option key if the initial channels for the notes is not the same).
    Thus, you change the channel of the note or notes and their articulations
    will automatically be changed from, say, arco to pizz.
    2. Within the score editor, you can click in a region between two staves so
    as not to select any notes or any staves, then set the default channel to
    some value, such as 6, which represent pizz. Then when you enter a new
    note using the pencil tool, that note will be associated with channel 6
    and thus will be played pizz.
    3. Within the arrange window, for a given track using the Violins I multi-
    instrument, make sure that the Port is Off, the Channel is All, the Program
    box is unchecked, and the Volumn box is unchecked.
    In short, you can control the articulations of the notes without ever leaving
    the score editor.
    There is a down side, however. If you intend to have two, rhythmically
    independent lines in one staff, and they are the same articulation (such
    as arco, i.e., they are both MIDI channel 1 in this example), then you
    will not be able to do so, because Apple has perhaps followed the "Village Idiot"
    anti-pattern in some of its work on the Logic Pro application. That is,
    this anti-pattern is exhibited when a new concept is introduced, but
    instead of defining an interface for this new concept, either lack of funds,
    time, or desire, results in the re-using of a previously defined interface
    to carry out this new task.
    Here is an example. I currently have a kitchen with a light and its
    associated light switch. I hire a handyman to insert a disposal within
    the sink. The handyman, being short of time, resources, and resolve,
    hooks up the disposal to my light switch. Now, whenever I enter into
    the kitchen and turn the light on using the light switch, the disposal
    also turns on. Instead, the handyman, should have created a completely
    independent interface to be used to turn the disposal on and off. Turning
    the light on and off is a different concept from turning the disposal
    on and off.
    The use of the Village Idiot anti-pattern is potentially* used by Apple when it
    says that a channel number is used to define one or more independent
    lines within a staff. Instead, to avoid this anti-pattern, they would
    come up with a new term, "score channel", "staff voice number", or
    something, and build an interface specifically related to this functionality.
    Then I could have one staff with two voices, each assigned a unique
    "stave voice number", and each having an identical MIDI channel
    number (because they are both playing arco).
    *Note that I specifically say "potentially". I have not yet experimented
    with placing two lines on one staff and then testing if I can get them
    to play the same musical instrument. Keep in mind, please, that I am
    new to Logic Pro. So, the above may be incorrect or incomplete.
    My focus right now is to use Logic Pro while composing, and I am not
    yet focusing on creating the best, professional looking score as an
    end-product.
    I've found one instance (though more may certainly exist) where
    the village idiot anti-pattern is used. In the score editor, if I use a
    user-defined rest (which, by the way, I always try to avoid using),
    and then if I rubber-band select a section of the melody, if I try to
    adjust the velocity of notes, I also inadvertently adjust the placement
    of user-defined rests. The village idiot anti-pattern seen here is that
    the exact same interface (moving the velocity value up and down) is
    also used to mean the placement of user-defined rests; clearly, it is
    best to create a new interface for dealing with the placement of
    user-defined rests.
    In summary, the possibility exists that in using the environment spelled
    out here, the use of channels for articulations may pose problems for
    you when you attempt to place two, rhythmically independent lines onto
    one staff when these two lines use the same channel number to represent
    their articulation (pizz. for instance). Rohan, and other Logic Pro experts
    hopefully can confirm or rebut this warning of mine if it is false.
    Within the environment's Violins I Layer, the Violins I multi-instrument has
    already been created (the steps were given above).
    In this example, I am using ten articulations:
    Channel Number Articulation
    1 SusV Lite (looped): Sustained vibrato.
    2 SusNV Lite (looped): Sustained non-vibrato.
    3 Grand Detache Lite
    4 Marcato Lite
    5 Sautille Lite
    6 Pizz Lite
    7 Tremolo Lite
    8 Trills - Half Lite
    9 Trills - Whole Lite
    10 Stacatto
    The articulation names are taken from the Lite versions of Garritan
    Orchestral Strings. The Apple JamPack Violins I do not have all
    these articulations. And, the Proteus/2 has even fewer. This, however,
    will not end everything, for this means that if a sub-instrumental-box
    does not have a Grand Detache, that we simply map Grand Detache
    to what it does have, which is just a simple arco.
    Thus, as less capable sub-instrumental-boxes are used, not only does
    the sound quality degrade, but the articulations start to become less
    detailed. Here is another example: Proteus/2 does not have a trill,
    so its trill is mapped to a simple arco.
    In the environment's Violins I layer, here are the details of the multi-
    instrument called Violins I: It's icon is checked, its Port is off,
    its Program is unchecked, its volume is unchecked.
    Create a new cable switcher object using the menu:
    New > Fader > Specials > Cable Switcher
    Here are the details of this Cable Switcher (shown when you select it):
    Output: Switch
    Channel: 1
    - 1 - : 48
    Input: Program
    Channel: 1
    -1- : 7
    Range: 0 127
    Value as Number
    Filter: Off
    Feedback: unchecked box.
    I don't know what all the above means, but I do know that it means at least
    that the cable switcher will change value when it receives a program (or
    patch) change on any MIDI channel (as described earlier): thus, if it
    receives a program (or patch) change valued at 0, the cable switcher
    will pass everything through the 0 output port.
    Now draw a cable between the multi-instrument to the Cable Switcher.
    The Cable Switcher is the gate-way to a particular implementation:
    the specific sub-instrumental-box that is currently being used to create
    the sounds.
    Let's work on the first sub-instrumental-box: the Garritan Orchestral Strings.
    Create a new Channel Splitter. Draw a cable from the Cable Switcher to
    this newly created Channel Splitter.
    The Channel Splitter can split an incoming MIDI signal into 16 MIDI channels
    (based upon the MIDI channel of the note passing through). This is how
    we will control the articulation.
    Now, this next part is personal preference. You may have another working
    method. But, we now need to connect the outputs of the Channel Splitter
    to instruments. I have set up Logic Pro to automatically create 128 audio
    instruments for me. For this sub-instrumental-box, I'll be using the ones
    that Logic has named: "Inst 100", "Inst 101", ..., "Inst 109". I open up a new
    environment window, and I select these ten instruments, and I drag them
    to my current, Violins I Layer, and they are moved. I then close the
    environment window I just, newly opened.
    Back in the Violins I layer, I connect output channel 1 of the Channel Splitter
    to Inst 100, and output channel 2 to Inst 101, and so forth, until I finally connect
    output channel 10 to Inst 109.
    For each of these ten instruments, I click under the "I/O" label, and bring up
    the EXS24 sampler, and from there grab a specific Garritan Orchestral
    Strings patch, such as "SusV Lite". Note that the specifics of how Logic Pro
    converts the gigasampler format that GOS came in to a format Logic Pro
    understands are not detailed here.
    This completes the first sub-instrumental-box. (Other details not mentioned:
    each instrument was sent to one bus to make mixing a little easier; but,
    you can leave these set to outputs 1 and 2 if you wish).
    If you send in MIDI notes on channel 1, they will sound as sustained, vibrato.
    If you send in MIDI notes on channel 4, they will be marcato, and so forth.
    Note, by the way, the "power" of being able to select a specific file having
    the specific articulation I desire. Now I am in complete control as to how
    this specific articulation will be played. But, if these articulations were
    bundled within only one file, where I was forced to either send key-switches
    or continuous controllers to activate either arco, marcato, termolo, and so forth,
    then I would not have this kind of flexibility and power. By the way,
    GOS lite sounds also have key-switched patches for those who like to
    play the notes at the keyboard; but, in this instance, GOS also has flexibility
    in that I am able to ignore the key-switched patches, and use the specific
    files each containing a specific articulation. Apple also has a similar
    flexibility: for Apple JamPack, you can use continuous controller 4 to
    change articulations for some of the patches, or you have the choice
    of loading each individual articulation from a specific file set (which is
    what will be done in this example).
    The next step is to create the second sub-instrumental-box implemented
    by the Apple JamPack orchestra's Violins I sounds.
    Create a new Channel Splitter. Cable the Cable Switcher (there is one free
    node on it) to the new Channel Splitter. Apples Violins I have the following
    articulations: Legato, Pizz, Tremolo, Trill Half, Trill Whole. For staccato,
    we will load the Violins II staccato patch. By the way, I forgot to mention
    that in the GOS, there is no staccato patch for Violins I, and I did a similar
    thing, I loaded the Violins II staccato patch to be played by the Violins I.
    Now I need some audio instruments to be connected from the Channel
    Splitter. Open a new environment window. Drag over "Inst 110",
    "Inst 111", ..., and finally "Inst 115".
    Cable Channel Splitter 1 output to Inst 110. Set Inst 110 just under I/O to
    Violins I Legato. Cable Channel Splitter 6 output to Inst 111 and just
    under I/O set it to Violins I pizz. And so forth, using up a total of
    6 channels to six instruments of Apple's JamPack strings.
    Now, there are some output channels from the Channel Splitter that
    are not used, because there is no corresponding patch in the
    Apple JamPack. Simply map these to the closest match you can find.
    Thus, output channel 2 of the Channel Splitter is patched to
    Inst 110 which represents legato and is the closest representation
    of "sustained, non-vibrato."
    Also, output channel 3, Grand Detache, is linked in an identical fashion,
    because plane legato is the closest match.
    Output channel 4, which should represent marcato, is mapped to
    Inst 112 (staccato), as that is a somewhat representative match-up.
    And, you continue in this fashion, mapping the best you can. Remember,
    Apple's JamPack does not have the many articulations of GOS lite
    patches, it is a specific implementation of the interface. And, the
    Apple JamPack will degrade in sound and in the number of unique
    articulations, but, theoretically, use up less processing power from
    the computer.
    Note that you can now click on the Cable Switcher to toggle between
    the two sub-instrumental-boxes we have just created. When the
    Cable Switcher has "0" written on it, you hear GOS. When the
    Cable Switcher has "1" written on it, you hear Apple JamPack.
    And, when we are finally done with the steps to follow, when the
    Cable Switcher has "2" written on it, you hear the out-board sampler
    Proteus/2.
    To create the third and final sub-instrumental-box, create a new
    Channel Splitter. Cable the free node from the Cable Switcher to
    this new Channel Splitter.
    Create one new instrument (not a multi-instrument) and label it "Arco Violins".
    Create another new instrument and label it "Marcato 2". Create another
    new instrument and label it "Pizz Violins". Create a final instrument
    and label is "Trem Strings". Obviously the Proteus/2 is not as sophisticated
    as either Apple's JamPack or GOS in that there are not necessarily
    specific Violin I patches only; so, I tried my best and used "Marcato 2"
    for example, even though this is for the entire string family.
    The details of each instrument is now given (remember, that some of these
    details related specifically to the out-board sample-player, Proteus/2):
    Arco Violins:
    Port: Port A
    Channel 1
    Program: box checked - 7.
    Volumn unchecked.
    Pan unchecked.
    Transpose 0.
    Velocity 0.
    Key Limit C-2 G8
    Vel limit 0 127
    Delay 0
    No Transp. unchecked
    No Reset: unchecked.
    Style: auto
    Marcato 2:
    Port: Port A
    Channel 4
    Program: box checked - 9
    Pizz Violins:
    Port: Port A
    Channel: 6
    Program: box checked - 15
    Trem Strings:
    Port: Port A
    Channel: 7
    Program: box checked - 18
    In the above listings, the Program has its box checked,
    and the number which follows it is the specific patch or
    sound containing the articulation I need to be produced
    by the Proteus/2.
    One can now click on the Cable Switcher and activate
    one of the three, specific implementations of "Violins I".
    You can also send in a program change through MIDI
    to accomplish the same thing. However, it is always
    possible that if you change the implementation in the
    middle of a phrase, that the note off signal for the
    last note played by the previous implementation might
    be sent to the different, current implementation, with the
    net result that the note never turns off.
    Now that you have the Violins I layer in your environment,
    here are some issues and some questions I'm thinking about (and don't know
    the immediate answer to):
    1. The GOS sub-instrumental-box used 10 EXS-24 audio-instruments, how
    much memory was that exactly?
    2. Apple's JamPack adds an additional 6 audio-instruments. How much
    additional memory does adding JamPack produce?
    3. If my G4 Macintosh has 1.5 gigs of memory, do I care? Is Apple's
    Logic Pro program smart enough not to keep these sounds in memory
    if they are not used? Or do these sounds always reside in memory?
    4. To conserve memory, is it smarter to load Apple JamPack instruments
    through the ESX-24?
    Thanks,
    Sys6
    G4, 1.5 gigs of memory   Mac OS X (10.4.8)  

    wow! What a post!
    Your way of "articulation switching" is very similar to the articulation tool I'm currently using, created by a member named kai. To find out more about his tool and its uses, visit the quick tip post I created: http://proapptips.com/tips/article.php?story=2006092810303559
    edit: It turns out the link I provided in the tip has been changed, so if you want to download the tool and its manual, visit http://www.elvenmusic.com/vsl/vsl.html and scroll to the bottom.
    Now, as for your concern of scoring two independently rhythmic parts with the same articulation in the score editor, there is a simple way around this problem. Simply add another track using the same Violin I instrument in the arrange page, which will give you 2 tracks in the score editor. This may not be the best scoring solution, as you will now have 2 violin staffs for divisi violin parts, but it will work fine while composing and you can merge the two when focusing only on the score.
    Also, I'd like to point out a memory saving tip you will find helpful. First off, its impossible for you to apply your technique for every instrument of the orchestra, as logic limits you to 128 instruments at one time, and given that an full orchestra can easily use 30-40 instruments, you will not be able to load 32 articulations for each instrument (16 GPO instruments and 16 jampak instruments). Realistically you will only be able to load about 3-4 articulations for every instrument. However, logic does not have any limit for instrument OBJECTS, thus you can create "slots" where particular articulations may go, and turn the instrument to "off" and simply load each articulation as needed. Whats cool about this method, is that for the most important articulations that you always want on call, load them up in EXS first, and then turn off the object in the environment window. Now whenever you need that articulation, simply turn on the object to its proper instrument number and the associated instrument patch and EXS instrument will be loaded automatically! Cool huh! You can also open link your environment window to update its data to any other window using the "chain" icon. For example, you can have your arrange page open on on side of your monitor, and your environment window open on the other, and whenever you select violin one, the environment goes to your violin I object, allowing you to quickly add more articulations to your open slots when needed (I have mine on a 2nd monitor, which saves me from having to constantly open the environment when I want to add an articulation).
    In answer to your other questions, if you are curious about how much memory your samples are using, run apple activity monitor before you load a sample, and after to get a rough estimate. Make sure to check how often the activity monitor checks ram, as its default may be 5min (dont remember), and keep in mind individual instruments are not that big, its when you load 20-30 that it starts to add up.
    As for your 3rd question, logic will keep everything you load in its memory buffer and/or use CPU to keep it ready to go. Each exs you load, even if you dont select a patch, uses computer resources. Thus my recommendation of turning your objects to "off" and only loading articulations as needed.
    I dont have apple jam packs, so I cant answer #4. However, you could test it yourself using activity monitor above.
    Well done in your implementation of these concepts on your own! I personally had no clue any of this was possible before I stumbled upon Kai's articulation tool. Now that I have, composing with large sample libs as proven a much more enjoyable experience!
    All the best, and thanks for sharing this with the logic community!

  • Why an Interface is used in a Java Program

    Since we have Classes in Java program
    Then what is the need for An Interface in a Java Program
    Please explain to me
    i'm confused

    These are fair comments as per as interface is concern.... we need interface to declare the methods without implementing the methods. Basically interfaces help implementing classes in a organised way.
    Now We got abstract class also, which has got more or less same features like interfaces. In abstract class also we can declare a method without implementation.
    If we use abstract class and extend that abstract class, we don't have implement all the abstract methods in that particular class,which would extend the abstract class, but if we implement an interface in a class, we have to define all the methods with their body. Now, can anyone tell me , in a generic way, when do we use interface and when do we use abstract class. I don't need the differences between abstract class and interface...that i know...thanks in advance
    take it easy
    RD
    l

Maybe you are looking for