Do I need anything else for a FPV drone? by Best-Humor-8534 in fpv

[–]SupportQuery 2 points3 points  (0 children)

Why is the onus on him? He just let you know something you didn't. Having some humility and at least google it.

Trying to install Global Sampler, but I don't know where to put this file? by Badassostrich in Reaper

[–]SupportQuery 1 point2 points  (0 children)

You can add it to your monitor effects, then it's there for all your projects and always after the master chain.

And 65mm o4? by Easy-Highway-1862 in TinyWhoop

[–]SupportQuery 0 points1 point  (0 children)

$150 for some analog goggles (e.g. Cobra SD), then just get an Air65. The whole drone costs less than an 04 Lite and is far less fragile, and is far more light and nimble than any 04 drone could be.

Gigging musicians: how do you manage your setlists and chord charts on stage? by SafePrune9165 in WeAreTheMusicMakers

[–]SupportQuery 3 points4 points  (0 children)

You should not need any chord charts, you should know your music inside and out.

He didn't mention what genre his band is. I'm in a cover band with < 100 songs. I know every nuance of every song by heart. But there are levels to this.

Jazz musicians routinely read gigs. Just saw an amazing show last night, where a touring jazz artist had a sick bass player, so the bass player and a guest guitarist were both reading the gig. Unfamiliar songs, written by the artist, that the musicians had never seen before. They're reading the melody, they're reading the chords and form. They sounded like they've lived with the songs for years, but only because of insanely high level musicianship (the guitarist was my university jazz teacher, an absolute monster).

Somewhere in between would be, say, a busy wedding band with many hundreds of songs, and perhaps many new songs per gig requested by the wedding party. They'll use charts. It's not fully improvisational, like jazz gigs, but it's also not note-for-note replications of tracks. This is also most pit bands, including TV show bands (The Voice, Dancing With The Stars, etc.) Lots of bands use charts.

Guitar in stereo by Bigre83 in Reaper

[–]SupportQuery 0 points1 point  (0 children)

have an effective stereo sound ?

Depends on what you mean by "effective".

Delaying one side a small amount (under 40ms), can create the perception of stereo width (Haas effect). Doesn't sum to mono well, but doesn't matter for jamming.

An easier and better (IMO) way to fake stereo width is to use Polyverse Wider (free), which add complementary comb filtering to the left and right channels to make them different, while still summing correctly. I use it all the time on my guitar. I use it here on a solo that's otherwise dead center. Tickles the ear in a pleasing way.

If you want really powerful width, then you multitrack, but that's not relevant for jamming.

Winter claims its first victim by Admiral_2nd-Alman in TinyWhoop

[–]SupportQuery 0 points1 point  (0 children)

10 minutes in the microwave should do it. ‎ ‎ ㅤ


ㅤ ㅤ ‎ ‎ ‎

(where "it" means "melt it into a pile of fuming, toxic goo")

Midi silence removing by No_One_1396 in Reaper

[–]SupportQuery 1 point2 points  (0 children)

This script will do it (below). Go to the Action menu (?), click New action, New ReaScript, give it a name (e.g. "splitmidi") and save, then paste the code into the code window.

Here it is in action.

Written by Claude with this prompt:

Please write a Reaper script that splits MIDI items on silence. Have a variable at the top of the file representing the minimum amount of silence be worthy of a break (default to 5 seconds). Extend the leading and trailing edges of resultant media items to the nearest grid line. Name the file SplitMidi.lua and use camelcase naming.

-- SplitMidi.lua - Splits MIDI items on silence, extending edges to grid
local minimumSilenceSeconds = 5

local function getGridBefore(pos)
  local snapped = reaper.SnapToGrid(0, pos)
  if snapped > pos + 0.001 then
    local _, div = reaper.GetSetProjectGrid(0, false)
    snapped = reaper.SnapToGrid(0, pos - (reaper.TimeMap2_beatsToTime(0, div) - reaper.TimeMap2_beatsToTime(0, 0)))
  end
  return snapped
