Monty  Boehm

Monty Boehm

1678783260

DietPi: Lightweight Justice for Your Single-board Computer!

DietPi

Lightweight justice for your single-board computer! 

optimised • simplified • for everyone 


Ready to run optimised software choices with dietpi-software 
Feature-rich configuration tool for your device with dietpi-config.


Introduction

DietPi is an extremely lightweight Debian-based OS. It is highly optimised for minimal CPU and RAM resource usage, ensuring your SBC always runs at its maximum potential.

The dietpi programs use lightweight whiptail menus. You'll spend more time enjoying DietPi and applications you need and less time staring at the command line.

Use dietpi-software to quick and easy install Ready to Run & Optimised applications for your system. DietPi will do all the necessary configurations, including starting the services. Few highlights: Desktop Environments, Remote Desktop Access, Media Systems & Players, BitTorrent & Downloading, Cloud & Backup, Gaming & Emulation, Social & Search, Camera & Surveillance, Networking, System Stats & Management, Home Automation, Hardware & Voice Projects, Webserver Stacks, DNS Servers / Pi-hole, File Servers, Printing and much more.

Use dietpi-services to control which installed software has higher or lower priority levels (nice, affinity, policy scheduler).

dietpi-update automatically checks for updates and informs you when they are available. Update instantly, without having to write a new image. DietPi automation allows you to completely automate a DietPi installation with no user input, simply by configuring dietpi.txt before powering on.

The DietPi Project Team

The full list of code contributors can be viewed here.

Contributors

Micha

Joined Q3 2017

Project lead (20/02/2019 and onwards), source code contributor, bug fixes, software improvements, DietPi forum administrator.

Daniel Knight

Project founder and previous project lead (19/02/2019 and previous), source code contributor and tester.

JohnVick

Joined 2016-06-08

DietPi forum co-administrator, management, support, testing and valuable feedback.

sal666

Joined 2017-07-26

Creator and maintainer of the first Clonezilla based installer images for x86_64 UEFI systems.

Joulinar

Joined Q4 2019

DietPi forum moderator, support, testing, bug reports + investigation and valuable feedback.

StephanStS

Joined Q4 2019

NanoPi image creator, tester and bug reports.

Petru

Joined 2020-05-31

DietPi documentation author, product manager, SEO and DietPi visibility recommendations.

ravenclaw900

Joined 2020-10-11

Source code contributor, creator of the DietPi-Dashboard and many software implementations.

yumiris

Joined 2018-04-16

Creator and maintainer of the first DietPi Hyper-V images.


Collaborations

DietPi + Amiberry

Since 2016-09-02

Joint venture to bring you the ultimate Amiga experience on your SBC, running lightweight and optimised DietPi at its core: https://github.com/MichaIng/DietPi/issues/474


Hall of Fame

K-Plan

Joined 2016-01-01

Contributions to the DietPi in general, in-depth testing, bug finding and valuable feedback, forum moderator.

ZombieVirus

Joined 2016-03-20

DietPi forum moderator and version history maintainer on forums.

Rhkean

Joined 2018-03-01

Contributions to the DietPi in general, including source code, testing, new devices, forum moderator.

Pilovali

Joined 2015-10-10

Provided dietpi.com web hosting for 1 year until April 17th 2016. Additionally: forum moderator, testing, bug reporting.

Xenfomation

Joined 2016-04-01

Contributions to the DietPi in general, including source code and VirtualBox image creation/conversion.

AWL29

Joined 2016-10-01

Created the first DietPi image for NanoPi M3/T3.


Contributing

Git coders, please use the active development branch: dev

Are you able to:

  • Provide feedback and/or test areas of DietPi, to improve the user experience?
  • Report bugs?
  • Improve/add more features to the DietPi website or documentation?
  • Compile software for our supported SBCs?
  • Contribute to DietPi with programming on GitHub?
  • Suggest new software that we can add to the dietpi-software install system?

If so, let us know! We are always looking for talented people who believe in the DietPi project, and, wish to contribute in any way you can.

Also read our contribute page for an overview of way to support DietPi.

License

DietPi Copyright (C) 2022 Contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/

Links

DietPi Source

