DNB COLLEGE

Drum & Bass Ableton Live 12 Tutorials

LESSON DETAIL

Moonlit Jungle jungle sampler rack: saturate and arrange in Ableton Live 12 (Advanced)

An AI-generated advanced Ableton lesson focused on Moonlit Jungle jungle sampler rack: saturate and arrange in Ableton Live 12 in the Sound Design area of drum and bass production.

Back to lessons
Moonlit Jungle jungle sampler rack: saturate and arrange in Ableton Live 12 (Advanced) cover image

Narrated lesson audio

The voice track includes the tutorial plus extra teacher commentary.

Open audio file

Main tutorial

Lesson Overview

This lesson shows you how to build a Moonlit Jungle-style jungle sampler rack in Ableton Live 12 and then saturate, shape, and arrange it into a proper DnB section that feels playable, aggressive, and musical. The focus is not just “make a chop rack,” but make a rack that can survive a full arrangement: intro tension, drop impact, call-and-response movement, and DJ-friendly flow.

In Drum & Bass, especially jungle, rollers, darker neuro-leaning DnB, and modern halftime/jungle hybrids, the sampler rack is more than a sample player. It becomes a performance instrument for:

  • break chop articulation
  • bass stabs and sub reinforcement
  • atmospheric one-shots
  • arrangement triggers and switch-ups
  • saturation-driven character control
  • Why this matters: a lot of jungle ideas sound exciting in 8 bars and then fall apart in a full tune. The goal here is to create a rack that can be played like an instrument, automated like a sound design tool, and arranged like a finished DnB section without losing low-end discipline or drum punch.

    You’ll use Ableton stock devices to build a rack that can generate that moonlit, murky, late-night jungle energy: crispy breaks, shadowy subs, tape-worn grit, and controlled stereo movement. 🌙

    What You Will Build

    By the end, you’ll have a multi-layer jungle sampler rack in Ableton Live 12 that can do all of this:

  • trigger four to eight break variations from one MIDI clip
  • layer sub weight under chopped breaks without clouding the kick fundamentals
  • add saturation and transient bite that reads on club systems
  • automate filter motion, send FX, and intensity across 8–16 bar phrases
  • create drop-ready call-and-response patterns between drums, bass, and atmosphere
  • switch between tight roller mode, broken jungle mode, and darker neuro-jungle mode
  • maintain a clean mix with mono-compatible low end and controlled harshness
  • Musically, the rack will support a section like this:

  • bars 1–8: eerie intro with filtered break ghosts and distant ambience
  • bars 9–16: first drop with chopped break, sub pulse, and short bass replies
  • bars 17–24: variation with extra fills, reverse hits, and more saturation
  • bars 25–32: fuller section with extra drum layer, bass movement, and a bigger send wash
  • This is a practical rack for real DnB writing, not a preset toy.

    Step-by-Step Walkthrough

    1. Build the rack architecture first: drums, bass, and atmosphere in separate chains

    Create a new MIDI track and load an Instrument Rack. Inside it, make three chains:

    - Break Chain

    - Bass Chain

    - Atmosphere / FX Chain

    Keep the separation intentional. The point is not to make one giant messy sampler, but a rack you can actually arrange with.

    For each chain, use Simpler or Sampler depending on the material:

    - Break Chain: Simpler in Slice mode or Classic for one-shot chops

    - Bass Chain: Simpler in Classic or One-Shot for sub/reese hits

    - Atmosphere Chain: Simpler for vinyl noise, field recordings, reverse atmos, or eerie hit textures

    Suggested macro assignments for the rack:

    - Macro 1: Break Tone

    - Macro 2: Saturation

    - Macro 3: Filter Open

    - Macro 4: Sub Level

    - Macro 5: Stereo Width (high band only)

    - Macro 6: Send to Reverb/Delay

    - Macro 7: Transient Snap

    - Macro 8: Dirt / Crush

    Why this works in DnB: separating low-end, drum transients, and atmos lets you saturate each layer differently. That’s huge in jungle because the break needs crackle and urgency, while the sub needs controlled harmonics, not mush.

    2. Load and prep your break material with realistic jungle editing choices

    Choose one main break and one support break. A strong combo is:

    - one Amen-style break for rhythmic identity

    - one secondary break with different transient shape or room tone

    In Simpler, use:

    - Classic mode for one-shots or sustained slices

    - Slice mode if you want each transient to trigger from MIDI

    - Warp off for one-shots unless you specifically need time-stretch behavior

    If you’re working in Slice mode, set slice sensitivity so you get around 8–16 useful slices from the break instead of dozens of tiny fragments. Too many slices makes programming busy instead of musical.

    Practical slice workflow:

    - duplicate the break lane

    - one lane for main groove slices

    - another lane for ghost hits and turnarounds

    - a third lane for fills and reverse edits

    Useful Simpler settings:

    - Filter: low-pass around 14–18 kHz for dusty top-end, or around 8–12 kHz for a darker tone

    - Pitch envelope: tiny amount, around +3 to +10 cents if you want more snap on the attack

    - Voices: 1 for one-shots, or slightly more if you’re layering tails

    - Fade: short fade if clicks appear, especially on aggressive cuts

    Advanced move: print a second break variation by duplicating the Simpler chain and shifting the sample start slightly. Even 1–5 ms of difference can create a new feel without changing the loop.

    3. Design the bass layer to support the break, not fight it

    For the bass chain, build a sub + reese hybrid using stock tools:

    - Operator for a pure sub sine

    - Wavetable or Analog for a mid-bass layer

    - or Simpler with a bass stab resample if you want a grittier jungle flavour

    The sub should be simple:

    - sine wave

    - mono

    - short decay or controlled sustain

    - no unnecessary stereo width

    Suggested Operator settings:

    - Oscillator A: Sine

    - Octave: -1 or -2

    - Level: keep it solid but not overpowering

    - Envelope decay: roughly 120–250 ms for pulsed bass, or longer if it needs to hold under a sparse roller

    For the mid-bass/reese:

    - use a detuned saw or unison-style wavetable

    - keep the low end removed with an EQ or filter

    - layer movement with Auto Filter, Phaser-Flanger, or very subtle Chorus-Ensemble if it suits the tune

    Important: high-pass the bass texture layer around 90–150 Hz so the sub remains clean. In dark DnB, the mid layer should add menace, not low-end fog.

    Why this works in DnB: the sub anchors the track on club systems, while the reese or bass texture gives emotional tension and forward motion. Jungle often sounds huge because the low end is disciplined, not because it’s overloaded.

    4. Add saturation in stages, not all at once

    This is the “Moonlit Jungle” character move. Don’t just slap a saturator on the master and hope for grit. Use controlled saturation across chains.

    On the Break Chain, use:

    - Drum Buss with Drive around 5–18%

    - Transient slightly up if the break needs more crack

    - Boom usually very subtle or off for jungle breaks unless you want extra low thump

    - optional Saturator after Drum Buss with Soft Clip on

    On the Bass Chain, use:

    - Saturator with Drive around 2–8 dB

    - Soft Clip enabled if needed

    - EQ Eight after it to trim harsh upper mids if the saturation gets edgy

    On the Atmosphere Chain, use:

    - Redux lightly for grain

    - Roar if you want modern darker distortion movement

    - Auto Filter before or after saturation for animated darkness

    A reliable chain order for the break:

    - Simpler

    - EQ Eight

    - Drum Buss

    - Saturator

    - Compressor or Glue Compressor if needed

    A reliable chain order for the bass:

    - Operator / Wavetable

    - Saturator

    - EQ Eight

    - Utility for mono control

    Parameter targets:

    - keep the break saturation audible but not flattened

    - keep bass saturation focused in the low-mid harmonics

    - preserve transient impact by avoiding too much drive before compression

    Advanced tip: if the break loses snap, reduce saturation and increase parallel drive by duplicating the chain or using an Audio Effect Rack with a dry/wet split.

    5. Shape the groove with MIDI phrasing, ghost notes, and off-grid tension

    Program the rack in a 2-bar or 4-bar MIDI clip. Avoid looping the same pattern with zero variation. Jungle lives in the edits.

    Build the pattern like this:

    - bar 1: main break phrase + sub hit on the downbeat

    - bar 2: ghost snare, snatched hat, or reversed micro-fill

    - bar 3: repeat but remove one or two hits

    - bar 4: fill into the next phrase with a bass answer or break stop

    Use velocity variation heavily:

    - main snare: high velocity

    - ghost notes: low to medium velocity

    - hat ticks: alternate levels to create shuffle

    - bass replies: moderate velocity with occasional accent

    If you’re using MIDI to trigger slices, offset some hits slightly ahead or behind the grid by a few milliseconds. Keep it tasteful:

    - snare accents can sit a touch ahead

    - ghost hits can lag slightly

    - bass replies often feel better just behind the beat

    Add groove from Live’s Groove Pool if needed, but don’t overdo it. A subtle MPC-style shuffle or extracted groove from your break can make the rack feel more human without losing the jungle sharpness.

    Musical context example: if your drop is in D minor, you might let the sub hit D on the downbeat, then answer with a chopped break fill and a short F or C bass stab on the last 1/16 of bar 2. That simple question-and-answer shape keeps the listener locked while the drum programming does the talking.

    6. Automate filter, send effects, and chain macros across the arrangement

    Now make the rack feel like a finished track section, not just a loop.

    Map and automate:

    - Macro 3: Filter Open for break brightness

    - Macro 6: Send to Reverb/Delay for transition moments

    - Macro 8: Dirt / Crush for intensity escalation

    - Utility width only on upper layers, never on the sub chain

    Arrangement ideas:

    - Intro: low-pass the break around 200–800 Hz, then slowly open over 8 bars

    - Pre-drop: automate reverb send up briefly, then cut it before the drop

    - Drop A: keep the break tighter and drier

    - Drop B: open the filter more, add a fill layer, or increase drive by a small amount

    - Breakdown: remove the kick/sub, let atmosphere and filtered slice ghosts carry tension

    Use return tracks for:

    - short dub delay

    - dark reverb

    - parallel crush

    Keep the wet sends controlled. In darker DnB, too much wash blurs the break science. A little movement goes a long way.

    Advanced move: automate the chain volume or rack macros to switch between “tight” and “wide/grimy” states during 8- or 16-bar blocks. This keeps the tune evolving without needing extra parts every two bars.

    7. Control the low end and transient balance with surgical mixing moves

    Set the rack up so it survives in a full arrangement with synths, FX, and other percussion.

    On the break chain:

    - use EQ Eight to cut unnecessary low-end rumble below 30–40 Hz

    - if the snare is harsh, tame around 3–6 kHz

    - if the break sounds boxy, gently reduce 250–500 Hz

    On the sub:

    - keep it mono with Utility

    - avoid stereo wideners

    - make sure the sub and kick are not fighting for the same fundamental

    - if necessary, sidechain the sub lightly to the kick using Compressor or Glue Compressor

    Good low-end behavior:

    - kick and sub should feel like one system, not two different arguments

    - when the break gets busier, reduce bass density rather than pushing everything louder

    - check the rack in mono regularly

    A useful balance test:

    - if you turn the break down 2 dB and the groove still works, the bass is probably not overdependent on the drums

    - if the sub disappears when the break hits, the break may be masking the fundamental

    For heavier DnB, you want the drum transients to punch without stealing the whole spectrum.

    8. Arrange the rack into a proper DnB phrase with switch-ups and tension-release

    Now turn the rack into a section that feels release-ready.

    Use this structure:

    - 8 bars intro: filtered atmosphere, break ghosts, sub tease

    - 8 bars build: more break detail, short bass stabs, automation rise

    - 16 bars drop: main rack groove with one variation every 4 bars

    - 8 bars switch-up: half-time-feeling fill or stripped drum/bass call-and-response

    - 8 bars second drop lift: fuller version with higher saturation and added percussion

    Switch-up ideas:

    - remove the main snare for half a bar

    - insert a reversed break hit into the last beat of bar 4 or 8

    - swap the bass answer for a higher octave stab for one phrase

    - let the atmosphere chain open briefly, then clamp back down

    In DnB, the arrangement is often what makes a loop feel premium. A well-placed 1-bar break fill or 2-beat bass silence can hit harder than adding another layer.

    Use Arrangement View markers to label:

    - intro

    - drop A

    - switch

    - drop B

    - outro

    This keeps decision-making fast and helps you finish.

    Common Mistakes

  • Over-saturating the whole rack
  • - Fix: saturate drums, bass, and atmos separately. Use small amounts in stages.

  • Letting the sub go stereo
  • - Fix: keep the sub chain mono with Utility and remove width from everything below the bass texture range.

  • Too many break slices with no phrasing
  • - Fix: reduce to the slices that support the groove. Less is usually more in advanced jungle writing.

  • Using the same 2-bar loop for the entire tune
  • - Fix: create at least one variation every 4 or 8 bars. Add fills, mutes, or automation changes.

  • Harsh upper mids from aggressive saturation
  • - Fix: use EQ Eight after distortion and trim the 3–7 kHz area if needed.

  • Kick and sub competing
  • - Fix: pick a stronger relationship. Either let the kick own the attack or let the sub carry the downbeat more clearly.

  • Too much reverb on breaks
  • - Fix: keep effects short and selective. Use sends only on transition moments.

    Pro Tips for Darker / Heavier DnB

  • Use parallel saturation on the break chain so you can keep transient clarity while adding grime.
  • For a darker roller feel, keep the bass rhythm sparse and let the break do the motion.
  • Try a short Auto Filter sweep on the reese layer every 4 bars to create controlled tension.
  • Add a very low-level vinyl noise, rain, or field recording layer in the atmosphere chain, then high-pass it hard so it adds mood without mud.
  • Use Drum Buss transient control to sharpen the break without over-EQing it.
  • If the tune needs more underground pressure, reduce bright top-end and lean into midrange growl, short delays, and tighter drum spacing.
  • For neuro-jungle crossover energy, automate a band-pass or notch filter on the bass texture layer, but keep the sub straight.
  • Resample a 4-bar rack performance into audio, then chop the best moments into new fills. This often creates the most authentic “finished” jungle phrasing.
  • Mini Practice Exercise

    Spend 10–20 minutes building a 16-bar phrase from scratch:

    1. Load one Amen-style break and one darker support break.

    2. Create three rack chains: break, bass, atmosphere.

    3. Program a 4-bar groove with one ghost fill and one silence gap.

    4. Add a sine sub in Operator with a simple D or F root note pattern.

    5. Saturate the break lightly with Drum Buss and the bass with Saturator.

    6. Automate the break filter from dark to brighter over 8 bars.

    7. Add one reverb send swell before bar 9.

    8. Duplicate the section and change one detail only: a fill, a bass reply, or a filter move.

    9. Check mono and reduce any stereo low end.

    10. Resample the best 4 bars if the rack feels good.

    Goal: make the section feel like a real drop, not just a loop.

    Recap

    The key to a strong Moonlit Jungle sampler rack is:

  • separate your break, bass, and atmosphere
  • use controlled saturation instead of blanket distortion
  • keep the sub mono and disciplined
  • build phrasing and variation into the MIDI arrangement
  • automate filters, sends, and intensity to create real DnB movement
  • finish with tension-release, switch-ups, and mix clarity