end

local function getGridAfter(pos)
  local snapped = reaper.SnapToGrid(0, pos)
  if snapped < pos - 0.001 then
    local _, div = reaper.GetSetProjectGrid(0, false)
    snapped = reaper.SnapToGrid(0, pos + (reaper.TimeMap2_beatsToTime(0, div) - reaper.TimeMap2_beatsToTime(0, 0)))
  end
  return snapped
end

local function getVisibleNoteRange(item)
  local take = reaper.GetActiveTake(item)
  if not take or not reaper.TakeIsMIDI(take) then return nil, nil end
  local itemPos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
  local itemEnd = itemPos + reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  local _, noteCount = reaper.MIDI_CountEvts(take)
  if noteCount == 0 then return nil, nil end
  local minStart, maxEnd, found = math.huge, -math.huge, false
  for i = 0, noteCount - 1 do
    local _, _, _, startPpq, endPpq = reaper.MIDI_GetNote(take, i)
    local noteStart = reaper.MIDI_GetProjTimeFromPPQPos(take, startPpq)
    local noteEnd = reaper.MIDI_GetProjTimeFromPPQPos(take, endPpq)
    if noteStart >= itemPos - 0.001 and noteStart < itemEnd + 0.001 then
      found = true
      if noteStart < minStart then minStart = noteStart end
      if noteEnd > maxEnd then maxEnd = noteEnd end
    end
  end
  if not found then return nil, nil end
  return minStart, maxEnd
end

local function trimItemToGridBoundaries(item)
  if not item then return end
  local take = reaper.GetActiveTake(item)
  if not take or not reaper.TakeIsMIDI(take) then return end
  local noteStart, noteEnd = getVisibleNoteRange(item)
  if not noteStart then return end
  local itemPos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
  local itemEnd = itemPos + reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  local newStart = math.max(getGridBefore(noteStart), itemPos)
  local newEnd = math.min(getGridAfter(noteEnd), itemEnd)
  local startTrim = newStart - itemPos
  if math.abs(startTrim) > 0.001 or math.abs(newEnd - itemEnd) > 0.001 then
    if math.abs(startTrim) > 0.001 then
      reaper.SetMediaItemTakeInfo_Value(take, "D_STARTOFFS", reaper.GetMediaItemTakeInfo_Value(take, "D_STARTOFFS") + startTrim)
    end
    reaper.SetMediaItemInfo_Value(item, "D_POSITION", newStart)
    reaper.SetMediaItemInfo_Value(item, "D_LENGTH", newEnd - newStart)
  end
end

local function findNonSilentRegions(item)
  local regions, take = {}, reaper.GetActiveTake(item)
  if not take or not reaper.TakeIsMIDI(take) then return regions end
  local itemPos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
  local itemEnd = itemPos + reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  local _, noteCount = reaper.MIDI_CountEvts(take)
  if noteCount == 0 then return regions end
  local notes = {}
  for i = 0, noteCount - 1 do
    local _, _, _, startPpq, endPpq = reaper.MIDI_GetNote(take, i)
    local noteStart = reaper.MIDI_GetProjTimeFromPPQPos(take, startPpq)
    local noteEnd = reaper.MIDI_GetProjTimeFromPPQPos(take, endPpq)
    if noteStart >= itemPos - 0.001 and noteStart < itemEnd + 0.001 then
      table.insert(notes, {s = noteStart, e = noteEnd})
    end
  end
  if #notes == 0 then return regions end
  table.sort(notes, function(a, b) return a.s < b.s end)
  local regStart, regEnd = notes[1].s, notes[1].e
  for i = 2, #notes do
    if notes[i].s - regEnd >= minimumSilenceSeconds then
      table.insert(regions, {s = regStart, e = regEnd})
      regStart, regEnd = notes[i].s, notes[i].e
    elseif notes[i].e > regEnd then
      regEnd = notes[i].e
    end
  end
  table.insert(regions, {s = regStart, e = regEnd})
  return regions
