Views
No views yet
pip install transformers torch miditok1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model = AutoModelForCausalLM.from_pretrained("Ghanibhuti/Musician-Llama-3.2-1B-Instruct", trust_remote_code=True)
4tokenizer = AutoTokenizer.from_pretrained("Ghanibhuti/Musician-Llama-3.2-1B-Instruct")1from transformers import pipeline
2
3# Create text generation pipeline
4pipe = pipeline(
5 "text-generation",
6 model=model,
7 tokenizer=tokenizer,
8 device_map="auto",
9)
10
11# Your music description
12USER_INPUT = "Upbeat electronic dance music with strong bass and drum patterns"
13
14# Create chat messages
15messages = [
16 {"role": "system", "content": "You are a helpful music AI assistant specialized in MIDI token generation."},
17 {"role": "user", "content": USER_INPUT},
18]
19
20# Generate MIDI tokens
21outputs = pipe(
22 messages,
23 max_new_tokens=4096,
24 temperature=0.7,
25 top_p=0.8,
26 top_k=21,
27 repetition_penalty=1.2,
28 do_sample=True,
29)
30
31# Extract response
32assistant_response = outputs[0]["generated_text"][-1]["content"]
33tokens = assistant_response.replace(". ", "|").replace(" ", ",").replace(".", "|")
34
35print("Generated MIDI tokens:")
36print(tokens)1from miditok import Octuple, TokenizerConfig
2from pathlib import Path
3
4# Initialize MIDI tokenizer
5config = TokenizerConfig(
6 pitch_range=(21, 109),
7 num_velocities=32,
8 special_tokens=["PAD", "BOS", "EOS", "MASK"],
9 use_tempos=True,
10 use_time_signatures=True,
11 use_programs=True,
12 num_tempos=32,
13 tempo_range=(40, 250),
14)
15miditokenizer = Octuple(config)
16
17# Parse and decode tokens
18token_list = [
19 [int(x) for x in token_tuple_str.split(",")]
20 for token_tuple_str in tokens.split("|")
21 if token_tuple_str.strip()
22]
23
24# Convert to MIDI
25midi_obj = miditokenizer.decode(token_list)
26midi_obj.dump_midi("output.mid")
27
28print("✅ MIDI file saved to output.mid")| Parameter | Default | Description |
|---|---|---|
max_new_tokens | 4096 | Maximum MIDI tokens to generate |
temperature | 0.7 | Creativity level (0.1-1.0) |
top_p | 0.8 | Diversity sampling |
top_k | 21 | Top-K sampling |
repetition_penalty | 1.2 | Penalize repetition |
384,0,60,100|386,0,60,0|388,0,62,90|...1# Make sure you're using the correct repo ID
2model = AutoModelForCausalLM.from_pretrained("username/Musician-Llama-3.2-1B-Instruct")1# Use device_map for automatic GPU memory management
2model = AutoModelForCausalLM.from_pretrained(
3 "Ghanibhuti/Musician-Llama-3.2-1B-Instruct",
4 device_map="auto",
5 torch_dtype="auto",
6)1# Filter out empty tokens before decoding
2tokens = [t for t in token_list if t and len(t) == 8]1@model{musician_llama_2024,
2 title={Musician-Llama: Text-to-MIDI Music Generation},
3 author={Your Name},
4 year={2024},
5 url={https://huggingface.co/Ghanibhuti/Musician-Llama-3.2-1B-Instruct}
6}