If the rack can hold up across a full arrangement, it’s not just a sound design experiment anymore — it’s a real DnB weapon.

Ask GPT about this lesson

Chat with the lesson tutor, get follow-up help, or use quick actions.

Bigup 👽 Ask me anything about this lesson and I’ll answer in context.

Narration script

Show spoken script
Welcome back. In this lesson, we’re building a Moonlit Jungle style jungle sampler rack in Ableton Live 12, then we’re going to saturate it, shape it, and arrange it so it actually feels like a real drum and bass section, not just a cool loop.

The big idea here is simple: we’re not making a toy. We’re making a rack that can survive a full arrangement. That means intro tension, drop impact, call and response movement, and enough control to stay punchy, dark, and musical all the way through.

So think like a jungle producer, but also think like a performer. This rack should be able to do three jobs at once. One layer handles rhythmic motion, one layer handles weight, and one layer handles atmosphere. If one layer tries to do everything, the groove gets blurry fast.

Let’s start by creating a new MIDI track and loading an Instrument Rack. Inside that rack, make three separate chains: Break, Bass, and Atmosphere. Keeping these separate is a huge part of the sound. In advanced jungle and drum and bass, separation is what lets you saturate aggressively without turning the whole thing into mush.

For the Break chain, use Simpler in Slice mode if you want to trigger chops from MIDI, or Classic mode if you’re working with one-shots and more direct edits. For the Bass chain, use Simpler, Operator, or Wavetable depending on whether you want a pure sub, a reese, or a resampled bass stab. For Atmosphere, use Simpler for vinyl noise, rain, reverse textures, eerie hits, or distant ambience.

