Skip to content

Releases: CasualArclamp/DecDRM

DecDRM 0.5.4 — xHE-AAC decoder cross-check (Windows portable)

Choose a tag to compare

@github-actions github-actions released this 06 Oct 12:54

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; the DAC codec's weights built in).

New in 0.5.4

The apps work exactly as in 0.5.3. Receiving and transmitting are unchanged; this release adds a way to check xHE-AAC decoding against a second decoder, in the source code.

xHE-AAC cross-check. CNR-1's xHE-AAC on 13835 kHz sounded glitchy although every audio frame arrived intact. To tell a decoder problem from a problem in the broadcast, the same frames can now go to libxaac, an independent xHE-AAC decoder:

  • audio_specific_config_from_drm (crate decdrm-codecs) converts DRM's xHE-AAC configuration (SDC entity 9) into the standard MPEG-4 one, MPS212 stereo included;
  • the xhedump example (crate decdrm-engine) writes a recording's xHE-AAC frames, FDK-AAC's output and the input for libxaac's test decoder; its documentation has the build and decode commands.

libxaac decodes CNR-1 the way FDK-AAC does, so those glitches are in the transmission, not in DecDRM.

Everything from 0.5.3 is included (audio share sliders, stations with a non-standard FAC identity, the RF monitor, DAC, the Diversity tab).

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs, MDI/RSCI) and transmitter (also as an MDI modulator)
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from 1544f3a by GitHub Actions.

SHA-256:

5ad5e39b4bcc891e9c567315ba1439f20bda8439416395c348959db42a8da080  decdrm-gui.exe
58d33a989b30bfa46abc42e2f9bd8a99b916d4dbfd4811531bb54b67a4de198e  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.5.3 — audio share sliders (Windows portable)

Choose a tag to compare

@github-actions github-actions released this 04 Oct 13:48

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; the DAC codec's weights built in).

New in 0.5.3

Choose how audio services share the capacity. With two or more audio services, the transmitter no longer has to split the capacity equally. Each audio service in the Station view now has an Audio share slider (1–99 %), with that service's stream rate shown beside it:

  • moving one slider adjusts the others; with three or more services, the others keep their proportions among themselves;
  • an audio service added after shares were set starts with an average share;
  • the shares are saved as each service's share in the station file (e.g. share = 70.0 and share = 30.0), which decdrm tx reads too;
  • if a share leaves a service too little for its codec, the check says so.

Built and tested on GitHub Actions. This is the first release built by the new release workflow. Before upload, the exes passed these checks on a clean Windows machine:

  • their versions match the release;
  • they need no C runtime DLL;
  • an HE-AAC station and a DAC station (with only the built-in weights) were transmitted and received without a concealed frame;
  • the GUI decoded a file.

Every push now runs the full test suite on Linux and Windows.

Everything from 0.5.2 is included (stations with a non-standard FAC identity, the RF monitor, DAC, the Diversity tab).

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs, MDI/RSCI) and transmitter (also as an MDI modulator)
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from e66be5e by GitHub Actions.

SHA-256:

1c2ba16fdc04329ff973fbb5a7c61acdcd1f469387b9482ee4ce8f51e09ba3cc  decdrm-gui.exe
19889d977909740a510ad65fb78025ff21de1a4b777a21d76645f0b16ad9bad8  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.5.2 — stations with a non-standard FAC identity (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 03 Oct 12:10

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; the DAC codec's weights built in).

New in 0.5.2

Stations that number every frame the same. A DRM station on 1557 kHz, heard through two KiwiSDRs in Taiwan, marks every transmission frame as the last of its super frame, instead of counting through the super frame's three frames. DecDRM went by that number:

  • it looked for the SDC in every frame, so the SDC constellation kept switching between 4-QAM and the MSC's 16-QAM;
  • it restarted the super frame at every FAC, so no MSC frame was ever decoded.

Now DecDRM notices when the frame numbers do not count, counts the frames itself and finds the start of each super frame from the SDC's checksum. The log says "the FAC identity does not count through the super frame (non-standard transmitter)". On that station: 124 MSC frames in a minute instead of 20, and the SDC is only decoded where it is.

Fewer glitches from corrupted FAC blocks. About one corrupted FAC block in 256 passes its 8-bit checksum, and DecDRM used to act on it at once; on the same station one such block claimed a 16-QAM SDC and three services. Now a FAC that changes the channel setup counts only when the next good FAC agrees, so a real reconfiguration takes effect 400 ms later.

Diversity reception. The MSC constellation no longer freezes on an old frame while nothing is being combined; it shows the cells of the KiwiSDR on display.

Everything from 0.5.1 is included (RF monitor, DAC, the Diversity tab).

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs, MDI/RSCI) and transmitter (also as an MDI modulator)
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from 986ee56.

