Os2l Virtual Dj

45 views
Skip to first unread message

Cloris Sopha

unread,
Jul 24, 2024, 5:37:32 AM7/24/24
to tichildnachtai

OS2L satisfies two main objectives:

  • 1) to allow better "automatic" lights synchronisation, by letting the DMX software get information about the speed and phase of the music.
  • 2) to allow the user to perform quick changes in the lights directly from his audio software and/or hardware.

OS2L communication is done over the local network (wifi or ethernet) using TCP/IP (or using the loopback network address if both applications are running on the same computer).
The connection between the audio software and the DMX software is done automatically and transparently, using DNS-SD automatic discovery (Apple's Bonjour, Microsoft's DNS-SD or Linux's Avahi).

The DMX software act as the service provider, and registers itself on DNS-SD as providing the "_os2l._tcp" service, then start listening for incoming connections on a port of its choice. The audio software uses DNS-SD to discover OS2L service providers, and start communicating on the TCP interface returned when one is found.
See the example below for implementation.

os2l virtual dj


Download File 🗹 https://fancli.com/2zJbw7



The 'btn' messages, are mostly intended to be used by users of the DJ software, that might not have programmed the DMX software themselves, and wouldn't have access or know how to configure its various mappings.
It lets the DJ simply read on the DMX software's screen the name of a button he wants to control, and enter it in his DJ software.

The 'cmd' messages, are more intended to be used by users who are both the DJ software and DMX software user, or just DMX software user, and want to use the more powerful mapping system provided by the DMX software.
They will be more similar to other existing mapping features like MIDI, OSC, etc.

From MagicQ version 1.9.2.2, we support the ability to connect to external DJ systems via a network connection. This allows MagicQ to both see what is currently playing on the connected DJ decks, as well as using the timecode information to be able to synchronise Cue Stacks to a given track.

MagicQ uses the Open Sound 2 Light protocol to communicate with VirtualDJ. To enable this, set the "VirtualDJ OS2L" protocol to "Yes" within the MIDI / Timecode tab of the Setup window. Within VirtualDJ, to enable the connection to MagicQ, go into the Settings window, select Options, and filter by "os2l". Set the "os2l" setting to "yes" or "auto", and set the "os2lDirectIp" setting to the IP address of the MagicQ system, with ":8060" appended on the end to specify the port number.

Currently VirtualDJ will not send data to MagicQ until an initial OS2L command is sent from the software to MagicQ. To configure this, a macro will need to be configured to send "os2l_cmd 1 on". This can be configured in VirtualDJ to either be a key bind or button.

MagicQ uses the Engine Prime network architecture to communicate to Denon DJ equipment. To enable this set the "StagelinQ" protocol to "Yes" within the MIDI / Timecode tab of the Setup window. Any connected devices that are within the subnet will appear in the popup when selecting a deck.

To connect to a ProDJLink system, you will need to have either the ProDJLink Bridge application (Windows or macOS) application, or ShowKontrol application (macOS only) running on an external system. These applications form a bridge between the ProDJLink network which connects the mixers and decks together, and the TCNet network. To enable this connection, set the "TCNet" protocol to "Yes" within the MIDI / Timecode tab of the Setup window and make sure the ProDJLink bridge application is running on the same subnet as MagicQ. MagicQ should appear as a node within the TCNet tab of the bridge application.

MagicQ supports four DJ decks at once, but these can be mixed from different systems, rather than being limited to a single system. Once a protocol has been enabled, you should be able to select the decks from the "DJ Deck 1-4" options within the MIDI / Timecode tab of the Setup window.

MagicQ also has support for DJ mixer channel configuration. You can configure each DJ Deck mixer channel from the MIDI / Timecode tab. Channels can be set to "Default", which matches the mixer channel to the DJ Deck value, or the channels can be configured with "1-6".

The Audio Window can be loaded by selecting it from the "Window" menu on PC systems, or alternatively by pressing ALT+PAGE. The mode can be changed by using the two soft buttons "View DJ Deck" and "View Beat Track".

Note some DJ systems do not provide all of this information, MagicQ will display the information it can receive as well as displaying what information it cannot receive. If this information is later received, the DJ Deck should update with the relevant information.

DJ Decks can be used to control the timecode for Cue Stacks. If a DJ Deck has the EXACT same title and artist as the Cue Stack Audio file (Cue Stack Options > Audio > Audio file), when the playback is activated and the DJ Deck is playing, the Cue Stack should start playing using the tracks position as the timecode. You are also able to link a DJ Deck to a Cue Stack. This can be done by pressing COPY then the Cue Stack you want to link to, followed by the DJ Deck you want to link from.

In Audio Beat Track mode, it will show a running waveform of the audio input, and the beats detected will be shown as red lines in the waveform. A histogram is also shown alongside to show the confidence the algorithm has in each BPM value. The peak will be used to set the BPM in MagicQ. The range of BPM values can be configured using the encoder in the Audio window. This will limit detection to the range of BPMs selected. This is useful in the case there are songs which the algorithm either ends up detecting a beat at either twice or half the actual BPM desired.

To synchronise the playback of a track with a Cue Stack in MagicQ, you must associate the incoming track information together with the required Cue Stack. To do this, load the desired track so that it is showing in the Audio Window, then use the Copy function in MagicQ, select your Cue Stack as the source, then click on the header of the relevant deck in the Audio Window. This will set the "DJ Track" setting on the Cue Stack which corresponds to the track information we can determine from the deck.

To enable the Cue Stack to automatically activate and release when the track is loaded and unloaded from a deck, set the "Activate and Release on DJ System" setting to "Yes" under the "Activate Release" settings of the Cue Stack. When enabled, this will activate the Cue Stacks in the same way they are activated from an execute grid, or from the Stack Store window.

Depending on the "Crossfader Mode" option within the MIDI / Timecode tab, the activated Cue Stack will either be activated at full when set to "Cue Stack 100% when active", or will follow the crossfader and upfader levels if set to "Cue Stack follows volume". Tracking the crossfader and upfader levels is only available on DJ systems which provide this information externally.

If a DJ System is connected, then the active deck will be the source of the global beat number within MagicQ which can be used with the "Audio beat step" functionality. When an audio input is configured instead, then the beats will be used to drive a beat count internally to MagicQ.

The status of the underlying connections to the different DJ systems can be viewed within the Setup, View System, View Status, DJ/Timecode tab. This will detail connection status and IPs of connected systems to aid in setting up a new system.

MagicQ supports DJ Mixer Channel Configuration. If your DJ system is configured in a way where your DJ Deck 1 is being controlled via Channel 2 on the Mixer, you can set Channel 2 to control that DJ Layer.

To configure the Mixer Channels, set each "DJ Deck Audio Channel" to the respective Channel that you are using within the MIDI/Timcode tab of the Setup window. Channels can be set to either "Default" or 1 to 6. "Default" uses the Channel number that relates to the DJ Deck, for example, DJ Deck 1 will use Channel 1. Setting the "DJ Deck Audio Channel" to 1 to 6 allows the use of any of the available Channels on the DJ Mixer to control the DJ Decks in MagicQ.

Deep master grid duplicate: Allows to deep duplicate a master grid, which means all linked grids are also duplicated and linked to the new master duplicate. You now see this option when duplicating a master grid.

Show the real ArtNet universe instead of subnet:universe: In the ArtNet configuration, when changing the input or output subnet, the universe numbers are now updated. So instead of always starting at U0, if the subnet is 1, we now show U16. The manual node subscriptions are also now using the real universes. The subnet:universe value is displayed in the tooltip for each input or output universe box in the configuration panel.

Fix not setting the proper unscaled OSC values when manually setting a value: When double-clicking on a OSC channel, the same value was used for the unscaled value (raw value). Now apply the scaling as configured in the mappings.

New function for Ableton Link: abletonLink.beat, abletonLink.phase, abletonLink.quantum, abletonLink.tempo, abletonLink.peers, abletonLink.enabled. Use abletonLink.enabled(100) to connect to the Link session.

New function: timedSequence(nbRepeats, crossfadeDuration, resetFct, time1, fct1, time2, fct2, time3, fct3, ..., [endFct]): Play each function for the specified duration. Repeat the sequence nbRepeats times or indefinitely if less than 0. Crossfade when switching function. Reset when resetFct is positive. Optional endFct played when the sequence ends.

Reset the time of functions in sequences: When using sequence-like functions like loop and timedSequence, the time reset each time it goes to the next step. This way, the result should be the same each time the sequence is played.

New function: grid.backgroundAt(x,y) This function returns the value of the background at the specified position. This lets you manipulate the value as you want - for example, to invert it, the source's power formula would be 100-2*grid.backgroundAt(x,y). The difference with the grid.powerAt function is that the powerAt includes the power of the sources of the current grid while the backgroundAt only returns the value coming from a media or another grid. This background thing is twisted, but quite fun!

ff7609af8f
Reply all
Reply to author
Forward
0 new messages