Now set up your macros in a way that makes the rack playable. Map something like Break Tone, Saturation, Filter Open, Sub Level, Width for the upper band only, Send to Reverb or Delay, Transient Snap, and Dirt or Crush. That gives you performance control right away. And in a jungle rack, performance control matters. You want to be able to move from tight and dry to wide and filthy without rebuilding the whole patch.

Now let’s load the break material. Pick one main break, ideally something Amen-style for identity, and one support break with a different room tone or transient feel. That contrast is what gives the rack character.

If you’re slicing the break, don’t go crazy with tiny fragments. Aim for a useful set of around 8 to 16 slices. Too many slices and the rack stops feeling musical. You want enough detail to phrase with, not so much detail that it becomes chaos.

A useful workflow is to duplicate the break lane and treat each lane differently. One lane can handle the main groove slices. Another can handle ghost hits and turnarounds. A third can be your fill and reverse edit lane. That way, the rack starts acting like a little drum performance system instead of one static loop.

A few quick sound design moves help a lot here. If the break feels too bright or brittle, low-pass it a bit, maybe somewhere around 14 to 18 kHz for a dusty top end, or even lower if you want that darker moonlit feel. Add a tiny pitch envelope if you want a little more snap on the attack. And if you hear clicks from aggressive edits, shorten the fade just enough to smooth them out.

