Posted By Paul Kafasis on November 30th, 2018
Get excited, Loopback users! We're now shipping Loopback 2.0, a major upgrade to our popular audio routing utility. The success of the first release of Loopback gave us the chance to go back to the drawing board for version two. We focused on making the app both more powerful and more accessible, with an intuitive wire-based interface that better illustrates how your audio will flow.
LoopBack is a highly extensible, open-source Node.js framework. For more details on our Node.js experience, you can browse our technology stack. Not a Node.js kind of dev? Then check out our articles on converting between web frameworks and programming languages (part 1 and part 2 – data). With Node.js and LoopBack, you can quickly create.
Loopback's easy to understand wire-based routing
Loopback 2.1.4 Crack Mac makes it straightforward to go audio between functions in your Mac. Create digital audio units to take the sound from functions and audio enter units, then ship it to audio processing functions. Loopback offers you the ability of a high-end studio mixing board, proper inside your laptop! Looks like you're using an older browser. To get the best experience, please upgrade. UPGRADE MY BROWSER. It will plug into any standard M.2 NGFF M-key connector. For an example, please take a look at this connector from TE: 1-2199230-6. What are the electrical requirements of this module? The M.2 loopback module is completely passive and simply provides loopback connections on each of the 4x PCIe lanes of the M.2 interface. 2.1 Low-Pin count (LPC) connector loopback The pins used by the LPC connector are a subset of the High-Pin count (HPC) connector's pins. There are in total 34 differential pairs for user data (LAxP/N pins), 2 diff. Pairs dedicated to user clock signals, 1 multi-gigabit transceiver consisting of 1 diff. TX pair (DP0M2CP/N) and 1 diff.
If you're already familiar with Loopback, you can jump over to our 'What's New in Loopback 2' web page to read all about the new features. This upgrade is a fantastic leap forward.
New to Loopback?
Loopback gives you control over how audio flows between apps and devices on your Mac. Since it first shipped in early 2016, Loopback has gained a substantial audience of podcasters, screencasters, audio techs, and more. Loopback's power is great for a wide variety of uses, including:
Playing Audio to All Podcast Guests
When a physical mic is coupled with a music player like iTunes or a soundboard app like Farrago, guests on Skype can hear your voice, as well sound effects and musical add-ons.
Creating Top-Notch Screencasts
Screen recording tools grab either microphone audio or all system audio, and neither option is ideal. With Loopback, get just the audio you need by recording only the mic and the application being filmed.
Pairing It With Audio Hijack
Audio Hijack is best known for letting you record any audio, but it can also apply effects to audio, without recording. When Audio Hijack and Loopback join forces, you can do things like putting a compressor on your microphone before you send it to Skype, and more.
Combining Multiple Hardware Devices
Audio apps including GarageBand, Logic, and Ableton Live only record from a single audio device at a time. Loopback can merge multiple physical input devices into a single virtual device for easy recording.
Using Pass-Thru Devices
Loopback's virtual audio devices also make it easy to pass audio directly from one application to another. A zero-configuration 'Pass-Thru device' can be used as both an audio input and an audio output throughout the system to pipe audio directly between applications.
And So Much More
Podcasters, live streamers, and audio techs swear by Loopback, and now it's better than ever. Virtual audio devices give you control over how audio flows on your Mac, making it possible to do incredible things.
Try Loopback 2 Right Now
For the power of a high-end studio mixing board in a much simpler package, look no further than Loopback.
Loopback 2 works on MacOS 10.11 and higher, and the links below will get you started. Download our free, fully-functional trial to explore all that Loopback offers, then purchase through our online store for $99.
Notes for Owners of Loopback 1
If you previously purchased Loopback 1, you're eligible to upgrade to version 2 for just $49. Download the new version to try it out, then click to purchase your discounted upgrade to version 2.
Folks who purchased Loopback on or after September 1st, 2018 will receive a complimentary upgrade to Loopback 2. Full details have been sent via email, so please check your inbox.
Overview
LoopBack models automatically have a standard set of HTTP endpointsthat provide REST APIs for create, read, update, and delete (CRUD) operations on model data.The public
property in model-config.json specifies whether to expose the model's REST APIs, for example:
/server/model-config.json
To 'hide' the model's REST API, simply change public
to false
.
REST paths
By default, the REST APIs are mounted to the plural of the model name; specifically:
Model.settings.http.path
plural
, if defined in the Model definition JSON file.- Automatically-pluralized model name (the default). For example, if you have a location model, by default it is mounted to
/locations
.
Using the REST Router
By default, scaffolded applications expose models over REST using the loopback.rest
router.
Important:
If you created your application using the application generator, LoopBack will automatically set up REST middleware and register public models. You don't need to do anything additional.
To manually expose a model over REST with the loopback.rest
router, use the following code, for example:
After this, the Product
model will have create, read, update, and delete functions working remotely from mobile.At this point, the model is schema-less and the data are not checked.
You can then view generated REST documentation at http://localhost:3000/explorer
LoopBack provides a number of built-in models that have REST APIs.See Built-in models REST API for more information.
Request format
For POST and PUT requests, the request body can be JSON, XML or URL-encoded format, with the Content-Type header set to one of:
application/json
application/xml
application/x-www-form-urlencoded
The Accept header indicates its preference for the response format.
Tip: Setting the request's Accept header to application/vnd.api-json
will result in the response's Content-Type header being automatically set to application/vnd.api-json
if application/vnd.api-json
is in the array of supported types.
Set the supported types with the remoting.
rest.supportedTypes
property in config.json.
Passing JSON object or array using HTTP query string
Some REST APIs take a JSON object or array from the query string. LoopBack supports two styles to encode the object/array value as query parameters. Librarian pro 4 0 6 – complete personal inventory system.
- Syntax from node-querystring (qs)
- Stringified JSON
For example,
The table below illustrates how to encode the JSON object/array in different styles:
JSON object/array | qs style | Stringified JSON |
---|
Response format
The response format for all requests is typically a JSON object/array or XML in the body and a set of headers.Some responses have an empty body. For example,
The HTTP status code indicates whether a request succeeded:
- Status code 2xx indicates success
- Status code 4xx indicates request related issues.
- Status code 5xx indicates server-side problems
The response for an error is in the following JSON format:
Loopback 2
- message: String error message.
- stack: String stack trace.
- statusCode: Integer HTTP status code.
For example,
Disabling API Explorer
LoopBack API Explorer is great when you're developing your application,but for security reasons you may not want to expose it in production.
For an application using loopback-component-explorer, to disable explorer in production:
- Set the NODE_ENV environment variable to 'production'.
- Then in
server/component-config.production.json
:
server/component-config.production.json
Predefined remote methods
By default, for a model backed by a data source that supports it,LoopBack exposes a REST API that provides all the standard create, read, update, and delete (CRUD) operations.
As an example, consider a simple model called Location
(that provides business locations) to illustrate the REST API exposed by LoopBack.LoopBack automatically creates a number of Node methods with corresponding REST endpoints, including:
The following table describes remote methods exposed in LoopBack 3.x:
Model (Node) API | HTTP Method | Example Path |
---|---|---|
create() | POST | /locations |
replaceOrCreate() | PUT | /locations |
patchOrCreate() | PATCH | /locations |
exists() | GET | /locations/:id/exists |
findById() | GET | /locations/:id |
find() | GET | /locations |
findOne() | GET | /locations/findOne |
destroyById() or deleteById() | DELETE | /locations/:id |
count() | GET | /locations/count |
replaceById() | PUT | /locations/:id |
prototype.patchAttributes() | PATCH | /locations/:id |
createChangeStream() | POST | /locations/change-stream |
updateAll() | POST | /locations/update |
replaceOrCreate() | POST | /locations/replaceOrCreate |
replaceById() | POST | /locations/:id/replace |
As you see the only difference between LoopBack 2.x and 3.0 in default configuration is the behaviour of HTTP PUT endpoints (both PUT /api/my-models
and PUT /api/my-models/:id
). By default in LoopBack 2.x, these endpoints invoke patch methods and perform a partial update, while in LoopBack 3.0, these methods perform a full replace.
replaceOnPUT flag
Use the replaceOnPUT property in model.json
to change the behavior of mapping replace and update methods. If replaceOnPUT is true, replaceOrCreate and replaceById use the HTTP PUT method; if it is false, updateOrCreate and updateAttributes/patchAttributes use the HTTP PUT method.
The following example illustrates how to set replaceOnPUT
in location.json
:
Tip: The above table provides a partial list of methods and REST endpoints.See the API documentation for a complete list of all the Node API methods. See PersistedModel REST API for details on the REST API.
Exposing and hiding models, methods, and endpoints
To expose a model over REST, set the public
property to true in /server/model-config.json
:
Hiding methods and REST endpoints
If you don't want to expose certain operations, hide them by calling disableRemoteMethodByName()
on the model. For example, following the previous example, by convention custom model code would go in the file common/models/location.js
.You would add the following lines to 'hide' one of the predefined remote methods:
common/models/location.js
Loopback 2 1 34 Mm
Now the deleteById()
operation and the corresponding REST endpoint will not be publicly available.
For a method on the prototype object, such as updateAttributes()
:
common/models/location.js
Important: Be sure to call disableRemoteMethodByName()
on your own custom model, not one of the built-in models; in the example below, for instance, the calls are MyUser.disableRemoteMethodByName()
notUser.disableRemoteMethodByName()
.
Here's an example of hiding all methods of the MyUser
model through configuration, except for login
and logout
:
Loopback 2 1 34 Resz
In server/model-config.json
:
You can also hide common methods across all models through config.json
's remoting
object as follows:
Alternatively you can also disable remoteMethods through javascript in your myUser.js
model:
Read-Only endpoints example
You may want to only expose read-only operations on your model hiding all POST, PUT, DELETE verbs
common/models/model.js
Hiding endpoints for related models
To disable a REST endpoints for related model methods, use disableRemoteMethodByName().
Note:For more information, see Accessing related models.
For example, if there are post and tag models, where a post hasMany tags, add the following code to /common/models/post.js
to disable the remote methods for the related model and the corresponding REST endpoints:
Hiding properties
Loopback /32
To hide a property of a model exposed over REST, define a hidden property.See Model definition JSON file (Hidden properties).
Tip:Hidden and protected properties are subtly different.
hidden
determines whether a property is returned by a query directly against the model that contains the property.protected
determines whether a property is returned by a query against a model that has a relation to the model being queried.
For more information, see Hidden properties.