DietPi Files

  • All files located in (recursively):
    • /var/lib/dietpi/
    • /var/tmp/dietpi/
    • /boot/dietpi/
  • /boot/dietpi.txt
  • /boot/config.txt (RPi)
  • /boot/boot.ini (Odroid)
  • All files prefixed with: dietpi-

The above GPLv2 documentation also applies to all mentioned files!

3rd Party Sources/Credits

Links to hardware and software manufacturers, sources and build instructions used in DietPi:


WebsiteDownloadsDocumentationForumBlog


Download Details:

Author: MichaIng
Source Code: https://github.com/MichaIng/DietPi 
License: GPL-2.0 license

#shell #bash #lightweight #debian #optimization #raspberrypi 

DietPi: Lightweight Justice for Your Single-board Computer!
Lawrence  Lesch

Lawrence Lesch

1675406340

Basic-pitch: A Lightweight Yet Powerful Audio-to-MIDI Converter

Basic Pitch

Basic Pitch is a Python library for Automatic Music Transcription (AMT), using lightweight neural network developed by Spotify's Audio Intelligence Lab. It's small, easy-to-use, pip install-able and npm install-able via its sibling repo.

Basic Pitch may be simple, but it's is far from "basic"! basic-pitch is efficient and easy to use, and its multipitch support, its ability to generalize across instruments, and its note accuracy competes with much larger and more resource-hungry AMT systems.

Provide a compatible audio file and basic-pitch will generate a MIDI file, complete with pitch bends. Basic pitch is instrument-agnostic and supports polyphonic instruments, so you can freely enjoy transcription of all your favorite music, no matter what instrument is used. Basic pitch works best on one instrument at a time.

Research Paper

This library was released in conjunction with Spotify's publication at ICASSP 2022. You can read more about this research in the paper, A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation.

If you use this library in academic research, consider citing it:

@inproceedings{2022_BittnerBRME_LightweightNoteTranscription_ICASSP,
  author= {Bittner, Rachel M. and Bosch, Juan Jos\'e and Rubinstein, David and Meseguer-Brocal, Gabriel and Ewert, Sebastian},
  title= {A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation},
  booktitle= {Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP)},
  address= {Singapore},
  year= 2022,
}

Note that we have improved Basic Pitch beyond what was presented in this paper. Therefore, if you use the output of Basic Pitch in academic research, we recommend that you cite the version of the code that was used.

Demo

If, for whatever reason, you're not yet completely inspired, or you're just like so totally over the general vibe and stuff, checkout our snappy demo website, basicpitch.io, to experiment with our model on whatever music audio you provide!

Installation

basic-pitch is available via PyPI. To install the current release:

pip install basic-pitch

To update Basic Pitch to the latest version, add --upgrade to the above command.

Compatible Environments:

  • MacOS, Windows and Ubuntu operating systems
  • Python versions 3.7, 3.8, 3.9

Usage

Model Prediction

Command Line Tool

This library offers a command line tool interface. A basic prediction command will generate and save a MIDI file transcription of audio at the <input-audio-path> to the <output-directory>:

basic-pitch <output-directory> <input-audio-path>

To process more than one audio file at a time:

basic-pitch <output-directory> <input-audio-path-1> <input-audio-path-2> <input-audio-path-3>

Optionally, you may append any of the following flags to your prediction command to save additional formats of the prediction output to the <output-directory>:

  • --sonify-midi to additionally save a .wav audio rendering of the MIDI file
  • --save-model-outputs to additionally save raw model outputs as an NPZ file
  • --save-note-events to additionally save the predicted note events as a CSV file

To discover more parameter control, run:

basic-pitch --help

Programmatic

predict()

Import basic-pitch into your own Python code and run the predict functions directly, providing an <input-audio-path> and returning the model's prediction results:

from basic_pitch.inference import predict
from basic_pitch import ICASSP_2022_MODEL_PATH

model_output, midi_data, note_activations = predict(<input-audio-path>)
  • <minimum-frequency> & <maximum-frequency> (floats) set the maximum and minimum allowed note frequency, in Hz, returned by the model. Pitch events with frequencies outside of this range will be excluded from the prediction results.
  • model_output is the raw model inference output
  • midi_data is the transcribed MIDI data derived from the model_output
  • note_events is a list of note events derived from the model_output

predict() in a loop