One advanced trick: duplicate the break chain and shift the sample start by just a millisecond or two. Seriously, even a tiny offset can create a new feel. That’s the kind of detail that makes a jungle rack feel alive instead of copy-paste.

Now let’s design the bass. In this kind of tune, the bass shouldn’t fight the break. It should support it. The sub should be simple and strong. Use Operator with a sine wave, keep it mono, and give it a controlled decay if you want a pulsing pattern. Think in terms of clean fundamentals, not huge stereo nonsense.

If you want a mid-bass layer, use Wavetable or Analog with a detuned saw or a reese-style patch. Then filter the low end out of that layer so the sub can stay clear. High-pass the texture layer somewhere around 90 to 150 Hz, depending on the patch. That keeps the low end disciplined, which is exactly what you want in dark drum and bass.

Here’s the mindset shift: the sub gives you authority, but the reese or mid-bass gives you emotion and tension. The best jungle and neuro-jungle hybrids usually sound huge because the low end is controlled, not because it’s overloaded.

Now for the fun part: saturation. This is where the Moonlit Jungle character really starts to show up. The key is to saturate in stages, not all at once. Don’t just throw a heavy saturator on the master and call it a day. That usually kills the life.

On the break chain, try Drum Buss with a little Drive, maybe around 5 to 18 percent depending on the source. If the break needs more crack, lift the transient a bit. Keep Boom subtle or off unless you specifically want that extra low thump. After that, a Saturator with Soft Clip can add density without completely flattening the chop.