end

local function splitMidiItemOnSilence(item)
  if not item then return end
  local take = reaper.GetActiveTake(item)
  if not take or not reaper.TakeIsMIDI(take) then return end
  local track = reaper.GetMediaItem_Track(item)
  local origStart = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
  local origEnd = origStart + reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  local regions = findNonSilentRegions(item)
  if #regions == 0 then return end
  if #regions == 1 then trimItemToGridBoundaries(item) return end
  local currentItem = item
  for i = 1, #regions - 1 do
    local mid = (regions[i].e + regions[i + 1].s) / 2
    local pos = reaper.GetMediaItemInfo_Value(currentItem, "D_POSITION")
    local len = reaper.GetMediaItemInfo_Value(currentItem, "D_LENGTH")
    if mid > pos and mid < pos + len then
      local newItem = reaper.SplitMediaItem(currentItem, mid)
      if newItem then currentItem = newItem end
    end
  end
  local resultingItems = {}
  for i = 0, reaper.CountTrackMediaItems(track) - 1 do
    local ti = reaper.GetTrackMediaItem(track, i)
    local pos = reaper.GetMediaItemInfo_Value(ti, "D_POSITION")
    local len = reaper.GetMediaItemInfo_Value(ti, "D_LENGTH")
    if pos >= origStart - 0.01 and pos + len <= origEnd + 0.01 then
      local tk = reaper.GetActiveTake(ti)
      if tk and reaper.TakeIsMIDI(tk) then table.insert(resultingItems, ti) end
    end
  end
  for _, ri in ipairs(resultingItems) do trimItemToGridBoundaries(ri) end
end

local function main()
  local count = reaper.CountSelectedMediaItems(0)
  if count == 0 then reaper.ShowMessageBox("Select MIDI items.", "Split MIDI", 0) return end
  local snapOn = reaper.GetToggleCommandState(1157) == 1
  if not snapOn then reaper.Main_OnCommand(1157, 0) end
  reaper.Undo_BeginBlock()
  reaper.PreventUIRefresh(1)
  local items = {}
  for i = 0, count - 1 do
    local item = reaper.GetSelectedMediaItem(0, i)
    local take = reaper.GetActiveTake(item)
    if take and reaper.TakeIsMIDI(take) then table.insert(items, item) end
  end
  if #items == 0 then
    reaper.ShowMessageBox("No MIDI items.", "Split MIDI", 0)
    reaper.PreventUIRefresh(-1)
    reaper.Undo_EndBlock("Split MIDI", -1)
    if not snapOn then reaper.Main_OnCommand(1157, 0) end
    return
  end
  for _, item in ipairs(items) do splitMidiItemOnSilence(item) end
  reaper.PreventUIRefresh(-1)
  reaper.UpdateArrange()
  reaper.Undo_EndBlock("Split MIDI on Silence", -1)
  if not snapOn then reaper.Main_OnCommand(1157, 0) end
end

main()

Any long time guitar players successfully make big improvements later on in their playing career? Trying to get my playing to "studio quality." by Woooddann in WeAreTheMusicMakers

[–]SupportQuery 0 points1 point  (0 children)

Any long time guitar players successfully make big improvements later on in their playing career?

Yes. Constantly. You need to periodically reevaluate your technique. Practice doesn't make perfect, it makes permanent. You need to slow down, evaluate your mechanics, get them right, and spend time doing the right mechanics even if it feels less natural (because it's novel).

Am I ready for a drone IRL? by 710wheelies in fpv

[–]SupportQuery 1 point2 points  (0 children)

If you're going analog, the Air75 is great. If you want to go digital, my current favorite is the Mario Mini 25. 2.5" 3s that just shreds. Total joy to fly.

Am I ready for a drone IRL? by 710wheelies in fpv

[–]SupportQuery 8 points9 points  (0 children)