SHA-256:

88488cc6520e9b6d70459d1375fe0d2f8289cb199780deb1364fee47ea34e5d8  decdrm-gui.exe
46581b3ad6f46036674a75d50e8a82a82580c803169c2b54761e7b28e0113eee  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.5.1 — RF monitor (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 02 Oct 13:51

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; the DAC codec's weights built in).

New in 0.5.1

RF monitor: hear the radio signal itself. A new RF monitor button beside Record… in the receiver's Audio section plays the receiver's input on the sound card as it comes in, instead of the decoded audio:

  • I/Q plays with I on the left and Q on the right; a mono signal on both sides;
  • with two KiwiSDRs (diversity reception) it plays the first one;
  • a DRM signal sounds like a steady hiss, which makes fading, interference or a neighbouring station easy to hear.

While it is on, the button is amber and Output reads RF monitor. Decoding goes on underneath, and a recording keeps the decoded audio. Click again for the decoded audio. It needs Audio on, and does nothing for MDI/RSCI input, which carries no radio signal. decdrm-gui --start --monitor starts with it on.

Everything from 0.5.0 is included (DAC as the neural codec, the Diversity tab).

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs, MDI/RSCI) and transmitter (also as an MDI modulator)
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from b1fbd87.

SHA-256:

8a4b460c7277d10bd6384843ab44a1e6521a3579c706b1f50efc38ee5242c7cf  decdrm-gui.exe
3de0af525aad2bb86c6ba66ebcee15b0d705953c6981a4275b8727e2920169bb  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.5.0 — DAC neural codec, Diversity tab (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 02 Oct 13:20

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; the DAC codec's weights built in).

New in 0.5.0

DAC replaces EnCodec as DecDRM's neural codec. DAC (the Descript Audio Codec, MIT licence) sounds much closer to the original at the same bit rate. Measured on decoded broadcast music and speech plus synthetic speech, DAC at 3 kbit/s came about as close to the original as EnCodec at 12 kbit/s, and DAC at 6 kbit/s closer than EnCodec at 24 (multi-resolution mel distance; spectral distance, cepstral distortion and SI-SDR agree). It is still a DecDRM-only extension that standard receivers and Dream ignore:

  • 1.5–24 kbit/s, 24 kHz mono, CRC-protected layers;
  • over a noisy DRM channel at 15 dB SNR it lost 1.4 % of audio frames where HE-AAC lost 37 %;
  • new error handling: codes hit by a bit-error burst are now decoded rather than concealed, which suits DAC better; super frames that arrive as garbage are still concealed.

Three things to know:

  • CPU. DAC's network is large. Decoding takes about a quarter of real time on a 16-thread desktop CPU (0.83 on a single core). An older or low-power PC may not keep up, and the audio of DAC services then stutters. Other codecs are unaffected.
  • Delay. The transmitter adds 107 ms, the receiver 131 ms.
  • Old EnCodec services. EnCodec services sent by DecDRM 0.4.6 and earlier are recognised but no longer decoded. In station files, codec = "encodec" becomes codec = "dac".

Because the DAC weights (299 MB) are built in, the executables are larger than before: about 320 MB each.

Diversity tab: how two KiwiSDRs are combined. While diversity reception runs, a new Diversity tab among the plots shows:

  • each KiwiSDR's share of the combining weight;
  • the SNRs and the combined SNR with its gain over the better KiwiSDR;
  • per carrier, where each KiwiSDR fades and the other carries the signal;
  • the last two minutes frame by frame;
  • the constellations before and after combining.

Everything from 0.4.6 is included (MDI/RSCI input, the modulator, RCI remote control).

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs, MDI/RSCI) and transmitter (also as an MDI modulator)
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from f5fd4b0.

SHA-256:

a5a7a060a30aaca00660dd644fc2f02914395cd75bab66ccbed82774dc3c13b8  decdrm-gui.exe
bb22f828b141386f00034ccb9aaf1d960cd27c840c6f3643f42cc7ec831a9e1d  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.4.6 — MDI/RSCI input, modulator, RCI remote control (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 02 Oct 07:23

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; EnCodec weights built in).

New in 0.4.6