On the bass chain, use Saturator more carefully. A few dB of drive can make the harmonics speak on smaller systems, but you still want the bass to feel focused. If the saturation gets edgy, clean it up with EQ Eight afterward. You want body and pressure, not upper-mid pain.

On the atmosphere chain, this is where you can get a little dirtier. Light Redux can add grain. Roar can give modern distortion movement if you want a darker, more aggressive tone. Auto Filter can animate the layer and make the whole rack feel like it’s breathing in a late-night alleyway kind of way.

A solid chain order for the break is Simpler, then EQ Eight, then Drum Buss, then Saturator, and then maybe a compressor if it really needs glue. For bass, think Operator or Wavetable, then Saturator, then EQ Eight, then Utility for mono control. That’s clean, practical, and reliable.

Now we program the groove.

Use a 2-bar or 4-bar MIDI phrase. Don’t just loop one idea forever. Jungle lives in the edits. Let bar 1 state the main break phrase and a sub hit on the downbeat. Use bar 2 for ghost snares, a snatched hat, or a tiny reversed fill. Bar 3 can repeat the idea but remove a hit or two. Then bar 4 should push into the next phrase with a bass answer or a break stop.

Velocity is doing a lot of the work here. Main snares should hit harder. Ghost notes should be lower in velocity. Hat ticks should alternate levels so the groove shuffles naturally. And bass replies should feel confident without being too loud all the time.