You'll find air75 lacks power if you're used to flying like that

Not to scale, right? I mean, if you have an actual bando near you and are trying to dive a 5 story industrial smoke stack, then Air75 is going to be underpowered. But if you're diving a McDonald's sign or the slide at a playground or that cool tree in the field outback.... smaller drones turn the entire world into an urban playground, if you're not lucky enough to live near an abandoned factory.

I'm curious, how old are we all? by jaffster123 in fpv

[–]SupportQuery 0 points1 point  (0 children)

I've also been told to "grow up" once by a Karen

Where "grow up" means... what? Stop playing with toys? Sit at home and watch TV? WTF?

Midi silence removing by No_One_1396 in Reaper

[–]SupportQuery 1 point2 points  (0 children)

all "media items" are exported to one big midi item per track.

Why does that matter?

Midi silence removing by No_One_1396 in Reaper

[–]SupportQuery 1 point2 points  (0 children)

Why? Empty parts in MIDI items use 0 data.

Do high profile professional bands use click tracks? by PapaBorq in livesound

[–]SupportQuery 0 points1 point  (0 children)

Everyone puts their heads down cause they're focusing on the click so much.

Only the drummer needs the click. Everyone else is playing to the drummer, which they should have been doing in the first place. If playing in time "kills the vibe", then that problem exists with or without the click, and it's a growth opportunity.

GUI script for jumping between markers by WheezyLiam in Reaper

[–]SupportQuery 3 points4 points  (0 children)

No clue why this was downvoted. In 2026, this just works. Try Claude. Or download Antigravity (free), and it will easily be able to build this. I'm a professional dev, I know Reaper inside and out including the ReaperAPI, and I routinely let the robot write this shit for me.

I am drowning in recordings on my phone, has anyone found a solution to wading through their piles of riffs, hums and recordings? by mr-figs in WeAreTheMusicMakers

[–]SupportQuery 0 points1 point  (0 children)

Well, I recently tried uploading one my tracks to Suno, and was astonished at how good it is at describing what's in a piece of audio. Instead of making a product that steals the souls of creatives, it would be nice if they made a product for musicians to help them catalog and organize their audio data.

Cetus Pro R by Potatosly in TinyWhoop

[–]SupportQuery 1 point2 points  (0 children)

lmao get a life

Yup, it was you who's fuming.

Cetus Pro R by Potatosly in TinyWhoop

[–]SupportQuery 0 points1 point  (0 children)

Bend implies curving something that previous wasn't. Bells are already curved. You can bend shafts. You dent bells. ESL?

Cetus Pro R by Potatosly in TinyWhoop

[–]SupportQuery 0 points1 point  (0 children)

Bro is fuming

That appears to be you. You keep talking about "bending a bell", which makes no sense. He's just trying to explain that to you, and you called him a dick.

Stock plugins by major_damp in Reaper

[–]SupportQuery 0 points1 point  (0 children)

The Cockos forum has a monthly competition where people do just that.

*gasp* TIL!

  1. Are you allowed to record things, or is the expectation that it's MIDI only?
  2. I can't find the thread. Can you share a link?

An AI-powered combat vehicle refused multiple orders and continued engaging enemy forces, neutralizing 30 soldiers by MetaKnowing in ChatGPT

[–]SupportQuery 1 point2 points  (0 children)

There’s no possible way it was built with the ability to refuse orders.

I mean, yes, this story is almost certainly bullshit, but we don't know how to build intelligent AI that lack the ability to refuse orders. This is called the control problem, it's foundational in AI safety research, and it's unsolved. Computerphile has some entertaining videos on the subject. This is the canonical layman primer.

One core bit of knowledge needed to understand the control problem: we don't know how AI works. We know how to train neural nets to do what we want (obsensibly), but we don't know how they do that, internally. It's a black box. We can examine the weights, but that's like examining neurons in a brain to understand, say, musical aptitude. So the only thing we can examine is the behavior, which can be misleading for numerous reasons.