To run prediction within a loop, you'll want to load the model yourself and provide predict() with the loaded model object itself to be used for repeated prediction calls, in order to avoid redundant and sluggish model loading.

import tensorflow as tf

from basic_pitch.inference import predict
from basic_pitch import ICASSP_2022_MODEL_PATH

basic_pitch_model = tf.saved_model.load(str(ICASSP_2022_MODEL_PATH))

for x in range():
    ...
    model_output, midi_data, note_activations = predict(
        <loop-x-input-audio-path>,
        basic_pitch_model,
    )
    ...

predict_and_save()

If you would like basic-pitch orchestrate the generation and saving of our various supported output file types, you may use predict_and_save instead of using predict directly:

from basic_pitch.inference import predict_and_save

predict_and_save(
    <input-audio-path-list>,
    <output-directory>,
    <save-midi>,
    <sonify-midi>,
    <save-model-outputs>,
    <save-note-events>,
)

where:

  • <input-audio-path-list> & <output-directory>
    • directory paths for basic-pitch to read from/write to.
  • <save-midi>
    • bool to control generating and saving a MIDI file to the <output-directory>
  • <sonify-midi>
    • bool to control saving a WAV audio rendering of the MIDI file to the <output-directory>
  • <save-model-outputs>
    • bool to control saving the raw model output as a NPZ file to the <output-directory>
  • <save-note-events>
    • bool to control saving predicted note events as a CSV file <output-directory>

Model Input

Supported Audio Codecs

basic-pitch accepts all sound files that are compatible with its version of librosa, including:

  • .mp3
  • .ogg
  • .wav
  • .flac
  • .m4a

Mono Channel Audio Only

While you may use stereo audio as an input to our model, at prediction time, the channels of the input will be down-mixed to mono, and then analyzed and transcribed.

File Size/Audio Length

This model can process any size or length of audio, but processing of larger/longer audio files could be limited by your machine's available disk space. To process these files, we recommend streaming the audio of the file, processing windows of audio at a time.

Sample Rate

Input audio maybe be of any sample rate, however, all audio will be resampled to 22050 Hz before processing.

Contributing

Contributions to basic-pitch are welcomed! See CONTRIBUTING.md for details.

Download Details:

Author: Spotify
Source Code: https://github.com/spotify/basic-pitch 
License: Apache-2.0 license

#typescript #python #music #lightweight #machinelearning 

Basic-pitch: A Lightweight Yet Powerful Audio-to-MIDI Converter

Lightweight and Easy Check If The App Runs for Its First Time

palestine_first_run

Part of PalestineDevelopers

Lightweight and easy check if the app runs for its first time, apply that to custom calls.

Table Of Contents


Features

  • Check app is @ first run
  • Check custom actions is @ first call

Getting started #

To start, import package

import 'package:palestine_first_run/palestine_first_run.dart';

Usage

Ensure flutter framework is active

  • Add this to the beginning of main()
// Make Sure Framework Is Ready
WidgetsFlutterBinding.ensureInitialized();

Just as easy as this

// First time (true), then (false)
final bool isFirstRun = await PalFirstRun.isFirstRun();

And for the custom calls

// First time (true), then (false)
final bool isFirstAPICall = await PalFirstRun.isFirstRun('call_api');

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add palestine_first_run

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  palestine_first_run: ^0.0.14

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:palestine_first_run/palestine_first_run.dart'; 

example/lib/main.dart

import 'dart:developer' as developer;

import 'package:flutter/material.dart';
import 'package:palestine_first_run/palestine_first_run.dart';

void main() {
  // Make Sure Framework Is Ready
  WidgetsFlutterBinding.ensureInitialized();

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    Future.delayed(Duration.zero, () async {
      final bool isFirstRun = await PalFirstRun.isFirstRun();
      developer.log(isFirstRun.toString());

      final bool isFirstAPICall = await PalFirstRun.isFirstRun('call_api');
      developer.log(isFirstAPICall.toString());
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: const Center(
          child: Text('Running on'),
        ),
      ),
    );
  }
} 

Download Details:

Author: msayed-net

Source Code: https://github.com/msayed-net/PalestineDevelopers

#flutter #lightweight 

Lightweight and Easy Check If The App Runs for Its First Time