MDI and RSCI input. The receiver decodes a DRM multiplex that comes over the network or from a recording instead of over the air: MDI (ETSI TS 102 820) from a content server, or RSCI (TS 102 349) from a receiver, both in DCP packets (TS 102 821). Choose MDI/RSCI as the source and enter where the packets come to, in Dream's syntax:

  • 8000, a UDP port;
  • 239.1.2.3:8000, a multicast group;
  • 192.168.1.5:239.1.2.3:8000, the group joined on one interface;
  • 10.0.0.9:192.168.1.5:239.1.2.3:8000, from one sender only.

Recordings open with Open…: Dream's .rsA … .rsZ and .ff files, raw AF or PFT packets, and pcap or pcapng captures from Wireshark or tcpdump. Fragmented packets (PFT) are put back together; with Reed–Solomon protection, packets that lost a fragment are rebuilt.

With RSCI, the remote receiver's status shows too:

  • MER, WMER, Doppler, delay, signal strength, frequency and the receiver's name in the status strip;
  • its spectrum on the spectrum and waterfall plots, its impulse response on the impulse response plot.

Enter the receiver's RCI address in RCI to: the frequency box then retunes it, and choosing a service selects it there too.

Modulator. With an [mdi] section in the station file, the transmitter sends the multiplex a content server delivers (Dream --mdiout, a commercial one, or a recording) instead of its own services:

[mdi]
input = "8000"   # a UDP port, group:port, interface:group:port, or a recording

The channel (mode, bandwidth, modulations, interleaving, protection) comes from the MDI and follows its changes. Lost, late or damaged frames are filled in, so the signal never stops. With a sound card, a reserve of frames rides out network jitter. The Transmitter tab has a Modulator card, and decdrm tx prints the same status.

Remote control (RCI). The ⚙ menu at the end of the source bar sets a UDP port for RCI commands, as Dream sends them: cfre retunes a KiwiSDR (or an RSCI receiver), cser selects a service.

MDI and RSCI were tested with packets DecDRM makes itself, in every format above; not yet with Dream or other equipment, so reports are welcome.

Windows Firewall may ask the first time DecDRM listens on a port for MDI, RSCI or RCI; allow it for the networks the packets come from.

Everything from 0.4.5 is included.

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs, MDI/RSCI) and transmitter (also as an MDI modulator)
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx ([mdi] for the modulator), decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from a2fa611.

SHA-256:

b5cd78fc7d0a724d8bbcf09a5ae1df50368f8b2c3b993c986ab694a5aa6a9ea4  decdrm-gui.exe
642e1319b610f20a9d5b9e5a82d167ecb37ac31473fdc1457924cdc4c5c00e5c  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.4.5 — diversity reception, live Journaline updates, audio recording (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 02 Oct 04:30

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; EnCodec weights built in).

New in 0.4.5

Audio recording (#2). Record… under the volume slider saves the audio you hear until Stop recording:

  • a WAV file, or FLAC (smaller, also lossless);
  • the audio as decoded: the station's sample rate and channels, 16-bit, whatever the volume;
  • the time and the file show while it records; afterwards Saved … in …, and Show opens the folder.

A change of the audio format (another service) carries on in name-2.wav. The file is completed every 5 seconds, so a crash loses at most the last few. Timed recordings: decdrm-gui --start --record show.wav --exit-after 3600.

Journaline pages update while on the air (#1). While transmitting, DecDRM loads the Journaline page file again a second or two after you save it:

  • new and changed pages go out first, with the next revision, so receivers show them at once;
  • pages you delete stop;
  • a file with a mistake changes nothing on the air, and the messages say what is wrong.

The Transmitter tab shows the pages and updates, with an Update button that loads the file at once.

Diversity reception with two KiwiSDRs. Enter a second KiwiSDR in the 2nd KiwiSDR field, or right-click one in Find…. DecDRM receives the station through both and combines them before decoding, weighted by each one's SNR, so when one fades the other usually carries the signal. The Kiwis' different network delays do not matter: frames are matched by their content. On the air (CNR1 on 6030 kHz through Kiwis in Mishima and Osaka): 140 of 145 frames decoded and no audio concealed; one Kiwi alone a minute earlier: 110 of 132 and 20 audio frames concealed. Command line: decdrm rx --kiwi A --kiwi2 B --freq KHZ.

Schedule. EiBi's winter-only, summer-only and inactive entries and its day forms (1st Saturday, last Sunday, a single date) are read correctly, so stations that are off the air no longer show as on the air.

Everything from 0.4.4 is included.

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs) and transmitter
decdrm.exe Command line: decdrm rx (also --kiwi, --kiwi2), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from 3f6dc1e.

SHA-256:

316a8b4f83e5eaafd930ee3d335b9c8a61ab1647f2633868068b434741c08609  decdrm-gui.exe
3ca31c5232e215af8cbabf79c0af099bb7b1e8afb28434d6fb12ed00b0a1b161  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.4.4 — plots at 60 Hz (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 01 Oct 11:44

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; EnCodec weights built in).

New in 0.4.4

Plots at 60 Hz. While receiving, the GUI redraws 60 times a second (it was 10), and the plots follow the signal as fast as it changes:

  • Fading, channel, impulse response, SNR per carrier: with every OFDM symbol (37.5 a second in modes A/B, 50 in C, 60 in D).
  • Constellations: the latest frame's worth of points, moving symbol by symbol.
  • Delay–Doppler: made anew with every new symbol.
  • Spectrum and waterfall: with every FFT, about 23 a second.

Faster scrolling. The waterfall and the fading map show a fixed 600 rows and move down a row per update, so they scroll as fast as they update. The waterfall holds about 26 s on screen and scrolls 2.3× faster than before; the fading map holds 16 s (mode B) and scrolls 3.75× faster. Every FFT reaches the waterfall now; before, only about half did.

The whole program uses about 7–16 % of one CPU core while receiving, depending on what it decodes.

Everything from 0.4.3 is included: KiwiSDR retuning while connected, the MPEG Surround mode in the service tag, and KCBS shown as EVS (recognised, not decoded).

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs) and transmitter
decdrm.exe Command line: decdrm rx (also --kiwi), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from bdefe76.