If you’re triggering slices from MIDI, move a few hits slightly ahead or behind the grid. Don’t overdo it, but do let it breathe. Snare accents can sit just ahead. Ghost hits can lag a touch. Bass replies often feel better just behind the beat. That slight contrast between urgency and relaxation is a big part of what makes DnB feel alive.

You can also use the Groove Pool lightly if needed. A subtle groove can add human movement without softening the jungle edge. Just don’t over-shuffle it into mush.

At this point, your rack should already feel playable. But now we need to make it feel like a full section.

Map and automate your macros. Use Filter Open to brighten the break over time. Use the send macro to swell reverbs or delays before transitions. Use Dirt or Crush to increase intensity in a controlled way. And keep the sub mono at all times. Width belongs on the upper layers, never on the sub.

For arrangement, think in blocks. Start with a low-pass intro where the break is ghosted and the atmosphere carries the scene. Slowly open the filter over 8 bars. Before the drop, automate a reverb send or delay swell, then cut it right before the impact. That little moment of emptiness is powerful. Space makes the drop hit harder.

Once the drop arrives, keep it tighter and drier. Then, in the next 8-bar block, open things up a bit. Maybe add a fill, maybe increase the drive slightly, maybe let the atmosphere breathe more. The idea is to give each phrase a job. One block introduces tension, the next expands it, the next strips something away, and the next restores impact.

Use return tracks for short dub delay, dark reverb, and maybe a parallel crush send. Keep those effects controlled. In darker drum and bass, too much wash can blur the break science. You want atmosphere to frame the groove, not drown it.

Now let’s talk mix discipline, because this is where a lot of advanced racks still fall apart.

Clean up the break with EQ Eight if needed. Cut low-end rumble below 30 to 40 Hz. If the snare is harsh, tame the 3 to 6 kHz area a little. If the break sounds boxy, reduce some 250 to 500 Hz gently. On the sub, keep it mono with Utility and make sure it isn’t fighting the kick for the same fundamental.

And check the rack in mono regularly. That’s not optional. If the whole section collapses when you collapse to mono, then the stereo tricks are doing too much of the heavy lifting.

A good test is this: turn the break down by 2 dB. If the groove still works, the bass and arrangement are probably strong enough. If the sub disappears when the break comes in, then the break is masking the low end and you need to rebalance.

Now for the arrangement upgrades. Build a full phrase, not just a loop. For example, 8 bars of intro tension, 8 bars of build, 16 bars of drop with one variation every 4 bars, 8 bars of switch-up, then 8 bars of a second drop lift.

For switch-ups, you don’t always need more samples. Sometimes removing a snare for half a bar hits harder than adding another layer. You can also insert a reversed break hit at the end of a bar, swap a bass reply for a higher octave stab, or briefly open the atmosphere chain and then clamp it shut again.

This is the real pro move: subtract before you add. If the section feels busy, remove a layer. Advanced jungle often wins through contrast, not density. The silence between hits is part of the rhythm.

If you want to push the sound design further, try making a safe version and a wild version of the rack. The safe version preserves punch, clarity, and low-end discipline. The wild version exaggerates dirt, width, and motion for transitions. That gives you performance control, which is gold when you’re arranging a full tune.

You can also experiment with velocity-to-timbre mapping so harder hits open the filter or increase drive slightly. That makes repeated chops feel less static. Another great move is alternating break personalities: one dry and tight, one roomy and crushed. Swap between them every 4 or 8 bars for a subtle scene change.

And if you really want to lock in the vibe, resample your best 4-bar performance. Chop it into audio and use those moments as new fills. That’s one of the fastest ways to get authentic jungle phrasing that feels intentional instead of programmed.

So here’s the takeaway. A strong Moonlit Jungle sampler rack is built from separation, control, and movement. Separate your break, bass, and atmosphere. Saturate them in stages. Keep the sub mono and disciplined. Build phrasing into the MIDI. Automate filters, sends, and intensity to create real arrangement motion. Then finish it with switch-ups, tension-release, and clean low-end management.

If your rack can hold up across a full arrangement, then it’s no longer just a sound design experiment. It’s a real DnB weapon.

Now go build the rack, print a few versions, and don’t be afraid to get a little grimy with it.

mickeybeam

Go to drumbasscd.com for +100 drum and bass YouTube channels all in one place - tune in!

Generating PDF preview…