A Lightweight Mediator Implementation for Dart Projects

Skiff

A lightweight Mediator implementation for Dart projects.

This package allows you to write smaller, more robust and testable code by turning data access logic (or anything else you can think of) into first-class objects with sound typing.

Installing

With Dart:

 $ dart pub add skiff

With Flutter:

 $ flutter pub add skiff

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add skiff

With Flutter:

 $ flutter pub add skiff

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  skiff: ^0.3.0

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:skiff/skiff.dart'; 

example/lib/main.dart

import 'dart:async';

import 'package:skiff/skiff.dart';

class FetchCharacters implements Request<FetchCharactersResult> {}

class FetchCharactersResult {
  final List<String> characters;

  FetchCharactersResult(this.characters);
}

class Authenticate implements Request<RequestResult> {
  final String username;
  final String password;

  Authenticate(this.username, this.password);
}

void main() async {
  var mediator = Mediator();

  var query = FetchCharacters();

  var charactersHandler =
      FuncHandler<FetchCharacters, FetchCharactersResult>((r) {
    return Future.value(FetchCharactersResult([
      'Eleven',
      'Mike Wheeler',
      'Dustin Henderson',
      'Jim Hopper',
      'Jonathan Byers',
      'Murray Bauman'
    ]));
  });

  mediator.addHandler(charactersHandler);

  var characters = await mediator.dispatch(query);
  characters.characters.forEach(print);

  var command = Authenticate('alexei@starcourtmall.com', 'pa55w0rd');

  var authenticationHandler = FuncHandler<Authenticate, RequestResult>((r) {
    return Future.value(RequestResult.succeeded());
  });

  mediator.addHandler(authenticationHandler);

  var result = await mediator.dispatch<RequestResult>(command);
  print('Login ${result.isSuccessful ? 'successful' : 'failed'}');
} 

Download Details:

Author: thisdarktao

Source Code: https://github.com/thisdarktao/skiff

#dart #lightweight #android #ios 

A Lightweight Mediator Implementation for Dart Projects

Lightweight and Blazing Fast Key-value Database Written in Pure Dart

Fast, Enjoyable & Secure NoSQL Database

Hive is a lightweight and blazing fast key-value database written in pure Dart. Inspired by Bitcask.

Documentation & Samples 📖

If you need queries, multi-isolate support or links between objects check out Isar Database.

Features

  • 🚀 Cross platform: mobile, desktop, browser
  • ⚡ Great performance (see benchmark)
  • ❤️ Simple, powerful, & intuitive API
  • 🔒 Strong encryption built in
  • 🎈 NO native dependencies
  • 🔋 Batteries included

Getting Started

Check out the Quick Start documentation to get started.

Usage

You can use Hive just like a map. It is not necessary to await Futures.

var box = Hive.box('myBox');

box.put('name', 'David');

var name = box.get('name');

print('Name: $name');

BoxCollections

BoxCollections are a set of boxes which can be similarly used as normal boxes, except of that they dramatically improve speed on web. They support opening and closing all boxes of a collection at once and more efficiently store data in indexed DB on web.

Aside, they also expose Transactions which can be used to speed up tremendous numbers of database transactions on web.

On dart:io platforms, there is no performance gain by BoxCollections or Transactions. Only BoxCollections might be useful for some box hierarchy and development experience.

// Create a box collection
  final collection = await BoxCollection.open(
    'MyFirstFluffyBox', // Name of your database
    {'cats', 'dogs'}, // Names of your boxes
    path: './', // Path where to store your boxes (Only used in Flutter / Dart IO)
    key: HiveCipher(), // Key to encrypt your boxes (Only used in Flutter / Dart IO)
  );

  // Open your boxes. Optional: Give it a type.
  final catsBox = collection.openBox<Map>('cats');

  // Put something in
  await catsBox.put('fluffy', {'name': 'Fluffy', 'age': 4});
  await catsBox.put('loki', {'name': 'Loki', 'age': 2});

  // Get values of type (immutable) Map?
  final loki = await catsBox.get('loki');
  print('Loki is ${loki?['age']} years old.');

  // Returns a List of values
  final cats = await catsBox.getAll(['loki', 'fluffy']);
  print(cats);

  // Returns a List<String> of all keys
  final allCatKeys = await catsBox.getAllKeys();
  print(allCatKeys);

  // Returns a Map<String, Map> with all keys and entries
  final catMap = await catsBox.getAllValues();
  print(catMap);

  // delete one or more entries
  await catsBox.delete('loki');
  await catsBox.deleteAll(['loki', 'fluffy']);

  // ...or clear the whole box at once
  await catsBox.clear();

  // Speed up write actions with transactions
  await collection.transaction(
    () async {
      await catsBox.put('fluffy', {'name': 'Fluffy', 'age': 4});
      await catsBox.put('loki', {'name': 'Loki', 'age': 2});
      // ...
    },
    boxNames: ['cats'], // By default all boxes become blocked.
    readOnly: false,
  );

