---
# System prepended metadata

title: Orchestrion

---

{%hackmd @themes/dracula %}

This design doc is subject to change and is a WIP.

## Overview

**AIM** To make a digital orchestrion that you can add/remove instruments to play from through the use of modules.

Orchestrions are instruments that play music that sound like orchestras or bands. Like a one-man band.

It's functionally similar to the [*HIT IT JOE*](https://forum.ss13.co/showthread.php?tid=16593) idea *KikiMofo* proposed, but fully automatic. Though, visually, it won't be as grand as a Fotoplayer.

<iframe width="560" height="315" src="https://www.youtube.com/embed/kWVFEVWJMz8?si=QEJZertzuEbQt2sz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## Context (Problems)

### Moving Multiple `Player Pianos` is Cumbersome

Usually I have several (5-10) pianos for a song. These piano sets usually stay where I built them, unless I spend time stacking and moving pianos with mechcomp teleporters.

While people using the `Old Piano` can just pull it along and play an equivalent song with just one object.

### No Unified Way of Playing Multiple Instruments Automatically and Reliably

#### Mechcomp

While you *can* have `Instrument Player` play instruments, it's not particularly easy to set up nor is it as flexible as the system the `Player Piano` uses.

Might not sync well to the `Player Piano` in some situations? I haven't attempted to.

#### Manual Instruments with Macros

I don't know much about using instruments with macros, since I don't use them.

You'd probably have to form a band with multiple people to have multiple instruments playing. Unless macros could quickly switch between instrument windows?

Syncing between players, with some having a high ping, may be an issue?

### Issues with Insturment Macros

These are secondhand accounts.

- Not playing well when there's a high ping.
- May lose focus of the instrument window while playing, causing the player's mob to move randomly.

## Goals

- Compact multiple `Player Pianos` into one single object
- Have the ability to play multiple instruments

## Non-Goals

WIP

## Milestones

- Functional GUI
- 1:1 or greater parity with `Player Pianos`
- Addition of a `Drum Kit` module, with accompanying audio files

## Existing Solutions

- MechComp instruments
- Manual insturments (with or without macros)
- Player Piano

## Proposed Solution

I will use the `Player Piano` as a base to build off of, keeping most of the backend while reworking the frontend.

Sprites are not final.

### Modules

- Adds functionality to the devices below.
- Contains the necessary hardware and software for them to play sounds.
- Each module is equivalent to one `Player Piano`.
- Can be used to add other instruments sounds, I plan on doing a `Drum Kit` module.
- Might be similar in desgin to PDA carts, but without the artwork since I don't know if I can draw the artwork
- Each module costs 2 mats:
    - 0.8 Sturdy Metal 
    - 0.6 Conductor
    - 0.6 Crystal

### Orchestrion

<img src="https://i.imgur.com/SVe9MjR.png" alt="Orchestrion Image" style="width:400px;"/>

- A base object to hold modules.
- Click on it with a module to add it and use a crowbar to remove it.
- Potentially allow specific module removal based on where the user clicked on the sprite or have it be done in it's GUI.
- Holds up to 16 modules.
- A large object like the `Player Piano`.
- Removes cross-object linking, instead relying on MechComp to start multiple Orchestrions at the same time if the player wants to.
- Costs 3 mats:
    - 1.6 Sturdy Metal 
    - 0.7 Conductor
    - 0.7 Crystal

### Mini Orchestrion

<img src="https://i.imgur.com/mBwFpKK.png" alt="Mini Orchestrion Image" style="width:400px;"/>

- Like the Orchestrion, but smaller and portable.
- Holds up to 8 modules.
- Either the size would be bulky or normal.
- Costs 2.5 mats:
    - 1.5 Sturdy Metal 
    - 0.5 High Energy Conductor
    - 0.5 Crystal

### Both

- Can change the color with paint cans.
- Maybe change the GUI colors?
- Would be subtyped from a core type, which holds logic shared between the Orchestrion types.

## Alternative Solutions

- Add modules to the player piano.
- Allow the player piano to play multiple concurrent notes at once.

## Remarks

I'm asking before I commit to making it. Better to stop at the idea stage than when it's already made.

I'm not really a spriter, these are probably the first sprites I ever made. I've yet to work on the in-hand sprite for the Mini Orchestrion.

I think I can code decently?

I can get more audio samples for various instruments from the **GeneralUser GS** SoundFont file I have.

There's a [thread](https://forum.ss13.co/showthread.php?tid=21936) I made on the forums that had an earlier version of this doc. *Dhaidburt* and *valtsu0* provided their opinions, which I used to change the doc. Though I feel that lowering the module cost to 1 mat might break balance since `Player Pianos` cost 2 mats. 