SHA-256:

353346128ee265a84efd42417b58933f860871e94dbdeeaffb9090c0c0ee38dd  decdrm-gui.exe
9877fc96b16feaee8e8fcf37ea9eae031ac8950ff699de59f9f572b432ce57b8  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.4.3 — EVS decoder removed (Windows portable)

Choose a tag to compare

@CasualArclamp CasualArclamp released this 01 Oct 10:27

Portable Windows executables for 64-bit Windows 10/11, nothing to install (static C runtime; EnCodec weights built in).

New in 0.4.3

  • No EVS decoder. The optional build of the 3GPP EVS reference decoder is gone, so DecDRM's repository and releases can be public. Korean Central Broadcasting (6140 kHz) is still recognised within a second and shown as an EVS 13.2 audio service, marked no decoder and likely encrypted; its data groups are captured like any other data. Its audio could not be made intelligible anyway: the station's EVS frames are nonstandard, most likely selectively encrypted.

Everything from 0.4.2 is included:

  • Retune a KiwiSDR while connected: type a new frequency and press Enter, or drag the frequency box.
  • The MPEG Surround mode in the service tag.

Releases 0.2.0–0.4.2 were withdrawn because they contained the EVS decoder.

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, KiwiSDRs) and transmitter
decdrm.exe Command line: decdrm rx (also --kiwi), decdrm tx, decdrm schedule, decdrm devices, decdrm models

Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from 2f16082.

SHA-256:

ee61ce8d46d95f8186ddce16c76d6a8aa44e3fac7554d49078436b3ee311b5f4  decdrm-gui.exe
f337b82746978065f5a0d3558a5a42a8ef72ebf92dafff6f2628f912d079ff15  decdrm.exe

🤖 Generated with Claude Code

DecDRM 0.1.0 — Windows portable

Choose a tag to compare

@CasualArclamp CasualArclamp released this 30 Sep 13:41

Portable Windows executables for 64-bit Windows 10/11. Nothing to install: the C runtime is linked statically (no Visual C++ redistributable needed) and the experimental EnCodec codec has its weights built in.

File What
decdrm-gui.exe Desktop app: receiver (files, sound cards, virtual cables) and transmitter
decdrm.exe Command line: decdrm rx, decdrm tx, decdrm devices, decdrm models

Settings are kept per user as usual; received data goes to the data directory you choose. Windows SmartScreen may warn on first start because the files are unsigned ("More info" → "Run anyway").

Built from 04bfbc6 with scripts/build-portable.ps1.

SHA-256:

441e918c68f6746d4b93d8b1b9a1c50da6707d55c659857ca24c39d0b785d0b3  decdrm-gui.exe
c27e8ea9c3460abbdf1dea84fc45831f26f773db3ccedc4dd81da0a3b70821ef  decdrm.exe

🤖 Generated with Claude Code