Store objects

Hive not only supports primitives, lists and maps but also any Dart object you like. You need to generate a type adapter before you can store objects.

@HiveType(typeId: 0)
class Person extends HiveObject {

  @HiveField(0)
  String name;

  @HiveField(1)
  int age;
}

Extending HiveObject is optional but it provides handy methods like save() and delete().

var box = await Hive.openBox('myBox');

var person = Person()
  ..name = 'Dave'
  ..age = 22;
box.add(person);

print(box.getAt(0)); // Dave - 22

person.age = 30;
person.save();

print(box.getAt(0)) // Dave - 30

Hive ❤️ Flutter

Hive was written with Flutter in mind. It is a perfect fit if you need a lightweight datastore for your app. After adding the required dependencies and initializing Hive, you can use Hive in your project:

import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';

class SettingsPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ValueListenableBuilder(
      valueListenable: Hive.box('settings').listenable(),
      builder: (context, box, widget) {
        return Switch(
          value: box.get('darkMode'),
          onChanged: (val) {
            box.put('darkMode', val);
          }
        );
      },
    );
  }
}

Boxes are cached and therefore fast enough to be used directly in the build() method of Flutter widgets.

Benchmark

1000 read iterations1000 write iterations
SharedPreferences is on par with Hive when it comes to read performance. SQLite performs much worse.Hive greatly outperforms SQLite and SharedPreferences when it comes to writing or deleting.

The benchmark was performed on a Oneplus 6T with Android Q. You can run the benchmark yourself.

*Take this benchmark with a grain of salt. It is very hard to compare databases objectively since they were made for different purposes.

Licence

Copyright 2019 Simon Leier

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add hive

With Flutter:

 $ flutter pub add hive

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  hive: ^2.2.3

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:hive/hive.dart'; 

example/lib/main.dart

import 'dart:io';

import 'package:hive/hive.dart';

part 'main.g.dart';

@HiveType(typeId: 1)
class Person {
  Person({required this.name, required this.age, required this.friends});

  @HiveField(0)
  String name;

  @HiveField(1)
  int age;

  @HiveField(2)
  List<String> friends;

  @override
  String toString() {
    return '$name: $age';
  }
}

void main() async {
  var path = Directory.current.path;
  Hive
    ..init(path)
    ..registerAdapter(PersonAdapter());

  var box = await Hive.openBox('testBox');

  var person = Person(
    name: 'Dave',
    age: 22,
    friends: ['Linda', 'Marc', 'Anne'],
  );

  await box.put('dave', person);

  print(box.get('dave')); // Dave: 22
} 

Download Details:

Author: hivedb

Source Code: https://github.com/hivedb/hive/tree/master/hive

#dart #lightweight 

Lightweight and Blazing Fast Key-value Database Written in Pure Dart

How to Setup Bodhi Linux 6.0 (Lightweight)

1. First go to the official page of Bodhi Linux and grab the Bodhi Linux 6.0.0 for your system architecture and create a bootable UDB Drive using Unetbotoin or dd command], and restart the system.
2. Once your system reboots, you will be presented with the Bodhi Linux boot menu.
3.  Bodhi Linux Loading.
4.  Choose your preferred language and click Continue .
5.  Enlightenment (Default) Desktop Environment.
6.  From the Bodhi Live Environment, locate and click the Install Bodhi Linux  from the Main Desktop. Next, choose your preferred language and click Continue

#linux #lightweight #lightweight bodhi linux 6.0

How to Setup Bodhi Linux 6.0 (Lightweight)